-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinversify.config.js
49 lines (49 loc) · 3.78 KB
/
inversify.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const PouchDB = require('pouchdb');
const inversify_1 = require("inversify");
const Validator_1 = require("./src/services/validator/Validator");
const Types_1 = require("./src/container/Types");
const WeatherController_1 = require("./src/http/controllers/WeatherController");
const MailValidationMiddleware_1 = require("./src/http/middleware/MailValidationMiddleware");
const CityValidationMiddleware_1 = require("./src/http/middleware/CityValidationMiddleware");
const BasicValidator_1 = require("./src/services/validator/BasicValidator");
const ValidationRulesBuilder_1 = require("./src/services/validator/rule/builder/ValidationRulesBuilder");
const pouchdb_conf_1 = require("./config/pouchdb.conf");
const PersistingHandler_1 = require("./src/services/handler/request-handler/handlers/PersistingHandler");
const PouchDBPayloadPersister_1 = require("./src/services/persisters/PouchDBPayloadPersister");
const AxiosHttpClient_1 = require("./src/services/http-client/AxiosHttpClient");
const axios_1 = require("axios");
const HttpHandler_1 = require("./src/services/handler/request-handler/handlers/HttpHandler");
const ConsoleLogHandler_1 = require("./src/services/handler/request-handler/handlers/ConsoleLogHandler");
const MetaweatherService_1 = require("./src/services/weather/metaweather/MetaweatherService");
const WeatherDecorator_1 = require("./src/services/decorator/WeatherDecorator");
const container = new inversify_1.Container();
const validator = new Validator_1.Validator();
const basicValidator = new BasicValidator_1.BasicValidator();
const pouchDB = new PouchDB(pouchdb_conf_1.default.prefix);
container.bind(Types_1.default.HttpClient.Axios).toConstantValue(axios_1.default);
container.bind(Types_1.default.Database.PouchDB).toConstantValue(pouchDB);
container.bind(Types_1.default.Validator.IValidator).toConstantValue(validator).whenTargetIsDefault();
container.bind(Types_1.default.HttpClient.IHttpClient).to(AxiosHttpClient_1.AxiosHttpClient);
container.bind(Types_1.default.Validator.IValidator).toConstantValue(basicValidator).whenTargetNamed('BasicValidator');
container.bind(Types_1.default.Persister.IPayloadPersister).to(PouchDBPayloadPersister_1.PouchDBPayloadPersister);
container.bind(Types_1.default.Weather.IWeatherService).to(MetaweatherService_1.MetaweatherService);
container.bind(Types_1.default.Decorator.IWeatherDecorator).to(WeatherDecorator_1.WeatherDecorator);
container.bind(Types_1.default.Validator.RuleBuilder).toDynamicValue(() => { return new ValidationRulesBuilder_1.ValidationRulesBuilder(); });
container.bind(Types_1.default.Handler.RequestHandler.HttpHandler).to(HttpHandler_1.HttpHandler);
container.bind(Types_1.default.Handler.RequestHandler.PersistingHandler).to(PersistingHandler_1.PersistingHandler);
container.bind(Types_1.default.Handler.RequestHandler.ConsoleLogHandler).to(ConsoleLogHandler_1.ConsoleLogHandler);
container.bind(Types_1.default.Controllers.WebsiteController).to(WeatherController_1.WeatherController);
container.bind(Types_1.default.Middlewares.MailValidationMiddleware).to(MailValidationMiddleware_1.MailValidationMiddleware);
container.bind(Types_1.default.Middlewares.CityValidationMiddleware).to(CityValidationMiddleware_1.CityValidationMiddleware);
container.bind(Types_1.default.Handler.ProxyHandlers).toDynamicValue(() => {
const persistingHandler = container.get(Types_1.default.Handler.RequestHandler.PersistingHandler);
const httpHandler = container.get(Types_1.default.Handler.RequestHandler.HttpHandler);
const consoleLogHandler = container.get(Types_1.default.Handler.RequestHandler.ConsoleLogHandler);
consoleLogHandler.handler = httpHandler;
persistingHandler.handler = consoleLogHandler;
return persistingHandler;
});
exports.default = container;