@visionfi/desktop-sdk
Version:
Desktop SDK for VisionFI Cloud Run services with Azure AD authentication
103 lines (102 loc) • 3.31 kB
JavaScript
/**
* Package Client - handles package-related operations in Desktop SDK
* Copyright (c) 2024-2025 VisionFI. All Rights Reserved.
*/
import { VisionFiError } from '@visionfi/core';
import { DocumentClient } from './DocumentClient.js';
import { ProcessingClient } from './ProcessingClient.js';
export class PackageClient {
apiClient;
documents;
processing;
constructor(apiClient) {
this.apiClient = apiClient;
this.documents = new DocumentClient(apiClient);
this.processing = new ProcessingClient(apiClient);
}
/**
* Create a new package
*/
async create(options) {
try {
const response = await this.apiClient.post('/operations/packages', options);
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to create package');
}
}
/**
* List packages with optional filters
*/
async list(options) {
try {
const response = await this.apiClient.get('/operations/packages', { params: options });
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to list packages');
}
}
/**
* Get package details
*/
async get(packageId) {
try {
const response = await this.apiClient.get(`/operations/packages/${packageId}`);
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to get package');
}
}
/**
* Get package audit history
*/
async getAuditHistory(packageId, limit) {
try {
const params = limit ? { limit } : {};
const response = await this.apiClient.get(`/operations/packages/${packageId}/audit`, { params });
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to get package audit history');
}
}
/**
* Add external references to a package
*/
async addExternalReferences(packageId, options) {
try {
const response = await this.apiClient.post(`/operations/packages/${packageId}/external-references`, options);
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to add external references');
}
}
/**
* Remove external references from a package
*/
async removeExternalReferences(packageId, options) {
try {
const response = await this.apiClient.delete(`/operations/packages/${packageId}/external-references`, { data: options });
return response.data;
}
catch (error) {
throw this.handleError(error, 'Failed to remove external references');
}
}
/**
* Handle errors consistently
*/
handleError(error, defaultMessage) {
if (error instanceof VisionFiError) {
return error;
}
const message = error.response?.data?.message || error.message || defaultMessage;
const statusCode = error.response?.status;
const code = error.response?.data?.code || 'unknown_error';
return new VisionFiError(message, statusCode, code);
}
}