import { Container } from "inversify"; import Client from "../client"; import HttpClient from "../http"; import Auth from "../auth"; import { IHttpClient, IOpenPlanetNode, IClientFactory, IAuthParams, IAuth, } from "../interfaces"; import resources from "./resources"; import * as TYPES from "../types"; const container = new Container(); resources(container); container.bind(TYPES.AuthParams).toConstantValue({ clientId: process.env.AUTH_CLIENT_ID, host: process.env.AUTH_HOST, }); container.bind(TYPES.OpenPlanetHost).toConstantValue(process.env.OPEN_PLANET_HOST); container.bind(TYPES.Auth).to(Auth); container.bind(TYPES.HttpClient).to(HttpClient); container.bind(TYPES.OpenPlanetNode).to(Client); type AccessToken = { token: string }; container.bind("AccessToken").toDynamicValue((context) => { return { token: "foobar", }; }); container.bind>(TYPES.IClientFactory) .toFactory((context) => { return () => { let client = context.container.get(TYPES.OpenPlanetNode); client.clientId = process.env.CLIENT_ID; return client; }; }); export default container;