@@ -9,6 +9,7 @@ import {deepAssign} from "../utils/object";
99import { IScopeOptions } from "../interfaces/IScopeOptions" ;
1010import { IFindOptions } from "../interfaces/IFindOptions" ;
1111import { getAssociationsByRelation } from "./association" ;
12+ import { uniqueFilter } from "../utils/array" ;
1213
1314const MODEL_NAME_KEY = 'sequelize:modelName' ;
1415const SCOPES_KEY = 'sequelize:scopes' ;
@@ -168,18 +169,20 @@ export function getModels(arg: Array<typeof Model|string>): Array<typeof Model>
168169
169170 const _models = fs
170171 . 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.` ) ;
181184 }
182- return module [ modelName ] || module . default ;
185+ return module [ fileName ] || module . default ;
183186 } ) ;
184187
185188 models . push ( ..._models ) ;
0 commit comments