amocrm-client
Version:
JS Library for AmoCRM
52 lines • 2.43 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Client = void 0;
require("reflect-metadata");
const EventEmitter_1 = require("./common/EventEmitter");
const Connection_1 = require("./common/Connection");
const Environment_1 = require("./common/Environment");
const ClientRequest_1 = require("./common/ClientRequest");
const Auth_1 = require("./common/Auth");
const Token_1 = require("./common/Token");
const CompanyFactory_1 = require("./api/factories/CompanyFactory");
const ContactFactory_1 = require("./api/factories/ContactFactory");
const LeadFactory_1 = require("./api/factories/LeadFactory");
const AccountFactory_1 = require("./api/factories/AccountFactory");
const UserFactory_1 = require("./api/factories/UserFactory");
/**
* Основной класс библиотеки
* */
class Client extends EventEmitter_1.EventEmitter {
constructor(options) {
super();
if (!options) {
throw new Error('NO_OPTIONS');
}
this.environment = new Environment_1.Environment(options);
this.token = new Token_1.Token(this.environment);
this.auth = new Auth_1.Auth(this.environment, this.token);
this.connection = new Connection_1.Connection(this.environment, this.token, this.auth);
this.request = new ClientRequest_1.ClientRequest(this.connection);
this.account = new AccountFactory_1.AccountFactory(this.request);
this.users = new UserFactory_1.UserFactory(this.request);
this.User = this.assignEntity(this.users);
this.leads = new LeadFactory_1.LeadFactory(this.request);
this.Lead = this.assignEntity(this.leads);
this.contacts = new ContactFactory_1.ContactFactory(this.request);
this.Contact = this.assignEntity(this.contacts);
this.companies = new CompanyFactory_1.CompanyFactory(this.request);
this.Company = this.assignEntity(this.companies);
}
/**
* Привязывает конструктор сущностей
* @param factory - фабрика сущностей
* @returns функция конструктор для вызова new client[Entity]
* */
assignEntity(factory) {
return function (attributes) {
return factory.from(attributes);
};
}
}
exports.Client = Client;
//# sourceMappingURL=client.js.map