not-node 4.0.21 → 5.0.3

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 (72) hide show
  1. package/.eslintrc.json +2 -7
  2. package/.idea/codeStyles/Project.xml +16 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/project.iml +12 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/.idea/workspace.xml +24 -0
  9. package/package.json +20 -20
  10. package/src/app.js +2 -2
  11. package/src/common.js +5 -1
  12. package/src/core/config.json +2 -16
  13. package/src/core/fields/ID.js +2 -2
  14. package/src/core/fields/__closed.js +5 -0
  15. package/src/core/fields/__latest.js +5 -0
  16. package/src/core/fields/__version.js +5 -0
  17. package/src/core/fields/__versions.js +5 -0
  18. package/src/core/fields/active.js +1 -1
  19. package/src/core/fields/codeName.js +2 -2
  20. package/src/core/fields/createdAt.js +2 -2
  21. package/src/core/fields/default.js +1 -1
  22. package/src/core/fields/description.js +2 -2
  23. package/src/core/fields/email.js +11 -0
  24. package/src/core/fields/enabled.js +1 -1
  25. package/src/core/fields/expiredAt.js +2 -2
  26. package/src/core/fields/height.js +2 -2
  27. package/src/core/fields/ip.js +2 -2
  28. package/src/core/fields/objectId.js +13 -0
  29. package/src/core/fields/owner.js +3 -0
  30. package/src/core/fields/ownerModel.js +3 -0
  31. package/src/core/fields/price.js +2 -2
  32. package/src/core/fields/session.js +2 -2
  33. package/src/core/fields/size.js +2 -2
  34. package/src/core/fields/telephone.js +11 -0
  35. package/src/core/fields/title.js +2 -2
  36. package/src/core/fields/updatedAt.js +2 -2
  37. package/src/core/fields/userId.js +2 -2
  38. package/src/core/fields/uuid.js +2 -2
  39. package/src/core/fields/validators/email.js +4 -0
  40. package/src/core/fields/validators/owner.js +1 -1
  41. package/src/core/fields/width.js +2 -2
  42. package/src/core/index.js +6 -0
  43. package/src/core/locales/en.json +6 -0
  44. package/src/core/locales/ru.json +6 -0
  45. package/src/domain.js +71 -48
  46. package/src/fields/.old.js +193 -0
  47. package/src/fields/index.js +114 -100
  48. package/src/form/form.js +138 -35
  49. package/src/init/app.js +8 -1
  50. package/src/init/db/ioredis.js +0 -1
  51. package/src/init/index.js +4 -3
  52. package/src/init/layers/fields.js +7 -0
  53. package/src/init/layers/forms.js +0 -0
  54. package/src/init/layers/models.js +0 -0
  55. package/src/init/layers/routes.js +0 -0
  56. package/src/init/sequence.standart.js +3 -3
  57. package/src/manifest/batchRunner.js +33 -0
  58. package/src/manifest/initializator/forms.js +30 -0
  59. package/src/manifest/initializator/index.js +24 -0
  60. package/src/manifest/initializator/manifests.js +47 -0
  61. package/src/manifest/initializator/models.js +39 -0
  62. package/src/manifest/module.js +55 -29
  63. package/src/manifest/registrator/fields.js +17 -16
  64. package/src/manifest/registrator/forms.js +2 -2
  65. package/src/manifest/registrator/index.js +3 -27
  66. package/src/manifest/registrator/locales.js +1 -1
  67. package/src/manifest/registrator/logics.js +3 -3
  68. package/src/manifest/registrator/models.js +3 -3
  69. package/src/manifest/registrator/routes.js +1 -1
  70. package/src/model/enrich.js +4 -4
  71. package/src/model/proto.js +0 -1
  72. package/test/notApp.js +2 -2
