Skip to content

Commit 511e90d

Browse files
#22 allow loading ts files
1 parent 93bc3d5 commit 511e90d

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

lib/services/models.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {deepAssign} from "../utils/object";
99
import {IScopeOptions} from "../interfaces/IScopeOptions";
1010
import {IFindOptions} from "../interfaces/IFindOptions";
1111
import {getAssociationsByRelation} from "./association";
12+
import {uniqueFilter} from "../utils/array";
1213

1314
const MODEL_NAME_KEY = 'sequelize:modelName';
1415
const 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

Comments
 (0)