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,6 +1,6 @@
1
- const log = require('not-log')(module, 'Auth');
2
- const CONST = require('./const');
3
- const ROLES = require('./roles');
1
+ const log = require("not-log")(module, "Auth");
2
+ const CONST = require("./const");
3
+ const ROLES = require("./roles");
4
4
 
5
5
  /**
6
6
  * Checks if user is authenticated, by searching req.session.user
@@ -9,12 +9,12 @@ const ROLES = require('./roles');
9
9
  **/
10
10
 
11
11
  function isUser(req) {
12
- return (req && req.session && req.session.user) ? true : false;
12
+ return req && req.session && req.session.user ? true : false;
13
13
  }
14
14
 
15
15
  function ifUser(req) {
16
- log.error('ifUser is obsolete, use new version as isUser');
17
- return isUser(req);
16
+ log.error("ifUser is obsolete, use new version as isUser");
17
+ return isUser(req);
18
18
  }
19
19
 
20
20
  /**
@@ -23,7 +23,9 @@ function ifUser(req) {
23
23
  * @return user role
24
24
  **/
25
25
  function getRole(req) {
26
- return (req && req.session && req.session.role) ? req.session.role : undefined;
26
+ return req && req.session && req.session.role
27
+ ? req.session.role
28
+ : undefined;
27
29
  }
28
30
 
29
31
  /**
@@ -32,15 +34,15 @@ function getRole(req) {
32
34
  * @param {Array<string>} role array of roles
33
35
  **/
34
36
  function setRole(req, role) {
35
- if (req && req.session) {
36
- req.session.role = role;
37
- }
37
+ if (req && req.session) {
38
+ req.session.role = role;
39
+ }
38
40
  }
39
41
 
40
42
  function setId(req, _id) {
41
- log.error('setId is obsolete, use new version as setUserId');
42
- log.error(req.originalUrl);
43
- return setUserId(req, _id);
43
+ log.error("setId is obsolete, use new version as setUserId");
44
+ log.error(req.originalUrl);
45
+ return setUserId(req, _id);
44
46
  }
45
47
 
46
48
  /**
@@ -49,40 +51,39 @@ function setId(req, _id) {
49
51
  * @param {string} _id user id
50
52
  **/
51
53
  function setUserId(req, _id) {
52
- if (req && req.session) {
53
- req.session.user = _id;
54
- }
54
+ if (req && req.session) {
55
+ req.session.user = _id;
56
+ }
55
57
  }
56
58
 
57
-
58
59
  /**
59
60
  * Returns true if user is admin
60
61
  * @param {object} req Express Request object
61
62
  * @return {boolean} true - admin, false - not admin
62
63
  **/
63
64
  function ifAdmin(req) {
64
- log.error('ifAdmin is obsolete, use new version as isRoot');
65
- log.error(req.originalUrl);
66
- return isRoot(req);
65
+ log.error("ifAdmin is obsolete, use new version as isRoot");
66
+ log.error(req.originalUrl);
67
+ return isRoot(req);
67
68
  }
68
69
 
69
70
  function isRoot(req) {
70
- return isUser(req) && ROLES.compareRoles(getRole(req), CONST.DEFAULT_USER_ROLE_FOR_ADMIN);
71
+ return (
72
+ isUser(req) &&
73
+ ROLES.compareRoles(getRole(req), CONST.DEFAULT_USER_ROLE_FOR_ADMIN)
74
+ );
71
75
  }
72
76
 
73
-
74
-
75
-
76
77
  /**
77
78
  * Get user id for active session
78
79
  * @param {object} req Express Request
79
80
  **/
80
81
  function getUserId(req) {
81
- if(req && req.session){
82
- return req.session.user;
83
- }else{
84
- return undefined;
85
- }
82
+ if (req && req.session) {
83
+ return req.session.user;
84
+ } else {
85
+ return undefined;
86
+ }
86
87
  }
87
88
 
88
89
  /**
@@ -90,14 +91,13 @@ function getUserId(req) {
90
91
  * @param {object} req Express Request
91
92
  **/
92
93
  function getSessionId(req) {
93
- if(req && req.session && req.session.id){
94
- return req.session.id.toString();
95
- }else{
96
- return undefined;
97
- }
94
+ if (req && req.session && req.session.id) {
95
+ return req.session.id.toString();
96
+ } else {
97
+ return undefined;
98
+ }
98
99
  }
99
100
 
100
-
101
101
  /**
102
102
  * Set auth data in session, user id and role
103
103
  * @param {object} req Express Request
@@ -105,21 +105,20 @@ function getSessionId(req) {
105
105
  * @param {string} role user role
106
106
  **/
