Skip to content

Commit 5f2e30f

Browse files
authored
Merge pull request #7 from Karibash/feature/option-def-separate
Make the type definitions of settings be split and defined separately
2 parents 399a0f1 + 720b177 commit 5f2e30f

File tree

5 files changed

+42
-42
lines changed

5 files changed

+42
-42
lines changed

.changeset/dull-ants-explode.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@nestjs-modular/inject": patch
3+
---
4+
5+
Make the type definitions of settings be split and defined separately

examples/inject/src/modules/core/core.module.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,22 @@
11
import { Global, Module } from '@nestjs/common';
2-
import { InjectModule } from '@nestjs-modular/inject';
2+
import { InjectConditions, InjectModule } from '@nestjs-modular/inject';
33
import path from 'path';
44

55
const isMock = process.env.APP_ENV === 'mock';
6-
const repositoryType = isMock ? 'mock' : 'inmemory';
6+
7+
const repositories: InjectConditions = {
8+
path: path.resolve(__dirname, `../../infrastructures/repositories/${isMock ? 'mock' : 'inmemory'}`),
9+
includeFileNames: [/\.repository$/],
10+
includeExportNames: [/RepositoryProvider$/],
11+
};
712

813
@Global()
914
@Module({
1015
imports: [
1116
InjectModule.forRootAsync({
1217
global: true,
13-
providers: {
14-
path: path.resolve(__dirname, `../../infrastructures/repositories/${repositoryType}`),
15-
includeFileNames: [/\.repository$/],
16-
includeExportNames: [/RepositoryProvider$/],
17-
},
18-
exports: {
19-
path: path.resolve(__dirname, `../../infrastructures/repositories/${repositoryType}`),
20-
includeFileNames: [/\.repository$/],
21-
includeExportNames: [/RepositoryProvider$/],
22-
},
18+
providers: repositories,
19+
exports: repositories,
2320
}),
2421
],
2522
})

examples/inject/src/modules/tasks/tasks.module.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
import { Module } from '@nestjs/common';
2-
import { InjectModule } from '@nestjs-modular/inject';
2+
import { InjectConditions, InjectModule } from '@nestjs-modular/inject';
33
import path from 'path';
44

55
import { TasksController } from './tasks.controller';
66

7+
const useCases: InjectConditions = {
8+
path: path.resolve(__dirname, './usecases'),
9+
includeFileNames: [/\.usecase$/],
10+
includeExportNames: [/UseCase$/],
11+
};
12+
713
@Module({
814
imports: [
915
InjectModule.forRootAsync({
10-
providers: {
11-
path: path.resolve(__dirname, './usecases'),
12-
includeFileNames: [/\.usecase$/],
13-
includeExportNames: [/UseCase$/],
14-
},
15-
exports: {
16-
path: path.resolve(__dirname, './usecases'),
17-
includeFileNames: [/\.usecase$/],
18-
includeExportNames: [/UseCase$/],
19-
},
16+
providers: useCases,
17+
exports: useCases,
2018
}),
2119
],
2220
controllers: [

examples/inject/src/modules/users/users.module.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
import { Module } from '@nestjs/common';
2-
import { InjectModule } from '@nestjs-modular/inject';
2+
import { InjectConditions, InjectModule } from '@nestjs-modular/inject';
33
import path from 'path';
44

55
import { UsersController } from './users.controller';
66

7+
const useCases: InjectConditions = {
8+
path: path.resolve(__dirname, './usecases'),
9+
includeFileNames: [/\.usecase$/],
10+
includeExportNames: [/UseCase$/],
11+
};
12+
713
@Module({
814
imports: [
915
InjectModule.forRootAsync({
10-
providers: {
11-
path: path.resolve(__dirname, './usecases'),
12-
includeFileNames: [/\.usecase$/],
13-
includeExportNames: [/UseCase$/],
14-
},
15-
exports: {
16-
path: path.resolve(__dirname, './usecases'),
17-
includeFileNames: [/\.usecase$/],
18-
includeExportNames: [/UseCase$/],
19-
},
16+
providers: useCases,
17+
exports: useCases,
2018
}),
2119
],
2220
controllers: [

packages/inject/src/index.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const someTests = (value: string, terms: Array<string | RegExp>, _default: boole
2121
});
2222
};
2323

24-
const getInjectables = async <T>(conditions?: InjectConditions<T[]>): Promise<T[]> => {
24+
const getInjectables = async <T>(conditions?: InjectOptions<T[]>): Promise<T[]> => {
2525
const mergedConditions = {
2626
injects: [],
2727
includeFileNames: [],
@@ -71,9 +71,7 @@ const getInjectables = async <T>(conditions?: InjectConditions<T[]>): Promise<T[
7171
return [...injectables, ...mergedConditions.injects];
7272
};
7373

74-
export type InjectConditions<T> = {
75-
injects?: T;
76-
} & {
74+
export type InjectConditions = {
7775
path: string;
7876
includeFileNames?: Array<string | RegExp>;
7977
excludeFileNames?: Array<string | RegExp>;
@@ -83,11 +81,15 @@ export type InjectConditions<T> = {
8381
excludeExportNames?: Array<string | RegExp>;
8482
};
8583

84+
export type InjectOptions<T> = InjectConditions & {
85+
injects?: T;
86+
};
87+
8688
export type InjectModuleOptions = Pick<DynamicModule, 'global'> & {
87-
imports?: InjectConditions<Exclude<ModuleMetadata['imports'], undefined>>;
88-
controllers?: InjectConditions<Exclude<ModuleMetadata['controllers'], undefined>>;
89-
providers?: InjectConditions<Exclude<ModuleMetadata['providers'], undefined>>;
90-
exports?: InjectConditions<Exclude<ModuleMetadata['exports'], undefined>>;
89+
imports?: InjectOptions<Exclude<ModuleMetadata['imports'], undefined>>;
90+
controllers?: InjectOptions<Exclude<ModuleMetadata['controllers'], undefined>>;
91+
providers?: InjectOptions<Exclude<ModuleMetadata['providers'], undefined>>;
92+
exports?: InjectOptions<Exclude<ModuleMetadata['exports'], undefined>>;
9193
};
9294

9395
@Module({})

0 commit comments

Comments
 (0)