fiscalapi
Version:
SDK de Node.js para FiscalAPI
63 lines • 9.3 kB
JavaScript
import { FiscalapiHttpClientFactory } from '../http/fiscalapi-http-client-factory';
import { ApiKeyService } from './api-key-service';
import { CatalogService } from './catalog-service';
import { InvoiceService } from './invoice-service';
import { PersonService } from './person-service';
import { ProductService } from './product-service';
import { TaxFileService } from './tax-file-service';
/**
* Cliente principal para FiscalAPI
*/
export class FiscalapiClient {
/**
* Crea una nueva instancia del cliente de FiscalAPI
* @param {FiscalapiSettings} settings - Configuración
* @private
*/
constructor(settings) {
// Crea el cliente HTTP
const httpClient = FiscalapiHttpClientFactory.create(settings);
const apiVersion = settings.apiVersion || 'v4';
// Inicializa los servicios
this.invoices = new InvoiceService(httpClient, apiVersion);
this.products = new ProductService(httpClient, apiVersion);
this.persons = new PersonService(httpClient, apiVersion);
this.apiKeys = new ApiKeyService(httpClient, apiVersion);
this.catalogs = new CatalogService(httpClient, apiVersion);
this.taxFiles = new TaxFileService(httpClient, apiVersion);
}
/**
* Crea una nueva instancia del cliente de FiscalAPI
* @param {FiscalapiSettings} settings - Configuración
* @returns {IFiscalapiClient} Instancia del cliente de FiscalAPI
*/
static create(settings) {
if (!settings) {
throw new Error('La configuración no puede ser nula o indefinida');
}
// Valida la configuración
FiscalapiClient.validateSettings(settings);
// Establece valores predeterminados para configuraciones opcionales
settings.apiVersion = settings.apiVersion || 'v4';
settings.timeZone = settings.timeZone || 'America/Mexico_City';
settings.debug = settings.debug || false;
return new FiscalapiClient(settings);
}
/**
* Valida la configuración
* @param {FiscalapiSettings} settings - Configuración
* @private
*/
static validateSettings(settings) {
if (!settings.apiUrl) {
throw new Error('apiUrl es requerido');
}
if (!settings.apiKey) {
throw new Error('apiKey es requerido');
}
if (!settings.tenant) {
throw new Error('tenant es requerido');
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9maXNjYWxhcGktY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUErQjFCOzs7O09BSUc7SUFDSCxZQUFvQixRQUEyQjtRQUM3Qyx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBRS9DLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBMkI7UUFDdkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNDLG9FQUFvRTtRQUNwRSxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQztRQUMvRCxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1FBRXpDLE9BQU8sSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBMkI7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gIElGaXNjYWxhcGlDbGllbnQsXG4gIElJbnZvaWNlU2VydmljZSwgXG4gIElQcm9kdWN0U2VydmljZSwgXG4gIElQZXJzb25TZXJ2aWNlLCBcbiAgSUFwaUtleVNlcnZpY2UsIFxuICBJQ2F0YWxvZ1NlcnZpY2UsIFxuICBJVGF4RmlsZVNlcnZpY2UgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBGaXNjYWxhcGlTZXR0aW5ncyB9IGZyb20gJy4uL2NvbW1vbi9maXNjYWxhcGktc2V0dGluZ3MnO1xuaW1wb3J0IHsgRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC1mYWN0b3J5JztcbmltcG9ydCB7IEFwaUtleVNlcnZpY2UgfSBmcm9tICcuL2FwaS1rZXktc2VydmljZSc7XG5pbXBvcnQgeyBDYXRhbG9nU2VydmljZSB9IGZyb20gJy4vY2F0YWxvZy1zZXJ2aWNlJztcbmltcG9ydCB7IEludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi9pbnZvaWNlLXNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc29uU2VydmljZSB9IGZyb20gJy4vcGVyc29uLXNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3Qtc2VydmljZSc7XG5pbXBvcnQgeyBUYXhGaWxlU2VydmljZSB9IGZyb20gJy4vdGF4LWZpbGUtc2VydmljZSc7XG5cbi8qKlxuICogQ2xpZW50ZSBwcmluY2lwYWwgcGFyYSBGaXNjYWxBUElcbiAqL1xuZXhwb3J0IGNsYXNzIEZpc2NhbGFwaUNsaWVudCBpbXBsZW1lbnRzIElGaXNjYWxhcGlDbGllbnQge1xuICAvKipcbiAgICogU2VydmljaW8gZGUgZmFjdHVyYXNcbiAgICovXG4gIHJlYWRvbmx5IGludm9pY2VzOiBJSW52b2ljZVNlcnZpY2U7XG4gIFxuICAvKipcbiAgICogU2VydmljaW8gZGUgcHJvZHVjdG9zXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0czogSVByb2R1Y3RTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIHBlcnNvbmFzXG4gICAqL1xuICByZWFkb25seSBwZXJzb25zOiBJUGVyc29uU2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjbGF2ZXMgZGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlLZXlzOiBJQXBpS2V5U2VydmljZTtcbiAgXG4gIC8qKlxuICAgKiBTZXJ2aWNpbyBkZSBjYXTDoWxvZ29zXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nczogSUNhdGFsb2dTZXJ2aWNlO1xuICBcbiAgLyoqXG4gICAqIFNlcnZpY2lvIGRlIGFyY2hpdm9zIGZpc2NhbGVzXG4gICAqL1xuICByZWFkb25seSB0YXhGaWxlczogSVRheEZpbGVTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKSB7XG4gICAgLy8gQ3JlYSBlbCBjbGllbnRlIEhUVFBcbiAgICBjb25zdCBodHRwQ2xpZW50ID0gRmlzY2FsYXBpSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlKHNldHRpbmdzKTtcbiAgICBjb25zdCBhcGlWZXJzaW9uID0gc2V0dGluZ3MuYXBpVmVyc2lvbiB8fCAndjQnO1xuICAgIFxuICAgIC8vIEluaWNpYWxpemEgbG9zIHNlcnZpY2lvc1xuICAgIHRoaXMuaW52b2ljZXMgPSBuZXcgSW52b2ljZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gICAgdGhpcy5wcm9kdWN0cyA9IG5ldyBQcm9kdWN0U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLnBlcnNvbnMgPSBuZXcgUGVyc29uU2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmFwaUtleXMgPSBuZXcgQXBpS2V5U2VydmljZShodHRwQ2xpZW50LCBhcGlWZXJzaW9uKTtcbiAgICB0aGlzLmNhdGFsb2dzID0gbmV3IENhdGFsb2dTZXJ2aWNlKGh0dHBDbGllbnQsIGFwaVZlcnNpb24pO1xuICAgIHRoaXMudGF4RmlsZXMgPSBuZXcgVGF4RmlsZVNlcnZpY2UoaHR0cENsaWVudCwgYXBpVmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1bmEgbnVldmEgaW5zdGFuY2lhIGRlbCBjbGllbnRlIGRlIEZpc2NhbEFQSVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuXG4gICAqIEByZXR1cm5zIHtJRmlzY2FsYXBpQ2xpZW50fSBJbnN0YW5jaWEgZGVsIGNsaWVudGUgZGUgRmlzY2FsQVBJXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncyk6IElGaXNjYWxhcGlDbGllbnQge1xuICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGEgY29uZmlndXJhY2nDs24gbm8gcHVlZGUgc2VyIG51bGEgbyBpbmRlZmluaWRhJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZhbGlkYSBsYSBjb25maWd1cmFjacOzblxuICAgIEZpc2NhbGFwaUNsaWVudC52YWxpZGF0ZVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICBcbiAgICAvLyBFc3RhYmxlY2UgdmFsb3JlcyBwcmVkZXRlcm1pbmFkb3MgcGFyYSBjb25maWd1cmFjaW9uZXMgb3BjaW9uYWxlc1xuICAgIHNldHRpbmdzLmFwaVZlcnNpb24gPSBzZXR0aW5ncy5hcGlWZXJzaW9uIHx8ICd2NCc7XG4gICAgc2V0dGluZ3MudGltZVpvbmUgPSBzZXR0aW5ncy50aW1lWm9uZSB8fCAnQW1lcmljYS9NZXhpY29fQ2l0eSc7XG4gICAgc2V0dGluZ3MuZGVidWcgPSBzZXR0aW5ncy5kZWJ1ZyB8fCBmYWxzZTtcbiAgICBcbiAgICByZXR1cm4gbmV3IEZpc2NhbGFwaUNsaWVudChzZXR0aW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhIGxhIGNvbmZpZ3VyYWNpw7NuXG4gICAqIEBwYXJhbSB7RmlzY2FsYXBpU2V0dGluZ3N9IHNldHRpbmdzIC0gQ29uZmlndXJhY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlU2V0dGluZ3Moc2V0dGluZ3M6IEZpc2NhbGFwaVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFzZXR0aW5ncy5hcGlVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXBpVXJsIGVzIHJlcXVlcmlkbycpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXNldHRpbmdzLmFwaUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcGlLZXkgZXMgcmVxdWVyaWRvJyk7XG4gICAgfVxuICAgIFxuICAgIGlmICghc2V0dGluZ3MudGVuYW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbmFudCBlcyByZXF1ZXJpZG8nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==