package/.eslintrc.json CHANGED
@@ -1,5 +1,4 @@
1
1
  {
2
- "parser": "@babel/eslint-parser",
3
2
  "parserOptions": {
4
3
  "requireConfigFile": false,
5
4
  "sourceType": "module",
@@ -7,7 +6,7 @@
7
6
  "ecmaFeatures": {
8
7
  "globalReturn": false
9
8
  },
10
- "ecmaVersion": 2020
9
+ "ecmaVersion": "latest"
11
10
  },
12
11
  "env": {
13
12
  "es6": true,
@@ -18,10 +17,8 @@
18
17
  "extends": [
19
18
  "eslint:recommended",
20
19
  "plugin:node/recommended",
21
- "plugin:sonarjs/recommended",
22
- "plugin:promise/recommended"
20
+ "plugin:sonarjs/recommended"
23
21
  ],
24
- "plugins": ["promise"],
25
22
  "rules": {
26
23
  "node/exports-style": ["error", "module.exports"],
27
24
  "node/file-extension-in-import": ["error", "always"],
@@ -30,8 +27,6 @@
30
27
  "node/prefer-global/process": ["error", "always"],
31
28
  "node/prefer-global/url-search-params": ["error", "always"],
32
29
  "node/prefer-global/url": ["error", "always"],
33
- "node/prefer-promises/dns": "error",
34
- "node/prefer-promises/fs": "error",
35
30
  "node/no-unpublished-require": "warn",
36
31
  "indent": ["error", 2],
37
32
  "linebreak-style": [
@@ -0,0 +1,16 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <code_scheme name="Project" version="173">
3
+ <JSCodeStyleSettings version="0">
4
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
5
+ </JSCodeStyleSettings>
6
+ <codeStyleSettings language="JavaScript">
7
+ <option name="INDENT_CASE_FROM_SWITCH" value="false" />
8
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
9
+ <option name="ALIGN_MULTILINE_FOR" value="false" />
10
+ <indentOptions>
11
+ <option name="INDENT_SIZE" value="2" />
12
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
13
+ </indentOptions>
14
+ </codeStyleSettings>
15
+ </code_scheme>
16
+ </component>
@@ -0,0 +1,5 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <state>
3
+ <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
+ </state>
5
+ </component>
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
+ </profile>
6
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/project.iml" filepath="$PROJECT_DIR$/.idea/project.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
7
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
+ </content>
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ </component>
12
+ </module>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="74929b6a-6f9b-4d33-bcd5-317dea0a2db1" name="Changes" comment="" />
5
+ <option name="SHOW_DIALOG" value="false" />
6
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
7
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
8
+ <option name="LAST_RESOLUTION" value="IGNORE" />
9
+ </component>
10
+ <component name="Git.Settings">
11
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
12
+ </component>
13
+ <component name="ProjectId" id="22q8JXHHJZy9UWkJAROmOSSPtVz" />
14
+ <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
15
+ <component name="PropertiesComponent">
16
+ <property name="node.js.detected.package.eslint" value="true" />
17
+ <property name="node.js.selected.package.eslint" value="(autodetect)" />
18
+ <property name="vue.rearranger.settings.migration" value="true" />
19
+ </component>
20
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
21
+ <component name="TypeScriptGeneratedFilesManager">
22
+ <option name="version" value="3" />
23
+ </component>
24
+ </project>
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "not-node",
3
- "version": "4.0.21",
3
+ "version": "5.0.3",
4
4
  "description": "node complimentary part for client side notFramework.",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "test": "./node_modules/.bin/mocha --require mocha-suppress-logs --reporter spec --timeout 12000",
8
- "lint": "./node_modules/.bin/eslint ./src/**/**/**/**.js --fix",
9
- "pretest": "./node_modules/.bin/eslint ./src/**/**/**/**.js",
8
+ "lint": "./node_modules/.bin/eslint ./src --fix",
9
+ "pretest": "./node_modules/.bin/eslint ./src",
10
10
  "docs": "./node_modules/.bin/jsdoc -c jsdoc.json",
11
11
  "js-watch": "watch 'npm run cover' ./src ./test --interval=5",
12
12
  "watch:build:cover:dev": "npm-run-all --parallel js-watch",
@@ -33,60 +33,60 @@
33
33
  "url": "https://github.com/interrupter/not-node/issues"
34
34
  },
35
35
  "dependencies": {
36
- "body-parser": "^1.19.0",
36
+ "body-parser": "^1.20.0",
37
37
  "compression": "^1.7.4",
38
38
  "connect-mongodb-session": "^3.1.1",
39
- "connect-redis": "^6.0.0",
39
+ "connect-redis": "^6.1.3",
40
40
  "cors": "^2.8.5",
41
41
  "deep-diff": "*",
42
42
  "deepmerge": "^4.2.2",
43
43
  "ejs": "^3.1.6",
44
44
  "escape-string-regexp": "*",
45
- "express": "^4.17.1",
46
- "express-fileupload": "^1.2.1",
45
+ "express": "^4.17.3",
46
+ "express-fileupload": "^1.3.1",
47
47
  "express-session": "^1.17.2",
48
48
  "fs-extra": "*",
49
- "helmet": "^4.6.0",
49
+ "helmet": "^5.0.2",
50
50
  "lower-case": "*",
51
51
  "method-override": "^3.0.0",
52
52
  "mock-require": "^3.0.3",
53
53
  "mongoose": "*",
54
54
  "mongoose-validator": "*",
55
55
  "nconf": "*",
56
- "not-config": "^0.1.4",
57
- "not-error": "^0.2.1",
56
+ "not-config": "^0.1.5",
57
+ "not-error": "^0.2.5",
58
58
  "not-filter": "*",
59
- "not-inform": "^0.0.27",
59
+ "not-inform": "^0.0.28",
60
60
  "not-locale": "*",
61
61
  "not-log": "^0.0.20",
62
62
  "not-monitor": "^0.0.13",
63
63
  "not-path": "*",
64
+ "not-validation": "^0.0.7",
64
65
  "rate-limiter-flexible": "^2.3.6",
65
- "redis": "^4.0.0",
66
+ "redis": "^4.0.6",
66
67
  "rfdc": "^1.3.0",
67
68
  "rmdir": "^1.2.0",
68
69
  "serve-static": "*",
69
70
  "simple-git": "*",
71
+ "validator": "*",
70
72
  "yargs": "*"
71
73
  },
72
74
  "devDependencies": {
73
- "@babel/eslint-parser": "^7.16.3",
74
75
  "babel-eslint": "^10.1.0",
75
76
  "chai": "*",
76
77
  "chai-as-promised": "*",
77
- "eslint": "^7.0.0",
78
+ "eslint": "^8.12.0",
78
79
  "eslint-plugin-node": "^11.1.0",
79
- "eslint-plugin-promise": "^5.2.0",
80
- "eslint-plugin-sonarjs": "^0.11.0",
80
+ "eslint-plugin-sonarjs": "^0.13.0",
81
81
  "ink-docstrap": "^1.3.2",
82
- "ioredis": "^4.28.2",
83
- "jsdoc": "^3.6.7",
82
+ "ioredis": "^5.0.3",
83
+ "jsdoc": "^3.6.10",
84
84
  "mocha": "*",
85
85
  "mocha-suppress-logs": "^0.3.1",
86
- "mongodb-memory-server": "^8.0.4",
86
+ "mongodb-memory-server": "^8.4.2",
87
87
  "npm-run-all": "^4.1.5",
88
88
  "nyc": "^15.1.0",
89
- "retire": "^3.0.3"
89
+ "retire": "^3.0.6"
90
90
  },
91
91
  "homepage": "https://github.com/interrupter/not-node#readme",
92
92
  "nyc": {
package/src/app.js CHANGED
@@ -61,8 +61,8 @@ class notApp extends notDomain {
61
61
  **/
62
62
  collectManifest(creds){
63
63
  let manifest = {};
64
- for (let modName of Object.keys(this.modules)) {
65
- manifest = merge(manifest, this.modules[modName].getManifest(creds));
64
+ for (let modName of this.getModulesNames()) {
65
+ manifest = merge(manifest, this.getModule(modName).getManifest(creds));
66
66
  }
67
67
  return manifest;
68
68
  }
package/src/common.js CHANGED
@@ -80,7 +80,11 @@ module.exports.getTodayDate = () => {
80
80
  * @param {string} name field name
81
81
  * @return {boolean} if object contains field with name
82
82
  **/
83
- const objHas = (obj, name) => Object.prototype.hasOwnProperty.call(obj, name);
83
+ const objHas = (obj, name) => {
84
+ if(typeof obj === 'undefined') return false;
85
+ if(obj === null) return false;
86
+ return Object.prototype.hasOwnProperty.call(obj, name);
87
+ };
84
88
  module.exports.objHas = objHas;
85
89
 
86
90
 
@@ -54,8 +54,6 @@
54
54
  },
55
55
  "lang": {},
56
56
  "modules": {
57
- "options": {},
58
- "informer": {},
59
57
  "filter": {
60
58
  "size": 15,
61
59
  "default": {
@@ -73,25 +71,13 @@
73
71
  }
74
72
  },
75
73
  "middleware": {
76
- "not-user": {},
77
- "not-locale": {},
78
- "not-options": {}
74
+ "not-locale": {}
79
75
  },
80
76
  "importModulesFromNPM": [
81
- "not-user",
82
- "not-notification",
83
- "not-inform",
84
77
  "not-locale",
85
- "not-inform-rule-tag",
86
- "not-inform-sink-email",
87
- "not-inform-sink-notification",
88
- "not-inform-sink-ws",
89
78
  "not-dbdump",
90
79
  "not-ws",
91
- "not-options",
92
80
  "not-filter",
93
- "not-one-time-code",
94
- "not-error",
95
- "not-key"
81
+ "not-error"
96
82
  ]
97
83
  }
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui: {
3
3
  component: 'UITextfield',
4
- placeholder: 'core:field_ID_placeholder',
5
- label: 'core:field_ID_label',
4
+ placeholder: 'not-node:field_ID_placeholder',
5
+ label: 'not-node:field_ID_label',
6
6
  readonly: true
7
7
  }
8
8
  };
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ ui:{
3
+ component: 'UIHidden'
4
+ }
5
+ };
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ ui:{
3
+ component: 'UIHidden'
4
+ }
5
+ };
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ ui:{
3
+ component: 'UIHidden'
4
+ }
5
+ };
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ ui:{
3
+ component: 'UIHidden'
4
+ }
5
+ };
@@ -1,7 +1,7 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UISwitch',
4
- label: 'core:field_active_label'
4
+ label: 'not-node:field_active_label'
5
5
  },
6
6
  model:{
7
7
  type: Boolean,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui: {
3
3
  component: 'UITextfield',
4
- placeholder: 'core:field_codeName_placeholder',
5
- label: 'core:field_codeName_label'
4
+ placeholder: 'not-node:field_codeName_placeholder',
5
+ label: 'not-node:field_codeName_label'
6
6
  },
7
7
  model: {
8
8
  type: String,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_createdAt_label',
5
- placeholder: "core:field_createdAt_placeholder",
4
+ label: 'not-node:field_createdAt_label',
5
+ placeholder: "not-node:field_createdAt_placeholder",
6
6
  readonly: true
7
7
  },
8
8
  model: {
@@ -1,7 +1,7 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UISwitch',
4
- label: 'core:field_default_label'
4
+ label: 'not-node:field_default_label'
5
5
  },
6
6
  model:{
7
7
  type: Boolean,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextarea',
4
- placeholder: 'core:field_description_placeholder',
5
- label: 'core:field_description_label'
4
+ placeholder: 'not-node:field_description_placeholder',
5
+ label: 'not-node:field_description_label'
6
6
  },
7
7
  model:{
8
8
  type: String,
@@ -0,0 +1,11 @@
1
+ module.exports = {
2
+ ui: {
3
+ component: 'UIEmail',
4
+ placeholder: 'not-node:field_email_placeholder',
5
+ label: 'not-node:field_email_label'
6
+ },
7
+ model: {
8
+ type: String,
9
+ required: true
10
+ }
11
+ };
@@ -1,7 +1,7 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UISwitch',
4
- label: 'core:field_enabled_label'
4
+ label: 'not-node:field_enabled_label'
5
5
  },
6
6
  model:{
7
7
  type: Boolean,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_expiredAt_label',
5
- placeholder: 'core:field_expiredAt_placeholder',
4
+ label: 'not-node:field_expiredAt_label',
5
+ placeholder: 'not-node:field_expiredAt_placeholder',
6
6
  readonly: true
7
7
  },
8
8
  model:{
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_height_label',
5
- placeholder: 'core:field_height_placeholder'
4
+ label: 'not-node:field_height_label',
5
+ placeholder: 'not-node:field_height_placeholder'
6
6
  },
7
7
  model:{
8
8
  type: Number,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_IP_label',
5
- placeholder: 'core:field_IP_placeholder'
4
+ label: 'not-node:field_IP_label',
5
+ placeholder: 'not-node:field_IP_placeholder'
6
6
  },
7
7
  model:{
8
8
  type: String,
@@ -0,0 +1,13 @@
1
+ const ObjectId = require('mongoose').Schema.Types.ObjectId;
2
+
3
+ module.exports = {
4
+ model: {
5
+ type: ObjectId,
6
+ required: true,
7
+ default: {},
8
+ safe: {
9
+ update: ['@owner', 'root', 'admin'],
10
+ read: ['@owner', 'root', 'admin']
11
+ }
12
+ }
13
+ };
@@ -8,5 +8,8 @@ module.exports = {
8
8
  update: ['root', 'admin'],
9
9
  read: ['@owner', 'root', 'admin']
10
10
  }
11
+ },
12
+ ui:{
13
+ component: 'UIHidden'
11
14
  }
12
15
  };
