@@ -9,6 +9,7 @@ import {deepAssign} from "../utils/object";
9
9
import { IScopeOptions } from "../interfaces/IScopeOptions" ;
10
10
import { IFindOptions } from "../interfaces/IFindOptions" ;
11
11
import { getAssociationsByRelation } from "./association" ;
12
+ import { uniqueFilter } from "../utils/array" ;
12
13
13
14
const MODEL_NAME_KEY = 'sequelize:modelName' ;
14
15
const SCOPES_KEY = 'sequelize:scopes' ;
@@ -168,18 +169,20 @@ export function getModels(arg: Array<typeof Model|string>): Array<typeof Model>
168
169
169
170
const _models = fs
170
171
. readdirSync ( dir as string )
171
- . filter ( file => ( ( file . indexOf ( '.' ) !== 0 ) && ( file . slice ( - 3 ) === '.js' ) ) )
172
- . map ( file => {
173
- const fullPath = path . join ( dir , file ) ;
174
- const modelName = path . basename ( file , '.js' ) ;
175
-
176
- // use require main to require from root
177
- const module = require . main . require ( fullPath ) ;
178
-
179
- if ( ! module [ modelName ] && ! module . default ) {
180
- throw new Error ( `No default export defined for file "${ file } " or export does not satisfy filename.` ) ;
172
+ . filter ( file => {
173
+ const extension = file . slice ( - 3 ) ;
174
+ return extension === '.js' || extension === '.ts' ;
175
+ } )
176
+ . map ( file => path . parse ( file ) . name )
177
+ . filter ( uniqueFilter )
178
+ . map ( fileName => {
179
+ const fullPath = path . join ( dir , fileName ) ;
180
+ const module = require ( fullPath ) ;
181
+
182
+ if ( ! module [ fileName ] && ! module . default ) {
183
+ throw new Error ( `No default export defined for file "${ fileName } " or export does not satisfy filename.` ) ;
181
184
}
182
- return module [ modelName ] || module . default ;
185
+ return module [ fileName ] || module . default ;
183
186
} ) ;
184
187
185
188
models . push ( ..._models ) ;
0 commit comments