Skip to content

Commit

Permalink
refactor(rest): switched to tsyringe for dependency injection (#109)
Browse files Browse the repository at this point in the history
Signed-off-by: Jan <60812202+janrtvld@users.noreply.github.com>
  • Loading branch information
janrtvld committed Apr 28, 2022
1 parent 9b0f265 commit fb4c364
Show file tree
Hide file tree
Showing 12 changed files with 36 additions and 36 deletions.
8 changes: 4 additions & 4 deletions packages/rest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
"test": "jest"
},
"dependencies": {
"@aries-framework/core": "^0.1.0",
"@aries-framework/node": "^0.1.0",
"class-transformer": "0.5.1",
"class-validator": "0.13.1",
"class-validator-jsonschema": "^3.1.0",
Expand All @@ -40,10 +42,8 @@
"routing-controllers-openapi": "^3.1.0",
"swagger-ui-express": "^4.1.6",
"tslog": "^3.2.2",
"typedi": "^0.10.0",
"yargs": "^17.3.1",
"@aries-framework/core": "^0.1.0",
"@aries-framework/node": "^0.1.0"
"tsyringe": "^4.6.0",
"yargs": "^17.3.1"
},
"devDependencies": {
"@types/express": "^4.17.13",
Expand Down
5 changes: 2 additions & 3 deletions packages/rest/samples/utils/GreetingController.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { Agent, AgentConfig } from '@aries-framework/core'
import { Get, JsonController } from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

@JsonController('/greeting')
@Service()
@injectable()
export class GreetingController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
5 changes: 2 additions & 3 deletions packages/rest/src/controllers/agent/AgentController.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { Agent } from '@aries-framework/core'
import { Get, JsonController } from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

@JsonController('/agent')
@Service()
@injectable()
export class AgentController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@ import {
Param,
Post,
} from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

import { BasicMessageRequest } from '../../schemas/BasicMessageRequest'

@JsonController('/basic-messages')
@Service()
@injectable()
export class BasicMessageController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,15 @@ import {
Param,
Post,
} from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

import { InvitationConfigRequest } from '../../schemas/InvitationConfigRequest'
import { ReceiveInvitationByUrlRequest } from '../../schemas/ReceiveInvitationByUrlRequest'
import { ReceiveInvitationRequest } from '../../schemas/ReceiveInvitationRequest'

@JsonController('/connections')
@Service()
@injectable()
export class ConnectionController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,16 @@ import {
Delete,
OnUndefined,
} from 'routing-controllers'
import { Service, Inject } from 'typedi'
import { injectable } from 'tsyringe'

import { AcceptCredentialProposalRequest } from '../../schemas/AcceptCredentialProposalRequest'
import { CredentialOfferRequest } from '../../schemas/CredentialOfferRequest'
import { CredentialOfferTemp } from '../../schemas/CredentialOfferTemplate'
import { CredentialProposalRequest } from '../../schemas/CredentialProposalRequest'

@JsonController('/credentials')
@Service()
@injectable()
export class CredentialController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,13 @@ import {
Param,
Post,
} from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

import { CredentialDefinitionRequest } from '../../schemas/CredentialDefinitionRequest'

@JsonController('/credential-definitions')
@Service()
@injectable()
export class CredentialDefinitionController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
5 changes: 2 additions & 3 deletions packages/rest/src/controllers/credentials/SchemaController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ import {
Param,
Body,
} from 'routing-controllers'
import { Service, Inject } from 'typedi'
import { injectable } from 'tsyringe'

import { SchemaTemplate } from '../../schemas/SchemaRequest'

@JsonController('/schemas')
@Service()
@injectable()
export class SchemaController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
5 changes: 2 additions & 3 deletions packages/rest/src/controllers/proofs/ProofController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
Post,
QueryParam,
} from 'routing-controllers'
import { Inject, Service } from 'typedi'
import { injectable } from 'tsyringe'

import { AcceptProofProposalRequest } from '../../schemas/AcceptProofProposalRequest'
import { PresentationProofRequest } from '../../schemas/PresentationProofRequest'
Expand All @@ -21,9 +21,8 @@ import { ProofProposalRequest } from '../../schemas/ProofProposalRequest'
import { ProofRequestTemplate } from '../../schemas/ProofRequestTemplate'

@JsonController('/proofs')
@Service()
@injectable()
export class ProofController {
@Inject()
private agent: Agent

public constructor(agent: Agent) {
Expand Down
7 changes: 4 additions & 3 deletions packages/rest/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,20 @@ import { validationMetadatasToSchemas } from 'class-validator-jsonschema'
import { createExpressServer, getMetadataArgsStorage, useContainer, useExpressServer } from 'routing-controllers'
import { routingControllersToSpec } from 'routing-controllers-openapi'
import * as swaggerUiExpress from 'swagger-ui-express'
import { Container } from 'typedi'
import { container } from 'tsyringe'

import { basicMessageEvents } from './events/BasicMessageEvents'
import { connectionEvents } from './events/ConnectionEvents'
import { credentialEvents } from './events/CredentialEvents'
import { proofEvents } from './events/ProofEvents'
import TsyringeAdapter from './utils/TsyringeAdapter'

// eslint-disable-next-line @typescript-eslint/no-var-requires
const packageJson = require('../package.json')

export const setupServer = async (agent: Agent, config: ServerConfig) => {
useContainer(Container)
Container.set(Agent, agent)
container.registerInstance(Agent, agent)
useContainer(new TsyringeAdapter(container))

// eslint-disable-next-line @typescript-eslint/ban-types
const controllers = [__dirname + '/controllers/**/*.ts', __dirname + '/controllers/**/*.js']
Expand Down
12 changes: 12 additions & 0 deletions packages/rest/src/utils/TsyringeAdapter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { ClassConstructor, IocAdapter } from 'routing-controllers'
import type { DependencyContainer } from 'tsyringe'

class TsyringeAdapter implements IocAdapter {
public constructor(private readonly TsyringeContainer: DependencyContainer) {}

public get<T>(someClass: ClassConstructor<T>): T {
return this.TsyringeContainer.resolve<T>(someClass)
}
}

export default TsyringeAdapter
5 changes: 0 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5580,11 +5580,6 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=

typedi@^0.10.0:
version "0.10.0"
resolved "https://registry.npmjs.org/typedi/-/typedi-0.10.0.tgz"
integrity sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w==

typescript@^4.5.2:
version "4.5.2"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz"
Expand Down

0 comments on commit fb4c364

Please sign in to comment.