1 |
|
2 |
|
3 |
|
4 |
|
5 | "use strict";
|
6 |
|
7 | const fs = require('fs'),
|
8 | path = require('path'),
|
9 | arrayfilter = require('arrayfilter'),
|
10 | stringcase = require('stringcase'),
|
11 | _isModule = require('./_is_module');
|
12 |
|
13 |
|
14 | function _datasource(dirname) {
|
15 | let datasource = {};
|
16 | fs.readdirSync(dirname)
|
17 | .filter(arrayfilter.patternReject(/^index\./))
|
18 | .filter(arrayfilter.patternReject(/^\./))
|
19 | .filter(arrayfilter.patternReject(/^\_/))
|
20 | .map((filename) => {
|
21 | return path.resolve(dirname, filename);
|
22 | })
|
23 | .filter(_isModule)
|
24 | .forEach((filename) => {
|
25 | let name = path.basename(filename, path.extname(filename));
|
26 | Object.defineProperty(datasource, stringcase.camelcase(name), {
|
27 | get: function () {
|
28 | return require(filename);
|
29 | },
|
30 | enumerable: true
|
31 | })
|
32 | });
|
33 | return datasource;
|
34 | }
|
35 |
|
36 | module.exports = _datasource;
|