Skip to content

Commit aecebe2

Browse files
refactor(common): infer flatten helper
1 parent 2c5cfe5 commit aecebe2

2 files changed

Lines changed: 9 additions & 6 deletions

File tree

packages/common/decorators/core/dependencies.decorator.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { PARAMTYPES_METADATA } from '../../constants';
22

3-
export function flatten<T extends any[] = any, R extends any[] = any>(
3+
export function flatten<T extends Array<unknown> = any>(
44
arr: T,
5-
): R {
5+
): T extends Array<infer R> ? R : never {
66
const flat = [].concat(...arr);
7-
return (flat.some(Array.isArray) ? flatten(flat) : flat) as R;
7+
return flat.some(Array.isArray) ? flatten(flat) : flat;
88
}
99

10-
export const Dependencies = (...dependencies: any[]): ClassDecorator => {
10+
export const Dependencies = (
11+
...dependencies: Array<unknown>
12+
): ClassDecorator => {
1113
const flattenDeps = flatten(dependencies);
1214
return (target: object) => {
1315
Reflect.defineMetadata(PARAMTYPES_METADATA, flattenDeps, target);

packages/core/discovery/discovery-service.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { flatten, Injectable } from '@nestjs/common';
2+
import { InstanceWrapper } from '../injector/instance-wrapper';
23
import { Module } from '../injector/module';
34
import { ModulesContainer } from '../injector/modules-container';
45

@@ -13,15 +14,15 @@ export class DiscoveryService {
1314
getProviders(
1415
options: DiscoveryOptions = {},
1516
modules: Module[] = this.getModules(options),
16-
) {
17+
): InstanceWrapper[] {
1718
const providers = modules.map(item => [...item.providers.values()]);
1819
return flatten(providers);
1920
}
2021

2122
getControllers(
2223
options: DiscoveryOptions = {},
2324
modules: Module[] = this.getModules(options),
24-
) {
25+
): InstanceWrapper[] {
2526
const controllers = modules.map(item => [...item.controllers.values()]);
2627
return flatten(controllers);
2728
}

0 commit comments

Comments
 (0)