Classes¶
Detailed documentation for all classes in the Verdikta Common library.
ManifestParser¶
The ManifestParser class handles parsing and processing of Verdikta manifest files, including multi-CID scenarios and complex content combination.
Constructor¶
const { ManifestParser } = require('@verdikta/common');
const parser = new ManifestParser(ipfsClient, logger);
Parameters: - ipfsClient (IPFSClient): Configured IPFS client instance - logger (Logger): Logger instance for debugging
Methods¶
parse(extractedPath)¶
Parse a single manifest from an extracted archive directory.
Parameters: - extractedPath (string): Path to extracted archive directory
Returns: Promise
Throws: ValidationError, ArchiveError
parseMultipleManifests(extractedPaths, cidOrder)¶
Parse multiple manifests and combine them into a single query.
const result = await parser.parseMultipleManifests(
['./archive1', './archive2'],
['primary', 'rebuttal']
);
Parameters: - extractedPaths (string[]): Array of paths to extracted archives - cidOrder (string[]): Array of CID identifiers in processing order
Returns: Promise
Throws: ValidationError, ArchiveError
constructCombinedQuery(primaryManifest, bCIDManifests, addendumString?)¶
Construct a combined query from multiple manifests with optional addendum.
const query = await parser.constructCombinedQuery(
primaryManifest,
bCIDManifests,
'Current market data: ETH = $2000'
);
Parameters: - primaryManifest (Object): The primary manifest object - bCIDManifests (Object[]): Array of additional manifest objects - addendumString (string, optional): Real-time data to append
Returns: Promise
IPFSClient¶
The IPFSClient class provides robust IPFS connectivity with retry logic, multiple gateways, and error handling.
Constructor¶
const { IPFSClient } = require('@verdikta/common');
const ipfsClient = new IPFSClient(config, logger);
Parameters: - config (Object): IPFS configuration object - logger (Logger): Logger instance
Methods¶
fetchFromIPFS(cid)¶
Fetch content from IPFS with automatic retry and gateway fallback.
Parameters: - cid (string): IPFS Content Identifier
Returns: Promise
Throws: IPFSError, NetworkError
uploadToIPFS(data, filename?)¶
Upload content to IPFS pinning service.
Parameters: - data (Buffer|string): Content to upload - filename (string, optional): Filename for the upload
Returns: Promise
Throws: IPFSError, NetworkError
validateCID(cid)¶
Validate a Content Identifier format.
Parameters: - cid (string): CID to validate
Returns: boolean
ArchiveService¶
The ArchiveService class handles archive operations including fetching from IPFS and extraction to the filesystem.
Constructor¶
const { ArchiveService } = require('@verdikta/common');
const archiveService = new ArchiveService(ipfsClient, logger, config);
Parameters: - ipfsClient (IPFSClient): IPFS client instance - logger (Logger): Logger instance - config (Object): Configuration object
Methods¶
getArchive(cid)¶
Fetch an archive from IPFS or test fixtures.
Parameters: - cid (string): Content Identifier for the archive
Returns: Promise
Throws: IPFSError, ArchiveError
extractArchive(archiveData, extractionPath)¶
Extract an archive to the filesystem.
Parameters: - archiveData (Buffer): Raw archive data - extractionPath (string): Directory to extract to
Returns: Promise
Throws: ArchiveError
detectArchiveFormat(archiveData)¶
Detect the format of an archive from its data.
const format = archiveService.detectArchiveFormat(archiveData);
// Returns: 'zip', 'tar', 'tar.gz', etc.
Parameters: - archiveData (Buffer): Raw archive data
Returns: string - Archive format
Logger¶
Configurable logging system built on Winston with support for console and file output.
Constructor¶
Parameters: - config (Object): Logging configuration - level (string): Log level ('debug', 'info', 'warn', 'error') - console (boolean): Enable console output - file (boolean): Enable file output - filename (string, optional): Log file path
Methods¶
info(message, meta?)¶
Log an info-level message.
Parameters: - message (string): Log message - meta (Object, optional): Additional metadata
debug(message, meta?)¶
Log a debug-level message.
Parameters: - message (string): Log message - meta (Object, optional): Additional metadata
warn(message, meta?)¶
Log a warning-level message.
Parameters: - message (string): Log message - meta (Object, optional): Additional metadata
error(message, meta?)¶
Log an error-level message.
Parameters: - message (string): Log message - meta (Object, optional): Additional metadata
setLevel(level)¶
Change the logging level dynamically.
Parameters: - level (string): New log level
Usage Patterns¶
Basic Instantiation¶
const { createClient } = require('@verdikta/common');
// Get all classes via factory
const { manifestParser, ipfsClient, archiveService, logger } = createClient();
// Or instantiate individually
const { IPFSClient, Logger, ManifestParser } = require('@verdikta/common');
const logger = new Logger({ level: 'info' });
const ipfsClient = new IPFSClient(ipfsConfig, logger);
const manifestParser = new ManifestParser(ipfsClient, logger);
Error Handling¶
All classes follow consistent error handling patterns:
try {
const result = await manifestParser.parse('./archive');
} catch (error) {
if (error instanceof ValidationError) {
logger.error('Validation failed', { details: error.details });
} else if (error instanceof ArchiveError) {
logger.error('Archive processing failed', { error: error.message });
} else {
logger.error('Unexpected error', { error: error.message });
throw error;
}
}
Configuration¶
Each class accepts configuration in its constructor: