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.
Files changed (126) hide show
  1. package/.eslintrc.json +1 -1
  2. package/bin/not-deploy.js +52 -0
  3. package/index.js +21 -19
  4. package/package.json +1 -1
  5. package/src/app.js +61 -58
  6. package/src/auth/abstract.js +17 -19
  7. package/src/auth/const.js +8 -12
  8. package/src/auth/fields.js +143 -124
  9. package/src/auth/index.js +14 -14
  10. package/src/auth/roles.js +64 -63
  11. package/src/auth/routes.js +89 -54
  12. package/src/auth/rules.js +63 -63
  13. package/src/auth/session.js +60 -62
  14. package/src/bootstrap/form.js +13 -13
  15. package/src/bootstrap/logic.js +45 -41
  16. package/src/bootstrap/model.js +14 -17
  17. package/src/bootstrap/route.js +132 -53
  18. package/src/common.js +86 -79
  19. package/src/core/fields/ID.js +6 -6
  20. package/src/core/fields/__closed.js +3 -3
  21. package/src/core/fields/__latest.js +3 -3
  22. package/src/core/fields/__version.js +3 -3
  23. package/src/core/fields/__versions.js +3 -3
  24. package/src/core/fields/_id.js +6 -6
  25. package/src/core/fields/active.js +9 -9
  26. package/src/core/fields/codeName.js +9 -9
  27. package/src/core/fields/createdAt.js +17 -17
  28. package/src/core/fields/default.js +9 -9
  29. package/src/core/fields/description.js +11 -11
  30. package/src/core/fields/email.js +9 -9
  31. package/src/core/fields/enabled.js +9 -9
  32. package/src/core/fields/expiredAt.js +16 -16
  33. package/src/core/fields/height.js +11 -11
  34. package/src/core/fields/ip.js +10 -10
  35. package/src/core/fields/objectId.js +10 -10
  36. package/src/core/fields/owner.js +13 -13
  37. package/src/core/fields/ownerModel.js +11 -11
  38. package/src/core/fields/price.js +11 -11
  39. package/src/core/fields/requiredObject.js +10 -10
  40. package/src/core/fields/session.js +10 -10
  41. package/src/core/fields/size.js +11 -11
  42. package/src/core/fields/telephone.js +9 -9
  43. package/src/core/fields/title.js +15 -15
  44. package/src/core/fields/updatedAt.js +17 -17
  45. package/src/core/fields/userId.js +11 -12
  46. package/src/core/fields/uuid.js +11 -11
  47. package/src/core/fields/validators/email.js +6 -4
  48. package/src/core/fields/validators/owner.js +6 -4
  49. package/src/core/fields/width.js +11 -11
  50. package/src/domain.js +435 -431
  51. package/src/env.js +23 -23
  52. package/src/error.js +20 -23
  53. package/src/exceptions/db.js +23 -0
  54. package/src/exceptions/http.js +43 -0
  55. package/src/fields/index.js +106 -111
  56. package/src/form/fabric.js +19 -24
  57. package/src/form/form.js +195 -186
  58. package/src/form/index.js +2 -2
  59. package/src/generic/index.js +2 -0
  60. package/src/generic/logic.js +595 -0
  61. package/src/generic/route.js +76 -0
  62. package/src/init/additional.js +7 -7
  63. package/src/init/app.js +75 -68
  64. package/src/init/bodyparser.js +14 -14
  65. package/src/init/compression.js +6 -7
  66. package/src/init/core.js +12 -12
  67. package/src/init/cors.js +22 -24
  68. package/src/init/db/index.js +41 -43
  69. package/src/init/db/ioredis.js +28 -20
  70. package/src/init/db/mongoose.js +42 -32
  71. package/src/init/db/redis.js +59 -48
  72. package/src/init/env.js +44 -36
  73. package/src/init/express.js +18 -21
  74. package/src/init/fileupload.js +8 -10
  75. package/src/init/http.js +65 -47
  76. package/src/init/index.js +141 -148
  77. package/src/init/informer.js +7 -9
  78. package/src/init/methodoverride.js +4 -6
  79. package/src/init/middleware.js +23 -26
  80. package/src/init/modules.js +4 -4
  81. package/src/init/monitoring.js +8 -8
  82. package/src/init/rateLimiter.js +53 -45
  83. package/src/init/routes.js +67 -69
  84. package/src/init/security.js +37 -33
  85. package/src/init/sequence.js +111 -107
  86. package/src/init/sequence.standart.js +54 -56
  87. package/src/init/sessions/index.js +21 -21
  88. package/src/init/sessions/mongoose.js +49 -36
  89. package/src/init/sessions/redis.js +28 -27
  90. package/src/init/static.js +53 -40
  91. package/src/init/template.js +17 -17
  92. package/src/lib.js +230 -200
  93. package/src/manifest/batchRunner.js +26 -25
  94. package/src/manifest/initializator/forms.js +24 -24
  95. package/src/manifest/initializator/index.js +8 -10
  96. package/src/manifest/initializator/manifests.js +45 -42
  97. package/src/manifest/initializator/models.js +37 -34
  98. package/src/manifest/manifest.filter.js +130 -97
  99. package/src/manifest/manifest.js +103 -77
  100. package/src/manifest/module.js +350 -360
  101. package/src/manifest/registrator/fields.js +90 -85
  102. package/src/manifest/registrator/forms.js +47 -47
  103. package/src/manifest/registrator/index.js +14 -16
  104. package/src/manifest/registrator/locales.js +17 -16
  105. package/src/manifest/registrator/logics.js +66 -64
  106. package/src/manifest/registrator/models.js +64 -62
  107. package/src/manifest/registrator/routes.js +171 -132
  108. package/src/manifest/registrator/routes.ws.js +109 -103
  109. package/src/manifest/route.js +216 -161
  110. package/src/model/buildValidator.js +53 -42
  111. package/src/model/default.js +304 -286
  112. package/src/model/enrich.js +69 -61
  113. package/src/model/increment.js +124 -137
  114. package/src/model/proto.js +179 -148
  115. package/src/model/routine.js +85 -76
  116. package/src/model/utils.js +33 -0
  117. package/src/model/versioning.js +148 -130
  118. package/src/obsolete.js +12 -8
  119. package/src/parser.js +29 -22
  120. package/src/repos.js +29 -31
  121. package/src/rollup.js +75 -65
  122. package/src/shell.helpers.js +28 -28
  123. package/static.js +31 -0
  124. package/src/generic/router.js +0 -16
  125. package/src/manifest/module.models.js +0 -0
  126. package/src/manifest/module.status.js +0 -0
