1 | "use strict";
|
2 | const initialize_1 = require('./initialize/initialize');
|
3 | var recursiveReadDir = require('recursive-readdir-synchronous');
|
4 | const path = require('path');
|
5 | const Utils = require('./utils');
|
6 | const utils_1 = require('./metadata/utils');
|
7 |
|
8 |
|
9 | var domain = require('../security/auth/domain');
|
10 | const constants_1 = require('./constants');
|
11 |
|
12 | const Enumerable = require('linq');
|
13 |
|
14 | function ignoreFile(file) {
|
15 | return !file.endsWith('.js') || file.endsWith('.spec.js');
|
16 | }
|
17 |
|
18 | function ignoreDirectory(file, stats) {
|
19 | return path.basename(file) == "node_modules" || path.basename(file).startsWith('.') || path.basename(file) == "unit-test";
|
20 | }
|
21 | function readIgnore(file, stats) {
|
22 | return (stats.isFile() && ignoreFile(file))
|
23 | || (stats.isDirectory() && ignoreDirectory(file, stats));
|
24 | }
|
25 | let _appRoot = process.cwd();
|
26 | class Dynamic {
|
27 | constructor(config, securityConfig, server) {
|
28 | Utils.config(config);
|
29 | Utils.securityConfig(securityConfig);
|
30 | config = config;
|
31 | securityConfig = securityConfig;
|
32 | let ignorePaths = config.Config && config.Config.ignorePaths || [];
|
33 | let internalIgnorePaths = config.Config && config.Config.internalIgnorePaths || [];
|
34 | ignorePaths = [...ignorePaths, ...internalIgnorePaths];
|
35 | var files = this.scanDirectories(ignorePaths);
|
36 | this.loadComponents(files);
|
37 | this.initialize(files, server);
|
38 | }
|
39 | scanDirectories(ignorePaths) {
|
40 | ignorePaths.push(readIgnore);
|
41 | return recursiveReadDir(_appRoot, ignorePaths);
|
42 |
|
43 | }
|
44 | loadComponents(files) {
|
45 | Enumerable.from(files)
|
46 | .forEach(x => {
|
47 | try {
|
48 | if (x.indexOf("gulpfile") > -1) {
|
49 | return;
|
50 | }
|
51 | var route = path.resolve(x.substring(0, x.lastIndexOf('.')));
|
52 | require(route);
|
53 | }
|
54 | catch (e) {
|
55 | console.log(e);
|
56 | throw e;
|
57 | }
|
58 | });
|
59 | }
|
60 | initialize(files, server) {
|
61 | new initialize_1.Initalize(files, server);
|
62 | }
|
63 | }
|
64 | module.exports = function (config, securityConfig, appRoot, entityServiceInst, sqlServerInst, server) {
|
65 |
|
66 |
|
67 |
|
68 |
|
69 | _appRoot = appRoot || process.env.APP_ROOT || process.cwd();
|
70 |
|
71 |
|
72 | new Dynamic(config, securityConfig, server);
|
73 | utils_1.MetaUtils.refreshDerivedObjectsMetadata(constants_1.Decorators.DOCUMENT);
|
74 | utils_1.MetaUtils.refreshDerivedObjectsMetadata(constants_1.Decorators.ENTITY);
|
75 | };
|
76 | let components = [];
|
77 | function addComponent(comp) {
|
78 | components.push(comp);
|
79 | }
|
80 | exports.addComponent = addComponent;
|
81 | function initialize(config, securityConfig, appRoot, entityServiceInst, sqlServerInst, server) {
|
82 |
|
83 |
|
84 |
|
85 |
|
86 | _appRoot = appRoot || process.env.APP_ROOT || process.cwd();
|
87 |
|
88 | new Dynamic(config, securityConfig, server);
|
89 |
|
90 | components.forEach(x => {
|
91 | x.default();
|
92 | });
|
93 | }
|
94 | exports.initialize = initialize;
|
95 | module.exports.register = function (app) {
|
96 | app.use(domain.middleware('context'));
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 | };
|
105 |
|
106 |
|