not-node 5.0.22 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/bin/not-deploy.js +52 -0
- package/index.js +21 -19
- package/package.json +1 -1
- package/src/app.js +61 -58
- package/src/auth/abstract.js +17 -19
- package/src/auth/const.js +8 -12
- package/src/auth/fields.js +143 -124
- package/src/auth/index.js +14 -14
- package/src/auth/roles.js +64 -63
- package/src/auth/routes.js +89 -54
- package/src/auth/rules.js +63 -63
- package/src/auth/session.js +60 -62
- package/src/bootstrap/form.js +13 -13
- package/src/bootstrap/logic.js +45 -41
- package/src/bootstrap/model.js +14 -17
- package/src/bootstrap/route.js +132 -53
- package/src/common.js +86 -79
- package/src/core/fields/ID.js +6 -6
- package/src/core/fields/__closed.js +3 -3
- package/src/core/fields/__latest.js +3 -3
- package/src/core/fields/__version.js +3 -3
- package/src/core/fields/__versions.js +3 -3
- package/src/core/fields/_id.js +6 -6
- package/src/core/fields/active.js +9 -9
- package/src/core/fields/codeName.js +9 -9
- package/src/core/fields/createdAt.js +17 -17
- package/src/core/fields/default.js +9 -9
- package/src/core/fields/description.js +11 -11
- package/src/core/fields/email.js +9 -9
- package/src/core/fields/enabled.js +9 -9
- package/src/core/fields/expiredAt.js +16 -16
- package/src/core/fields/height.js +11 -11
- package/src/core/fields/ip.js +10 -10
- package/src/core/fields/objectId.js +10 -10
- package/src/core/fields/owner.js +13 -13
- package/src/core/fields/ownerModel.js +11 -11
- package/src/core/fields/price.js +11 -11
- package/src/core/fields/requiredObject.js +10 -10
- package/src/core/fields/session.js +10 -10
- package/src/core/fields/size.js +11 -11
- package/src/core/fields/telephone.js +9 -9
- package/src/core/fields/title.js +15 -15
- package/src/core/fields/updatedAt.js +17 -17
- package/src/core/fields/userId.js +11 -12
- package/src/core/fields/uuid.js +11 -11
- package/src/core/fields/validators/email.js +6 -4
- package/src/core/fields/validators/owner.js +6 -4
- package/src/core/fields/width.js +11 -11
- package/src/domain.js +435 -431
- package/src/env.js +23 -23
- package/src/error.js +20 -23
- package/src/exceptions/db.js +23 -0
- package/src/exceptions/http.js +43 -0
- package/src/fields/index.js +106 -111
- package/src/form/fabric.js +19 -24
- package/src/form/form.js +195 -186
- package/src/form/index.js +2 -2
- package/src/generic/index.js +2 -0
- package/src/generic/logic.js +595 -0
- package/src/generic/route.js +76 -0
- package/src/init/additional.js +7 -7
- package/src/init/app.js +75 -68
- package/src/init/bodyparser.js +14 -14
- package/src/init/compression.js +6 -7
- package/src/init/core.js +12 -12
- package/src/init/cors.js +22 -24
- package/src/init/db/index.js +41 -43
- package/src/init/db/ioredis.js +28 -20
- package/src/init/db/mongoose.js +42 -32
- package/src/init/db/redis.js +59 -48
- package/src/init/env.js +44 -36
- package/src/init/express.js +18 -21
- package/src/init/fileupload.js +8 -10
- package/src/init/http.js +65 -47
- package/src/init/index.js +141 -148
- package/src/init/informer.js +7 -9
- package/src/init/methodoverride.js +4 -6
- package/src/init/middleware.js +23 -26
- package/src/init/modules.js +4 -4
- package/src/init/monitoring.js +8 -8
- package/src/init/rateLimiter.js +53 -45
- package/src/init/routes.js +67 -69
- package/src/init/security.js +37 -33
- package/src/init/sequence.js +111 -107
- package/src/init/sequence.standart.js +54 -56
- package/src/init/sessions/index.js +21 -21
- package/src/init/sessions/mongoose.js +49 -36
- package/src/init/sessions/redis.js +28 -27
- package/src/init/static.js +53 -40
- package/src/init/template.js +17 -17
- package/src/lib.js +230 -200
- package/src/manifest/batchRunner.js +26 -25
- package/src/manifest/initializator/forms.js +24 -24
- package/src/manifest/initializator/index.js +8 -10
- package/src/manifest/initializator/manifests.js +45 -42
- package/src/manifest/initializator/models.js +37 -34
- package/src/manifest/manifest.filter.js +130 -97
- package/src/manifest/manifest.js +103 -77
- package/src/manifest/module.js +350 -360
- package/src/manifest/registrator/fields.js +90 -85
- package/src/manifest/registrator/forms.js +47 -47
- package/src/manifest/registrator/index.js +14 -16
- package/src/manifest/registrator/locales.js +17 -16
- package/src/manifest/registrator/logics.js +66 -64
- package/src/manifest/registrator/models.js +64 -62
- package/src/manifest/registrator/routes.js +171 -132
- package/src/manifest/registrator/routes.ws.js +109 -103
- package/src/manifest/route.js +216 -161
- package/src/model/buildValidator.js +53 -42
- package/src/model/default.js +304 -286
- package/src/model/enrich.js +69 -61
- package/src/model/increment.js +124 -137
- package/src/model/proto.js +179 -148
- package/src/model/routine.js +85 -76
- package/src/model/utils.js +33 -0
- package/src/model/versioning.js +148 -130
- package/src/obsolete.js +12 -8
- package/src/parser.js +29 -22
- package/src/repos.js +29 -31
- package/src/rollup.js +75 -65
- package/src/shell.helpers.js +28 -28
- package/static.js +31 -0
- package/src/generic/router.js +0 -16
- package/src/manifest/module.models.js +0 -0
- package/src/manifest/module.status.js +0 -0
|
@@ -1,60 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const initCORS = require('./cors');
|
|
1
|
+
const initEnv = require("./env");
|
|
2
|
+
const initDB = require("./db");
|
|
3
|
+
const initExpress = require("./express");
|
|
4
|
+
const initCompression = require("./compression");
|
|
5
|
+
const initSecurity = require("./security");
|
|
6
|
+
const initBodyparser = require("./bodyparser");
|
|
7
|
+
const initMethodOverride = require("./methodoverride");
|
|
8
|
+
const initFileupload = require("./fileupload");
|
|
9
|
+
const initNotApp = require("./app");
|
|
10
|
+
const initSessions = require("./sessions");
|
|
11
|
+
const initTemplate = require("./template");
|
|
12
|
+
const initCORS = require("./cors");
|
|
14
13
|
//const initCore = require('./core');
|
|
15
|
-
const initMiddleware = require(
|
|
16
|
-
const initStatic = require(
|
|
17
|
-
const initRoutes = require(
|
|
18
|
-
const initRateLimiter = require(
|
|
19
|
-
const initModules = require(
|
|
20
|
-
const initInformer = require(
|
|
21
|
-
const initHTTP = require(
|
|
22
|
-
const initMonitoring = require(
|
|
14
|
+
const initMiddleware = require("./middleware");
|
|
15
|
+
const initStatic = require("./static");
|
|
16
|
+
const initRoutes = require("./routes");
|
|
17
|
+
const initRateLimiter = require("./rateLimiter");
|
|
18
|
+
const initModules = require("./modules");
|
|
19
|
+
const initInformer = require("./informer");
|
|
20
|
+
const initHTTP = require("./http");
|
|
21
|
+
const initMonitoring = require("./monitoring");
|
|
23
22
|
|
|
24
23
|
module.exports = [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
24
|
+
//creating set of variables derived from basic ones,
|
|
25
|
+
//such as various paths, server names and URIs
|
|
26
|
+
initEnv,
|
|
27
|
+
//DB access drivers
|
|
28
|
+
initDB,
|
|
29
|
+
//http(s) server
|
|
30
|
+
initExpress,
|
|
31
|
+
initRateLimiter,
|
|
32
|
+
//CSP security directives
|
|
33
|
+
initSecurity,
|
|
34
|
+
//gzip compression
|
|
35
|
+
initCompression,
|
|
36
|
+
initFileupload,
|
|
37
|
+
initBodyparser,
|
|
38
|
+
initMethodOverride,
|
|
39
|
+
//not-node core
|
|
40
|
+
initNotApp,
|
|
41
|
+
//init various resources like common object fields descriptions and locales
|
|
42
|
+
//initCore,
|
|
43
|
+
//user sessions
|
|
44
|
+
initSessions,
|
|
45
|
+
//template engine
|
|
46
|
+
initTemplate,
|
|
47
|
+
//CORS rules
|
|
48
|
+
initCORS,
|
|
49
|
+
//various not-* middleware from all sources
|
|
50
|
+
initMiddleware,
|
|
51
|
+
initStatic,
|
|
52
|
+
initRoutes,
|
|
53
|
+
initModules,
|
|
54
|
+
//messaging platform
|
|
55
|
+
initInformer,
|
|
56
|
+
initHTTP,
|
|
57
|
+
initMonitoring,
|
|
60
58
|
];
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
module.exports = class InitSessions {
|
|
2
|
+
/**
|
|
3
|
+
* Returns constructor of Session driver
|
|
4
|
+
* @param {Object} conf configuration os session from application config
|
|
5
|
+
* @param {string} conf.driver name of session storage engine
|
|
6
|
+
* @return {Object} class constructor or undefined
|
|
7
|
+
**/
|
|
8
|
+
static getConstructor(conf) {
|
|
9
|
+
switch (conf.driver) {
|
|
10
|
+
case "redis":
|
|
11
|
+
return require("./redis.js");
|
|
12
|
+
case "mongoose":
|
|
13
|
+
return require("./mongoose.js");
|
|
14
|
+
default:
|
|
15
|
+
return require("./mongoose.js");
|
|
16
|
+
}
|
|
15
17
|
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async run({master, config, options}) {
|
|
19
|
-
const conf = config.get('session');
|
|
20
|
-
const Constructor = InitSessions.getConstructor(conf);
|
|
21
|
-
await new Constructor().run({master, config, options, conf});
|
|
22
|
-
}
|
|
23
18
|
|
|
19
|
+
async run({ master, config, options }) {
|
|
20
|
+
const conf = config.get("session");
|
|
21
|
+
const Constructor = InitSessions.getConstructor(conf);
|
|
22
|
+
await new Constructor().run({ master, config, options, conf });
|
|
23
|
+
}
|
|
24
24
|
};
|
|
@@ -1,39 +1,52 @@
|
|
|
1
|
-
const {notError} = require(
|
|
2
|
-
const log = require(
|
|
3
|
-
const ADDS = require(
|
|
1
|
+
const { notError } = require("not-error");
|
|
2
|
+
const log = require("not-log")(module, "not-node//init");
|
|
3
|
+
const ADDS = require("../additional");
|
|
4
4
|
|
|
5
|
-
module.exports = class InitSessionsMongo{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
cookie: config.get('session:cookie'),
|
|
32
|
-
resave: true,
|
|
33
|
-
saveUninitialized: true,
|
|
34
|
-
store: InitSessionsMongo.createStore({config,master, expressSession})
|
|
35
|
-
}));
|
|
36
|
-
await ADDS.run('sessions.post', {config, options, master});
|
|
37
|
-
}
|
|
5
|
+
module.exports = class InitSessionsMongo {
|
|
6
|
+
static createStore({ config, master, expressSession }) {
|
|
7
|
+
const MongoDBStore = require("connect-mongodb-session")(expressSession);
|
|
8
|
+
const mongooseOptions = config.get("db.mongoose.options");
|
|
9
|
+
let store = new MongoDBStore({
|
|
10
|
+
uri: `mongodb://${mongooseOptions.user}:${mongooseOptions.pass}@${mongooseOptions.host}/${mongooseOptions.db}`,
|
|
11
|
+
databaseName: mongooseOptions.db,
|
|
12
|
+
collection: "sessions",
|
|
13
|
+
});
|
|
14
|
+
store.on("connected", function () {
|
|
15
|
+
log.info("Sessions connected");
|
|
16
|
+
});
|
|
17
|
+
// Catch errors
|
|
18
|
+
store.on("error", function (error) {
|
|
19
|
+
master
|
|
20
|
+
.getApp()
|
|
21
|
+
.report(
|
|
22
|
+
new notError(
|
|
23
|
+
"User sessions storage connection failed",
|
|
24
|
+
{},
|
|
25
|
+
error
|
|
26
|
+
)
|
|
27
|
+
);
|
|
28
|
+
});
|
|
29
|
+
return store;
|
|
30
|
+
}
|
|
38
31
|
|
|
32
|
+
async run({ config, options, master }) {
|
|
33
|
+
const expressSession = require("express-session");
|
|
34
|
+
log.info("Setting up user sessions handler(mongoose)...");
|
|
35
|
+
await ADDS.run("sessions.pre", { config, options, master });
|
|
36
|
+
master.getServer().use(
|
|
37
|
+
expressSession({
|
|
38
|
+
secret: config.get("session:secret"),
|
|
39
|
+
key: config.get("session:key"),
|
|
40
|
+
cookie: config.get("session:cookie"),
|
|
41
|
+
resave: true,
|
|
42
|
+
saveUninitialized: true,
|
|
43
|
+
store: InitSessionsMongo.createStore({
|
|
44
|
+
config,
|
|
45
|
+
master,
|
|
46
|
+
expressSession,
|
|
47
|
+
}),
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
await ADDS.run("sessions.post", { config, options, master });
|
|
51
|
+
}
|
|
39
52
|
};
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
const log = require(
|
|
2
|
-
const ADDS = require(
|
|
1
|
+
const log = require("not-log")(module, "not-node//init");
|
|
2
|
+
const ADDS = require("../additional");
|
|
3
3
|
|
|
4
|
-
const DEFAULT_CLIENT =
|
|
5
|
-
|
|
6
|
-
module.exports = class InitSessionsRedis{
|
|
7
|
-
async run({config, options, master}) {
|
|
8
|
-
log.info('Setting up user sessions handler(redis)...');
|
|
9
|
-
await ADDS.run('sessions.pre', {config, options, master});
|
|
10
|
-
const expressSession = require('express-session');
|
|
11
|
-
const storeClient = config.get('session.client', DEFAULT_CLIENT);
|
|
12
|
-
const redisClient = master.getEnv(`db.${storeClient}`);
|
|
13
|
-
const redisStore = require('connect-redis')(expressSession);
|
|
14
|
-
master.getServer().use(expressSession({
|
|
15
|
-
secret: config.get('session.secret'),
|
|
16
|
-
key: config.get('session.key'),
|
|
17
|
-
cookie: config.get('session.cookie'),
|
|
18
|
-
resave: false,
|
|
19
|
-
saveUninitialized: true,
|
|
20
|
-
store: new redisStore({
|
|
21
|
-
host: 'localhost',
|
|
22
|
-
port: 6379,
|
|
23
|
-
client: redisClient,
|
|
24
|
-
ttl: 86400
|
|
25
|
-
})
|
|
26
|
-
}));
|
|
27
|
-
await ADDS.run('sessions.post', {config, options, master});
|
|
28
|
-
}
|
|
4
|
+
const DEFAULT_CLIENT = "ioredis";
|
|
29
5
|
|
|
6
|
+
module.exports = class InitSessionsRedis {
|
|
7
|
+
async run({ config, options, master }) {
|
|
8
|
+
log.info("Setting up user sessions handler(redis)...");
|
|
9
|
+
await ADDS.run("sessions.pre", { config, options, master });
|
|
10
|
+
const expressSession = require("express-session");
|
|
11
|
+
const storeClient = config.get("session.client", DEFAULT_CLIENT);
|
|
12
|
+
const redisClient = master.getEnv(`db.${storeClient}`);
|
|
13
|
+
const redisStore = require("connect-redis")(expressSession);
|
|
14
|
+
master.getServer().use(
|
|
15
|
+
expressSession({
|
|
16
|
+
secret: config.get("session.secret"),
|
|
17
|
+
key: config.get("session.key"),
|
|
18
|
+
cookie: config.get("session.cookie"),
|
|
19
|
+
resave: false,
|
|
20
|
+
saveUninitialized: true,
|
|
21
|
+
store: new redisStore({
|
|
22
|
+
host: "localhost",
|
|
23
|
+
port: 6379,
|
|
24
|
+
client: redisClient,
|
|
25
|
+
ttl: 86400,
|
|
26
|
+
}),
|
|
27
|
+
})
|
|
28
|
+
);
|
|
29
|
+
await ADDS.run("sessions.post", { config, options, master });
|
|
30
|
+
}
|
|
30
31
|
};
|
package/src/init/static.js
CHANGED
|
@@ -1,50 +1,63 @@
|
|
|
1
|
+
const path = require("path");
|
|
1
2
|
|
|
2
|
-
const
|
|
3
|
+
const ADDS = require("./additional");
|
|
3
4
|
|
|
4
|
-
const
|
|
5
|
+
const DEFAULT_ROLES = ["root", "admin", "client", "user", "guest"];
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
module.exports = class InitStatic {
|
|
8
|
+
static serveStatic = require("serve-static");
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return req.user.role;
|
|
15
|
-
}else{
|
|
16
|
-
return 'guest';
|
|
10
|
+
static getUserRole(req) {
|
|
11
|
+
if (req.user && req.user.role) {
|
|
12
|
+
return req.user.role;
|
|
13
|
+
} else {
|
|
14
|
+
return "guest";
|
|
15
|
+
}
|
|
17
16
|
}
|
|
18
|
-
}
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
static selectVersion(config, req, ext) {
|
|
19
|
+
const rolesPriority =
|
|
20
|
+
config.get("user:roles:priority") || DEFAULT_ROLES;
|
|
21
|
+
const userRole = InitStatic.getUserRole(req);
|
|
22
|
+
const frontAppRoot = config.get("path:front");
|
|
23
|
+
for (let role of rolesPriority) {
|
|
24
|
+
if (userRole.indexOf(role) > -1) {
|
|
25
|
+
return path.join(frontAppRoot, `${role}.${ext}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return path.join(frontAppRoot, `guest.${ext}`);
|
|
28
29
|
}
|
|
29
|
-
return path.join(frontAppRoot, `guest.${ext}`);
|
|
30
|
-
}
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
static createStaticFrontServer(ext, { config, options /*, master*/ }) {
|
|
32
|
+
return (req, res, next) => {
|
|
33
|
+
try {
|
|
34
|
+
const frontApp = InitStatic.selectVersion(config, req, ext);
|
|
35
|
+
let pathTo = path.resolve(options.pathToApp, frontApp);
|
|
36
|
+
return InitStatic.serveStatic(pathTo)(req, res, next);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
next(e);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
async run({ config, options, master }) {
|
|
44
|
+
await ADDS.run("static.pre", { config, options, master });
|
|
45
|
+
master.getServer().use(
|
|
46
|
+
"/front/(:role).js",
|
|
47
|
+
InitStatic.createStaticFrontServer("js", {
|
|
48
|
+
config,
|
|
49
|
+
options,
|
|
50
|
+
master,
|
|
51
|
+
})
|
|
52
|
+
);
|
|
53
|
+
master.getServer().use(
|
|
54
|
+
"/front/(:role).css",
|
|
55
|
+
InitStatic.createStaticFrontServer("css", {
|
|
56
|
+
config,
|
|
57
|
+
options,
|
|
58
|
+
master,
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
await ADDS.run("static.post", { config, options, master });
|
|
62
|
+
}
|
|
50
63
|
};
|
package/src/init/template.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
const log = require(
|
|
2
|
-
const ADDS = require(
|
|
1
|
+
const log = require("not-log")(module, "not-node//init");
|
|
2
|
+
const ADDS = require("./additional");
|
|
3
3
|
|
|
4
4
|
const DEFAULT = {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
views: "views",
|
|
6
|
+
engine: "pug",
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
module.exports = class InitTemplate{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
module.exports = class InitTemplate {
|
|
10
|
+
static loadConfig({ config }) {
|
|
11
|
+
let val = config.get("template");
|
|
12
|
+
return val || DEFAULT;
|
|
13
|
+
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
async run({ config, options, master }) {
|
|
16
|
+
const input = InitTemplate.loadConfig({ config });
|
|
17
|
+
log.info("Setting up template (" + input.engine + ") engine...");
|
|
18
|
+
await ADDS.run("template.pre", { config, options, master, input });
|
|
19
|
+
master.getServer().set("views", master.getAbsolutePath(input.views));
|
|
20
|
+
master.getServer().set("view engine", input.engine);
|
|
21
|
+
await ADDS.run("template.post", { config, options, master });
|
|
22
|
+
}
|
|
23
23
|
};
|