@@ -6,5 +6,8 @@ module.exports = {
6
6
  update: ['@owner', 'root', 'admin'],
7
7
  read: ['@owner', 'root', 'admin']
8
8
  }
9
+ },
10
+ ui:{
11
+ component: 'UIHidden'
9
12
  }
10
13
  };
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- placeholder: 'core:field_price_placeholder',
5
- label: 'core:field_price_label'
4
+ placeholder: 'not-node:field_price_placeholder',
5
+ label: 'not-node:field_price_label'
6
6
  },
7
7
  model:{
8
8
  type: Number,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_session_label',
5
- placeholder: 'core:field_session_placeholder'
4
+ label: 'not-node:field_session_label',
5
+ placeholder: 'not-node:field_session_placeholder'
6
6
  },
7
7
  model:{
8
8
  type: String,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_size_label',
5
- placeholder: 'core:field_size_placeholder'
4
+ label: 'not-node:field_size_label',
5
+ placeholder: 'not-node:field_size_placeholder'
6
6
  },
7
7
  model:{
8
8
  type: Number,
@@ -0,0 +1,11 @@
1
+ module.exports = {
2
+ ui: {
3
+ component: 'UITelephone',
4
+ placeholder: 'not-node:field_telephone_placeholder',
5
+ label: 'not-node:field_telephone_label'
6
+ },
7
+ model: {
8
+ type: String,
9
+ required: true
10
+ }
11
+ };
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui: {
3
3
  component: 'UITextfield',
4
- label: 'core:field_title_label',
5
- placeholder: 'core:field_title_placeholder',
4
+ label: 'not-node:field_title_label',
5
+ placeholder: 'not-node:field_title_placeholder',
6
6
  },
7
7
  model: {
8
8
  type: String,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- label: 'core:field_updatedAt_label',
5
- placeholder: 'core:field_updatedAt_placeholder',
4
+ label: 'not-node:field_updatedAt_label',
5
+ placeholder: 'not-node:field_updatedAt_placeholder',
6
6
  readonly: true
7
7
  },
8
8
  model: {
@@ -4,8 +4,8 @@ const Schema = require('mongoose').Schema;
4
4
  module.exports = {
5
5
  ui:{
6
6
  component: 'UITextfield',
7
- label: 'core:field_userId_label',
8
- placeholder: 'core:field_userId_placeholder'
7
+ label: 'not-node:field_userId_label',
8
+ placeholder: 'not-node:field_userId_placeholder'
9
9
  },
10
10
  model: {
11
11
  type: Schema.Types.ObjectId,
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui: {
3
3
  component: 'UITextfield',
4
- placeholder: 'core:field_UUID_placeholder',
5
- label: 'core:field_UUID_label',
4
+ placeholder: 'not-node:field_UUID_placeholder',
5
+ label: 'not-node:field_UUID_label',
6
6
  readonly: true
7
7
  },
8
8
  model:{
@@ -0,0 +1,4 @@
1
+ module.exports = [{
2
+ validator: 'isEmail',
3
+ message: 'not-node:email_is_not_valid'
4
+ }];
@@ -1,4 +1,4 @@
1
1
  module.exports = [{
2
2
  validator: 'isMongoId',
3
- message: 'owner_is_not_valid'
3
+ message: 'not-node:owner_is_not_valid'
4
4
  }];
@@ -1,8 +1,8 @@
1
1
  module.exports = {
2
2
  ui:{
3
3
  component: 'UITextfield',
4
- placeholder: 'core:field_width_placeholder',
5
- label: 'core:field_width_label'
4
+ placeholder: 'not-node:field_width_placeholder',
5
+ label: 'not-node:field_width_label'
6
6
  },
7
7
  model:{
8
8
  type: Number,
@@ -0,0 +1,6 @@
1
+ const {generatePaths} = require('../common');
2
+
3
+ module.exports = {
4
+ name: 'not-node',
5
+ paths: generatePaths(['fields', 'locales'], __dirname)
6
+ };
@@ -22,6 +22,12 @@
22
22
  "field_size_label": "Size",
23
23
  "field_size_placeholder": "Size",
24
24
 
25
+ "field_email_label": "Email",
26
+ "field_email_placeholder": "email@server.com",
27
+
28
+ "field_telephone_label": "Tel.",
29
+ "field_telephone_placeholder": "+1 (111) 111-11-11",
30
+
25
31
  "field_ID_label": "ID",
26
32
  "field_ID_placeholder": "ID",
27
33
 
@@ -22,6 +22,12 @@
22
22
  "field_size_label": "Size",
23
23
  "field_size_placeholder": "Size",
24
24
 
25
+ "field_email_label": "Email",
26
+ "field_email_placeholder": "email@server.ru",
27
+
28
+ "field_telephone_label": "Тел.",
29
+ "field_telephone_placeholder": "+7 (111) 111-11-11",
30
+
25
31
  "field_ID_label": "ID",
26
32
  "field_ID_placeholder": "ID",
27
33