not-node 5.0.19 → 5.1.0

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 (128) hide show
  1. package/.eslintrc.json +1 -1
  2. package/bin/not-deploy.js +52 -0
  3. package/error.format +11 -0
  4. package/index.js +22 -18
  5. package/package.json +1 -1
  6. package/src/app.js +61 -58
  7. package/src/auth/abstract.js +17 -19
  8. package/src/auth/const.js +8 -12
  9. package/src/auth/fields.js +143 -124
  10. package/src/auth/index.js +14 -14
  11. package/src/auth/roles.js +64 -63
  12. package/src/auth/routes.js +89 -54
  13. package/src/auth/rules.js +63 -63
  14. package/src/auth/session.js +60 -62
  15. package/src/bootstrap/form.js +18 -0
  16. package/src/bootstrap/index.js +11 -0
  17. package/src/bootstrap/logic.js +50 -0
  18. package/src/bootstrap/model.js +15 -0
  19. package/src/bootstrap/route.js +139 -0
  20. package/src/common.js +86 -79
  21. package/src/core/fields/ID.js +6 -6
  22. package/src/core/fields/__closed.js +3 -3
  23. package/src/core/fields/__latest.js +3 -3
  24. package/src/core/fields/__version.js +3 -3
  25. package/src/core/fields/__versions.js +3 -3
  26. package/src/core/fields/_id.js +6 -6
  27. package/src/core/fields/active.js +9 -9
  28. package/src/core/fields/codeName.js +9 -9
  29. package/src/core/fields/createdAt.js +17 -17
  30. package/src/core/fields/default.js +9 -9
  31. package/src/core/fields/description.js +11 -11
  32. package/src/core/fields/email.js +9 -9
  33. package/src/core/fields/enabled.js +9 -9
  34. package/src/core/fields/expiredAt.js +16 -16
  35. package/src/core/fields/height.js +11 -11
  36. package/src/core/fields/ip.js +10 -10
  37. package/src/core/fields/objectId.js +10 -10
  38. package/src/core/fields/owner.js +13 -13
  39. package/src/core/fields/ownerModel.js +11 -11
  40. package/src/core/fields/price.js +11 -11
  41. package/src/core/fields/requiredObject.js +10 -10
  42. package/src/core/fields/session.js +10 -10
  43. package/src/core/fields/size.js +11 -11
  44. package/src/core/fields/telephone.js +9 -9
  45. package/src/core/fields/title.js +15 -15
  46. package/src/core/fields/updatedAt.js +17 -17
  47. package/src/core/fields/userId.js +11 -12
  48. package/src/core/fields/uuid.js +11 -11
  49. package/src/core/fields/validators/email.js +6 -4
  50. package/src/core/fields/validators/owner.js +6 -4
  51. package/src/core/fields/width.js +11 -11
  52. package/src/domain.js +435 -431
  53. package/src/env.js +23 -23
  54. package/src/error.js +20 -23
  55. package/src/exceptions/db.js +23 -0
  56. package/src/exceptions/http.js +43 -0
  57. package/src/fields/index.js +139 -121
  58. package/src/form/fabric.js +19 -24
  59. package/src/form/form.js +195 -186
  60. package/src/form/index.js +2 -2
  61. package/src/generic/index.js +2 -0
  62. package/src/generic/logic.js +595 -0
  63. package/src/generic/route.js +76 -0
  64. package/src/getApp.js +2 -0
  65. package/src/init/additional.js +7 -7
  66. package/src/init/app.js +75 -68
  67. package/src/init/bodyparser.js +14 -14
  68. package/src/init/compression.js +6 -7
  69. package/src/init/core.js +12 -12
  70. package/src/init/cors.js +22 -24
  71. package/src/init/db/index.js +41 -43
  72. package/src/init/db/ioredis.js +28 -20
  73. package/src/init/db/mongoose.js +42 -32
  74. package/src/init/db/redis.js +59 -48
  75. package/src/init/env.js +44 -36
  76. package/src/init/express.js +18 -21
  77. package/src/init/fileupload.js +8 -10
  78. package/src/init/http.js +65 -47
  79. package/src/init/index.js +141 -148
  80. package/src/init/informer.js +7 -9
  81. package/src/init/methodoverride.js +4 -6
  82. package/src/init/middleware.js +23 -26
  83. package/src/init/modules.js +4 -4
  84. package/src/init/monitoring.js +8 -8
  85. package/src/init/rateLimiter.js +53 -45
  86. package/src/init/routes.js +67 -69
  87. package/src/init/security.js +37 -33
  88. package/src/init/sequence.js +111 -107
  89. package/src/init/sequence.standart.js +54 -56
  90. package/src/init/sessions/index.js +21 -21
  91. package/src/init/sessions/mongoose.js +49 -36
  92. package/src/init/sessions/redis.js +28 -27
  93. package/src/init/static.js +53 -40
  94. package/src/init/template.js +17 -17
  95. package/src/lib.js +230 -200
  96. package/src/manifest/batchRunner.js +26 -25
  97. package/src/manifest/initializator/forms.js +24 -24
  98. package/src/manifest/initializator/index.js +8 -10
  99. package/src/manifest/initializator/manifests.js +45 -42
  100. package/src/manifest/initializator/models.js +37 -34
  101. package/src/manifest/manifest.filter.js +130 -97
  102. package/src/manifest/manifest.js +103 -77
  103. package/src/manifest/module.js +350 -360
  104. package/src/manifest/registrator/fields.js +90 -85
  105. package/src/manifest/registrator/forms.js +47 -47
  106. package/src/manifest/registrator/index.js +14 -16
  107. package/src/manifest/registrator/locales.js +17 -16
  108. package/src/manifest/registrator/logics.js +66 -64
  109. package/src/manifest/registrator/models.js +64 -62
  110. package/src/manifest/registrator/routes.js +171 -132
  111. package/src/manifest/registrator/routes.ws.js +109 -103
  112. package/src/manifest/route.js +216 -161
  113. package/src/model/buildValidator.js +53 -42
  114. package/src/model/default.js +304 -286
  115. package/src/model/enrich.js +69 -61
  116. package/src/model/increment.js +124 -137
  117. package/src/model/proto.js +179 -148
  118. package/src/model/routine.js +85 -76
  119. package/src/model/utils.js +33 -0
  120. package/src/model/versioning.js +148 -124
  121. package/src/obsolete.js +12 -8
  122. package/src/parser.js +29 -22
  123. package/src/repos.js +29 -31
  124. package/src/rollup.js +75 -65
  125. package/src/shell.helpers.js +28 -28
  126. package/static.js +31 -0
  127. package/src/manifest/module.models.js +0 -0
  128. 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
  };