@@ -1,60 +1,58 @@
1
-
2
- const initEnv = require('./env');
3
- const initDB = require('./db');
4
- const initExpress = require('./express');
5
- const initCompression = require('./compression');
6
- const initSecurity = require('./security');
7
- const initBodyparser = require('./bodyparser');
8
- const initMethodOverride = require('./methodoverride');
9
- const initFileupload = require('./fileupload');
10
- const initNotApp = require('./app');
11
- const initSessions = require('./sessions');
12
- const initTemplate = require('./template');
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('./middleware');
16
- const initStatic = require('./static');
17
- const initRoutes = require('./routes');
18
- const initRateLimiter = require('./rateLimiter');
19
- const initModules = require('./modules');
20
- const initInformer = require('./informer');
21
- const initHTTP = require('./http');
22
- const initMonitoring = require('./monitoring');
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
- //creating set of variables derived from basic ones,
26
- //such as various paths, server names and URIs
27
- initEnv,
28
- //DB access drivers
29
- initDB,
30
- //http(s) server
31
- initExpress,
32
- initRateLimiter,
33
- //CSP security directives
34
- initSecurity,
35
- //gzip compression
36
- initCompression,
37
- initFileupload,
38
- initBodyparser,
39
- initMethodOverride,
40
- //not-node core
41
- initNotApp,
42
- //init various resources like common object fields descriptions and locales
43
- //initCore,
44
- //user sessions
45
- initSessions,
46
- //template engine
47
- initTemplate,
48
- //CORS rules
49
- initCORS,
50
- //various not-* middleware from all sources
51
- initMiddleware,
52
- initStatic,
53
- initRoutes,
54
- initModules,
55
- //messaging platform
56
- initInformer,
57
- initHTTP,
58
- initMonitoring,
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
- module.exports = class InitSessions{
4
- /**
5
- * Returns constructor of Session driver
6
- * @param {Object} conf configuration os session from application config
7
- * @param {string} conf.driver name of session storage engine
8
- * @return {Object} class constructor or undefined
9
- **/
10
- static getConstructor(conf){
11
- switch(conf.driver){
12
- case 'redis': return require('./redis.js');
13
- case 'mongoose': return require('./mongoose.js');
14
- default: return require('./mongoose.js');
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('not-error');
2
- const log = require('not-log')(module, 'not-node//init');
3
- const ADDS = require('../additional');
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
- 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.getApp().report(new notError('User sessions storage connection failed', {}, error));
20
- });
21
- return store;
22
- }
23
-
24
- async run({config, options, master}) {
25
- const expressSession = require('express-session');
26
- log.info('Setting up user sessions handler(mongoose)...');
27
- await ADDS.run('sessions.pre', {config, options, master});
28
- master.getServer().use(expressSession({
29
- secret: config.get('session:secret'),
30
- key: config.get('session:key'),
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('not-log')(module, 'not-node//init');
2
- const ADDS = require('../additional');
1
+ const log = require("not-log")(module, "not-node//init");
2
+ const ADDS = require("../additional");
3
3
 
4
- const DEFAULT_CLIENT = 'ioredis';
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
  };
@@ -1,50 +1,63 @@
1
+ const path = require("path");
1
2
 
2
- const path = require('path');
3
+ const ADDS = require("./additional");
3
4
 
4
- const ADDS = require('./additional');
5
+ const DEFAULT_ROLES = ["root", "admin", "client", "user", "guest"];
5
6
 
6
- const DEFAULT_ROLES = ['root', 'admin', 'client', 'user', 'guest'];
7
+ module.exports = class InitStatic {
8
+ static serveStatic = require("serve-static");
7
9
 
8
- module.exports = class InitStatic{
9
-
10
- static serveStatic = require('serve-static');
11
-
12
- static getUserRole(req){
13
- if(req.user && req.user.role){
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
- static selectVersion(config, req, ext){
21
- const rolesPriority = config.get('user:roles:priority') || DEFAULT_ROLES;
22
- const userRole = InitStatic.getUserRole(req);
23
- const frontAppRoot = config.get('path:front');
24
- for (let role of rolesPriority) {
25
- if (userRole.indexOf(role) > -1) {
26
- return path.join(frontAppRoot, `${role}.${ext}`);
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
- static createStaticFrontServer(ext, {config, options/*, master*/}){
33
- return (req, res, next) => {
34
- try{
35
- const frontApp = InitStatic.selectVersion(config, req, ext);
36
- let pathTo = path.resolve(options.pathToApp, frontApp);
37
- return InitStatic.serveStatic(pathTo)(req, res, next);
38
- }catch(e){
39
- next(e);
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
- async run({config, options, master}) {
45
- await ADDS.run('static.pre', { config, options, master });
46
- master.getServer().use('/front/(:role).js', InitStatic.createStaticFrontServer('js', {config, options, master}));
47
- master.getServer().use('/front/(:role).css', InitStatic.createStaticFrontServer('css', {config, options, master}));
48
- await ADDS.run('static.post', { config, options, master });
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
  };
@@ -1,23 +1,23 @@
1
- const log = require('not-log')(module, 'not-node//init');
2
- const ADDS = require('./additional');
1
+ const log = require("not-log")(module, "not-node//init");
2
+ const ADDS = require("./additional");
3
3
 
4
4
  const DEFAULT = {
5
- views: 'views',
6
- engine: 'pug'
5
+ views: "views",
6
+ engine: "pug",
7
7
  };
8
8
 
9
- module.exports = class InitTemplate{
10
- static loadConfig({config}){
11
- let val = config.get('template');
12
- return val || DEFAULT;
13
- }
9
+ module.exports = class InitTemplate {
10
+ static loadConfig({ config }) {
11
+ let val = config.get("template");
12
+ return val || DEFAULT;
13
+ }
14
14
 
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
- }
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
  };