Skip to content

Commit

Permalink
Merge pull request #49 from hapinessjs/next
Browse files Browse the repository at this point in the history
Next
  • Loading branch information
juneil committed Nov 22, 2018
2 parents 1e2e6b5 + 1c41fd6 commit cf04acc
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 9 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -453,6 +453,8 @@ To set up your development environment:
[Back to top](#table-of-contents)

## Change History
* v1.6.2 (2018-11-22)
* Create DI with providers for queues and exchanges
* v1.6.1 (2018-11-14)
* force_json_decode is now true by default
* v1.6.0 (2018-10-31)
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "@hapiness/rabbitmq",
"version": "1.6.1",
"version": "1.6.2",
"description": "Hapiness module for rabbitmq",
"main": "commonjs/index.js",
"types": "index.d.ts",
Expand Down
6 changes: 3 additions & 3 deletions src/module/extension/build-exchange.ts
@@ -1,7 +1,7 @@
import { Observable } from 'rxjs/Observable';
import { CoreModule, DependencyInjection } from '@hapiness/core';
import { CoreModule } from '@hapiness/core';
import { ConnectionManager } from '../managers/connection-manager';
import { metadataFromDeclarations } from '../utils';
import { metadataFromDeclarations, instantiateWithProviders } from '../utils';
import { ExchangeDecoratorInterface } from '../decorators';
import { ExchangeManager } from '../managers/exchange-manager';
import { ExchangeWrapper } from '../managers/exchange-wrapper';
Expand All @@ -14,7 +14,7 @@ export default function buildExchanges(modules: CoreModule[], connection: Connec
metadataFromDeclarations<ExchangeDecoratorInterface>(_module.declarations, 'Exchange')
.map(metadata => ({ metadata, _module }))
)
.flatMap(({ metadata, _module }) => DependencyInjection.instantiateComponent(metadata.token, _module.di)
.flatMap(({ metadata, _module }) => instantiateWithProviders(metadata.token, metadata.data.providers, _module)
.map(instance => ({ instance, _module, metadata })))
.flatMap(({ instance, _module, metadata }) => {
const exchange = new ExchangeManager(connection.defaultChannel, new ExchangeWrapper(instance, metadata.data));
Expand Down
6 changes: 3 additions & 3 deletions src/module/extension/build-queues.ts
@@ -1,7 +1,7 @@
import { CoreModule, DependencyInjection, extractMetadataByDecorator, Type } from '@hapiness/core';
import { CoreModule, extractMetadataByDecorator, Type } from '@hapiness/core';
import { ConnectionManager } from '../managers/connection-manager';
import { Observable } from 'rxjs/Observable';
import { metadataFromDeclarations } from '../utils';
import { metadataFromDeclarations, instantiateWithProviders } from '../utils';
import { QueueDecoratorInterface, ExchangeDecoratorInterface } from '../decorators';
import { getChannel } from './get-channel';
import { QueueManager } from '../managers/queue-manager';
Expand All @@ -21,7 +21,7 @@ export default function buildQueues(
.map(metadata => ({ metadata, _module }))
)
.flatMap(({ metadata, _module }) =>
DependencyInjection.instantiateComponent(metadata.token, _module.di)
instantiateWithProviders(metadata.token, metadata.data.providers, _module)
.map(instance => ({ instance, _module, metadata})))
// Assert queue
.flatMap(({ instance, _module, metadata }) =>
Expand Down
7 changes: 6 additions & 1 deletion src/module/utils.ts
@@ -1,4 +1,4 @@
import { CoreModule, Type, extractMetadataByDecorator } from '@hapiness/core';
import { CoreModule, Type, extractMetadataByDecorator, DependencyInjection } from '@hapiness/core';
import { Observable } from 'rxjs/Observable';

export const getModules = (module: CoreModule): CoreModule[] => {
Expand All @@ -23,3 +23,8 @@ export function metadataFromDeclarations<T>(declarations: Type<any>[], decorator
data: extractMetadataByDecorator<T>(_, decoratorName)
}));
}

export function instantiateWithProviders<T = any>(token: any, providers: any[], module): Observable<T> {
return DependencyInjection.createAndResolve([].concat(providers), module.di)
.flatMap(di => DependencyInjection.instantiateComponent(token, di));
}

0 comments on commit cf04acc

Please sign in to comment.