107
107
  function setAuth(req, id, role) {
108
- setUserId(req, id);
109
- setRole(req, role);
108
+ setUserId(req, id);
109
+ setRole(req, role);
110
110
  }
111
111
 
112
-
113
112
  /**
114
113
  * Set auth data in session to Guest
115
114
  * @param {object} req Express Request
116
115
  **/
117
116
  function setGuest(req) {
118
- if (req && req.session) {
119
- req.user = null;
120
- req.session.user = null;
121
- setRole(req, [CONST.DEFAULT_USER_ROLE_FOR_GUEST]);
122
- }
117
+ if (req && req.session) {
118
+ req.user = null;
119
+ req.session.user = null;
120
+ setRole(req, [CONST.DEFAULT_USER_ROLE_FOR_GUEST]);
121
+ }
123
122
  }
124
123
 
125
124
  /**
@@ -127,27 +126,26 @@ function setGuest(req) {
127
126
  * @param {object} req Express Request
128
127
  **/
129
128
  function cleanse(req) {
130
- if (req && req.session) {
131
- setGuest(req);
132
- if (req.session.destroy) {
133
- req.session.destroy();
129
+ if (req && req.session) {
130
+ setGuest(req);
131
+ if (req.session.destroy) {
132
+ req.session.destroy();
133
+ }
134
134
  }
135
- }
136
135
  }
137
136
 
138
-
139
137
  module.exports = {
140
- isUser,
141
- ifUser,
142
- ifAdmin,
143
- isRoot,
144
- getRole,
145
- setRole,
146
- setId,
147
- getUserId,
148
- setUserId,
149
- getSessionId,
150
- setAuth,
151
- setGuest,
152
- cleanse
138
+ isUser,
139
+ ifUser,
140
+ ifAdmin,
141
+ isRoot,
142
+ getRole,
143
+ setRole,
144
+ setId,
145
+ getUserId,
146
+ setUserId,
147
+ getSessionId,
148
+ setAuth,
149
+ setGuest,
150
+ cleanse,
153
151
  };
@@ -1,18 +1,18 @@
1
1
  const { getIP } = require("../auth"),
2
- configInit = require("not-config"),
3
- { sayForModule } = require("not-locale"),
4
- LogInit = require("not-log");
2
+ configInit = require("not-config"),
3
+ { sayForModule } = require("not-locale"),
4
+ LogInit = require("not-log");
5
5
 
6
6
  module.exports = ({ target, MODULE_NAME, MODEL_NAME, ACTION_NAME }) => {
7
- const Log = LogInit(target, `${MODEL_NAME}/Forms'`);
8
- const say = sayForModule(MODULE_NAME);
7
+ const Log = LogInit(target, `${MODEL_NAME}/Forms'`);
8
+ const say = sayForModule(MODULE_NAME);
9
9
 
10
- const config = configInit.readerForModule(MODULE_NAME);
11
- return {
12
- getIP,
13
- FORM_NAME: `${MODULE_NAME}:${ACTION_NAME}Form`,
14
- Log,
15
- say,
16
- config,
17
- };
10
+ const config = configInit.readerForModule(MODULE_NAME);
11
+ return {
12
+ getIP,
13
+ FORM_NAME: `${MODULE_NAME}:${ACTION_NAME}Form`,
14
+ Log,
15
+ say,
16
+ config,
17
+ };
18
18
  };
@@ -1,46 +1,50 @@
1
1
  const getApp = require("../getApp.js"),
2
- configInit = require("not-config"),
3
- {sayForModule, modulePhrase} = require('not-locale'),
4
- LogInit = require("not-log");
2
+ configInit = require("not-config"),
3
+ { sayForModule, modulePhrase } = require("not-locale"),
4
+ LogInit = require("not-log");
5
5
 
6
+ module.exports = ({
7
+ target,
8
+ MODULE_NAME,
9
+ MODEL_NAME,
10
+ USER_MODEL_NAME = "not-user//User",
11
+ }) => {
12
+ const Log = LogInit(target, `${MODULE_NAME}/Logic/${MODEL_NAME}`);
13
+ const say = sayForModule(MODULE_NAME);
14
+ const phrase = modulePhrase(MODULE_NAME);
15
+ const config = configInit.readerForModule(MODULE_NAME);
6
16
 
7
- module.exports = ({target, MODULE_NAME, MODEL_NAME, USER_MODEL_NAME = 'not-user//User'})=>{
17
+ const LogAction = ({ action, by, role, ip, root }, params = {}) => {
18
+ Log.log({
19
+ time: new Date(),
20
+ module: MODULE_NAME,
21
+ logic: MODEL_NAME,
22
+ action,
23
+ root,
24
+ by,
25
+ role,
26
+ ip,
27
+ params,
28
+ });
29
+ };
8
30
 
9
- const Log = LogInit(target, `${MODULE_NAME}/Logic/${MODEL_NAME}`);
10
- const say = sayForModule(MODULE_NAME);
11
- const phrase = modulePhrase(MODULE_NAME);
12
- const config = configInit.readerForModule(MODULE_NAME);
13
-
14
- const LogAction = ({action, by, role, ip}, params = {})=>{
15
- Log.log({
16
- time: new Date(),
17
- module: MODULE_NAME,
18
- logic: MODEL_NAME,
19
- action,
20
- by,
21
- role,
22
- ip,
23
- params
24
- });
25
- };
26
-
27
- return {
28
- Log,
29
- LogAction,
30
- say,
31
- phrase,
32
- config,
33
- getModel(){
34
- return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
35
- },
36
- getModelSchema(){
37
- return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
38
- },
39
- getLogic(){
40
- return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
41
- },
42
- getModelUser(){
43
- return getApp().getModel(USER_MODEL_NAME);
44
- }
45
- }
31
+ return {
32
+ Log,
33
+ LogAction,
34
+ say,
35
+ phrase,
36
+ config,
37
+ getModel() {
38
+ return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
39
+ },
40
+ getModelSchema() {
41
+ return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
42
+ },
43
+ getLogic() {
44
+ return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
45
+ },
46
+ getModelUser() {
47
+ return getApp().getModel(USER_MODEL_NAME);
48
+ },
49
+ };
46
50
  };
@@ -1,18 +1,15 @@
1
- const
2
- configInit = require("not-config"),
3
- { sayForModule } = require("not-locale"),
4
-
5
- LogInit = require("not-log");
6
-
7
- module.exports = ({ target, MODULE_NAME, MODEL_NAME}) => {
8
- const Log = LogInit(target, `${MODEL_NAME}/Models'`);
9
- const say = sayForModule(MODULE_NAME);
10
-
11
- const config = configInit.readerForModule(MODULE_NAME);
12
- return {
13
- Log,
14
- say,
15
- config
16
- };
17
-
1
+ const configInit = require("not-config"),
2
+ { sayForModule } = require("not-locale"),
3
+ LogInit = require("not-log");
4
+
5
+ module.exports = ({ target, MODULE_NAME, MODEL_NAME }) => {
6
+ const Log = LogInit(target, `${MODEL_NAME}/Models'`);
7
+ const say = sayForModule(MODULE_NAME);
8
+
9
+ const config = configInit.readerForModule(MODULE_NAME);
10
+ return {
11
+ Log,
12
+ say,
13
+ config,
14
+ };
18
15
  };
@@ -1,60 +1,139 @@
1
1
  const getApp = require("../getApp.js"),
2
- configInit = require("not-config"),
3
- { sayForModule } = require("not-locale"),
4
- { objHas } = require("../common"),
5
- LogInit = require("not-log");
2
+ HttpExceptions = require("../exceptions/http"),
3
+ configInit = require("not-config"),
4
+ { sayForModule } = require("not-locale"),
5
+ { objHas, isFunc, executeFunctionAsAsync } = require("../common"),
6
+ LogInit = require("not-log");
6
7
 
7
- module.exports = ({ target, MODULE_NAME, MODEL_NAME, USER_MODEL_NAME = 'not-user//User' }) => {
8
- const Log = LogInit(target, `${MODEL_NAME}/Routes'`);
9
- const say = sayForModule(MODULE_NAME);
8
+ module.exports = ({
9
+ target,
10
+ MODULE_NAME,
11
+ MODEL_NAME,
12
+ USER_MODEL_NAME = "not-user//User",
13
+ /***
14
+ * function signature
15
+ * (
16
+ * prepared: any, //data output from notForm extractor
17
+ * {
18
+ req, //ExpressRequest
19
+ Log, //dedicated Logger
20
+ say, //precondfigured 'say'
21
+ config, //precondfigured 'config' reader
22
+ MODULE_NAME, //context
23
+ MODEL_NAME, //
24
+ ACTION_NAME, //
25
+ USER_MODEL_NAME, //
26
+ },
27
+ *
28
+ * )=>{
29
+ * //pass if access rights is ok
30
+ * //or throw an exception if rights is no good
31
+ * }
32
+ */
33
+ accessRulesBuilders = {}, //per action builders, {actionName: (preapared: any, req: ExpressRequest)=>{/** pass or throw an exception **/ */}}
34
+ accessRuleBuilder = false, //universal will be used if no dedicated action builder was found
35
+ defaultAccessRule = false, //if builder is not found, safe by default
36
+ }) => {
37
+ const Log = LogInit(target, `${MODEL_NAME}/Routes'`);
38
+ const say = sayForModule(MODULE_NAME);
39
+ const config = configInit.readerForModule(MODULE_NAME);
10
40
 
11
- const beforeDecorator = async (req, res, next) => {
12
- const name = req.notRouteData.actionName;
13
- const FormValidator = getApp().getForm(
14
- [MODULE_NAME, name.replace("_", "")].join("//")
15
- );
16
- if (FormValidator) {
17
- return await FormValidator.run(req, res, next);
18
- } else {
19
- return {};
20
- }
21
- };
41
+ const excuteAccessRules = async (accessRulesBuilder, params) => {
42
+ //in case if one function
43
+ if (isFunc(accessRulesBuilder)) {
44
+ await executeFunctionAsAsync(accessRulesBuilder, params);
45
+ //if this is array of functions
46
+ } else if (Array.isArray(accessRulesBuilder)) {
47
+ const checks = accessRulesBuilder.map((proc) => {
48
+ return executeFunctionAsAsync(proc, params);
49
+ });
50
+ await Promise.all(checks);
51
+ }
52
+ };
53
+ /**
54
+ * access rights check
55
+ */
56
+ const checkAccessRules = async (actionName, prepared, req) => {
57
+ const params = [
58
+ prepared,
59
+ {
60
+ req,
61
+ Log,
62
+ say,
63
+ config,
64
+ MODULE_NAME,
65
+ MODEL_NAME,
66
+ ACTION_NAME: actionName,
67
+ USER_MODEL_NAME,
68
+ },
69
+ ];
70
+ if (accessRulesBuilders && objHas(accessRulesBuilders, actionName)) {
71
+ const actionAccessRules = accessRulesBuilders[actionName];
72
+ await excuteAccessRules(actionAccessRules, params);
73
+ }
74
+ if (accessRuleBuilder) {
75
+ await excuteAccessRules(accessRuleBuilder, params);
76
+ }
77
+ if (!defaultAccessRule) {
78
+ throw new HttpExceptions.HttpExceptionForbidden();
79
+ }
80
+ };
22
81
 
23
- const afterDecorator = (req, res, next, result) => {
24
- const name = req.notRouteData.actionName;
25
- if (res.headersSent) {
26
- return;
27
- }
28
- if (result && objHas(result, "__redirect__")) {
29
- res.status(200).redirect(result.__redirect__);
30
- } else {
31
- res.status(200).json({
32
- status: "ok",
33
- message: say(`action_message_${name}_success`, {}, res.locals.locale),
34
- result,
35
- });
36
- }
37
- };
82
+ const beforeDecorator = async (req, res, next) => {
83
+ const actionName = req.notRouteData.actionName;
84
+ const trimmedActionName = actionName.replace("_", "");
85
+ const FormValidator = getApp().getForm(
86
+ [MODULE_NAME, trimmedActionName].join("//")
87
+ );
88
+ if (FormValidator) {
89
+ const prepared = await FormValidator.run(req, res, next);
90
+ checkAccessRules(trimmedActionName, prepared);
91
+ return prepared;
92
+ } else {
93
+ return {};
94
+ }
95
+ };
38
96
 
39
- const config = configInit.readerForModule(MODULE_NAME);
40
- return {
41
- before: beforeDecorator,
42
- after: afterDecorator,
43
- Log,
44
- say,
45
- config,
46
- getModel() {
47
- return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
48
- },
49
- getModelSchema() {
50
- return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
51
- },
52
- getLogic() {
53
- return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
54
- },
55
- getModelUser(){
56
- return getApp().getModel(USER_MODEL_NAME);
57
- }
58
- };
97
+ const afterDecorator = (req, res, next, result) => {
98
+ const name = req.notRouteData.actionName;
99
+ if (res.headersSent) {
100
+ return;
101
+ }
102
+ if (result && objHas(result, "__redirect__")) {
103
+ res.status(200).redirect(result.__redirect__);
104
+ } else {
105
+ res.status(200).json({
106
+ status: "ok",
107
+ message: say(
108
+ `action_message_${name}_success`,
109
+ {},
110
+ res.locals.locale
111
+ ),
112
+ result,
113
+ });
114
+ }
115
+ };
59
116
 
117
+ return {
118
+ MODULE_NAME,
119
+ MODEL_NAME,
120
+ before: beforeDecorator,
121
+ after: afterDecorator,
122
+ checkAccessRules,
123
+ Log,
124
+ say,
125
+ config,
126
+ getModel() {
127
+ return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
128
+ },
129
+ getModelSchema() {
130
+ return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
131
+ },
132
+ getLogic() {
133
+ return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
134
+ },
135
+ getModelUser() {
136
+ return getApp().getModel(USER_MODEL_NAME);
137
+ },
138
+ };
60
139
  };