/** * */ import { CONTAINER as CONT_CORE, IDENTIFIERS as CORE, ILogger, } from "@kushki/core"; import { Firehose, Lambda, SNS } from "aws-sdk"; import { DocumentClient } from "aws-sdk/clients/dynamodb"; import { IDENTIFIERS } from "constant/Identifiers"; import { DynamoGateway } from "gateway/DynamoGateway"; import { FireHoseGateway } from "gateway/FireHoseGateway"; import { LambdaGateway } from "gateway/LambdaGateway"; import { PseGateway } from "gateway/PseGateway"; import { SNSGateway } from "gateway/SNSGateway"; import { Container, interfaces } from "inversify"; import { makeLoggerMiddleware } from "inversify-logger-middleware"; import { IDynamoGateway } from "repository/IDynamoGateway"; import { IFirehoseGateway } from "repository/IFirehoseGateway"; import { IKushkiService } from "repository/IKushkiService"; import { ILambdaGateway } from "repository/ILambdaGateway"; import { IPseGateway } from "repository/IPseGateway"; import { ISNSGateway } from "repository/ISNSGateway"; import { ISyncService } from "repository/ISyncService"; import { ITransferService } from "repository/ITransferService"; import { KushkiService } from "service/KushkiService"; import { SyncService } from "service/SyncService"; import { TransferService } from "service/TransferService"; const CONT_APP: Container = new Container(); const LOGGER: interfaces.Middleware = makeLoggerMiddleware(); CONT_APP.applyMiddleware(LOGGER); // Service CONT_APP.bind(IDENTIFIERS.TransferService).to( TransferService ); CONT_APP.bind(IDENTIFIERS.KushkiService).to(KushkiService); CONT_APP.bind(IDENTIFIERS.SyncService).to(SyncService); // Gateway CONT_APP.bind(IDENTIFIERS.DynamoGateway).to(DynamoGateway); CONT_APP.bind(IDENTIFIERS.LambdaGateway).to(LambdaGateway); CONT_APP.bind(IDENTIFIERS.PseGateway).to(PseGateway); CONT_APP.bind(IDENTIFIERS.SNSGateway).to(SNSGateway); CONT_APP.bind(IDENTIFIERS.FirehoseGateway).to( FireHoseGateway ); // External CONT_APP.bind(IDENTIFIERS.AwsDocumentClient).toDynamicValue( () => new DocumentClient({ convertEmptyValues: true, logger: CONT_CORE.get(CORE.ILogger), }) ); CONT_APP.bind(IDENTIFIERS.AwsFirehose).toDynamicValue( () => new Firehose({ logger: CONT_CORE.get(CORE.ILogger), }) ); CONT_APP.bind(IDENTIFIERS.AwsSns).toDynamicValue( () => new SNS({ logger: CONT_CORE.get(CORE.ILogger), }) ); CONT_APP.bind(IDENTIFIERS.AwsLambda).toDynamicValue( () => new Lambda({ logger: CONT_CORE.get(CORE.ILogger), }) ); const CONTAINER: interfaces.Container = Container.merge(CONT_CORE, CONT_APP); export { CONTAINER };