@lcap/nasl 1.0.0-alpha.13 → 1.0.0-alpha.16

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 (324) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +73 -25
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/utils.js +7 -6
  5. package/out/automate/engine/utils.js.map +1 -1
  6. package/out/common/BaseNode.d.ts +5 -4
  7. package/out/common/BaseNode.js +48 -41
  8. package/out/common/BaseNode.js.map +1 -1
  9. package/out/concepts/App__.d.ts +18 -1
  10. package/out/concepts/App__.js +64 -24
  11. package/out/concepts/App__.js.map +1 -1
  12. package/out/concepts/Argument__.js +2 -2
  13. package/out/concepts/Argument__.js.map +1 -1
  14. package/out/concepts/Assignee__.d.ts +190 -0
  15. package/out/concepts/Assignee__.js +264 -0
  16. package/out/concepts/Assignee__.js.map +1 -0
  17. package/out/concepts/BinaryExpression__.js +6 -6
  18. package/out/concepts/BinaryExpression__.js.map +1 -1
  19. package/out/concepts/BindAttribute__.d.ts +19 -0
  20. package/out/concepts/BindAttribute__.js +36 -2
  21. package/out/concepts/BindAttribute__.js.map +1 -1
  22. package/out/concepts/BindDirective__.js +21 -1
  23. package/out/concepts/BindDirective__.js.map +1 -1
  24. package/out/concepts/BindEvent__.d.ts +1 -0
  25. package/out/concepts/BindEvent__.js +38 -14
  26. package/out/concepts/BindEvent__.js.map +1 -1
  27. package/out/concepts/CallFunction__.js +20 -7
  28. package/out/concepts/CallFunction__.js.map +1 -1
  29. package/out/concepts/CallInterface__.d.ts +11 -8
  30. package/out/concepts/CallInterface__.js +160 -23
  31. package/out/concepts/CallInterface__.js.map +1 -1
  32. package/out/concepts/CallLogic__.d.ts +1 -0
  33. package/out/concepts/CallLogic__.js +17 -7
  34. package/out/concepts/CallLogic__.js.map +1 -1
  35. package/out/concepts/CallQueryComponent__.d.ts +5 -1
  36. package/out/concepts/CallQueryComponent__.js +15 -11
  37. package/out/concepts/CallQueryComponent__.js.map +1 -1
  38. package/out/concepts/Comment__.js +6 -2
  39. package/out/concepts/Comment__.js.map +1 -1
  40. package/out/concepts/ConfigGroup__.js +1 -1
  41. package/out/concepts/ConfigGroup__.js.map +1 -1
  42. package/out/concepts/ConfigProperty__.js +1 -1
  43. package/out/concepts/ConfigProperty__.js.map +1 -1
  44. package/out/concepts/Configuration__.js +1 -1
  45. package/out/concepts/Configuration__.js.map +1 -1
  46. package/out/concepts/Destination__.d.ts +11 -0
  47. package/out/concepts/Destination__.js +59 -19
  48. package/out/concepts/Destination__.js.map +1 -1
  49. package/out/concepts/End__.js +10 -2
  50. package/out/concepts/End__.js.map +1 -1
  51. package/out/concepts/EntityProperty__.d.ts +7 -0
  52. package/out/concepts/EntityProperty__.js +60 -3
  53. package/out/concepts/EntityProperty__.js.map +1 -1
  54. package/out/concepts/Entity__.d.ts +4 -1
  55. package/out/concepts/Entity__.js +29 -12
  56. package/out/concepts/Entity__.js.map +1 -1
  57. package/out/concepts/Enum__.d.ts +4 -0
  58. package/out/concepts/Enum__.js +9 -6
  59. package/out/concepts/Enum__.js.map +1 -1
  60. package/out/concepts/Event__.js +1 -1
  61. package/out/concepts/Event__.js.map +1 -1
  62. package/out/concepts/ForEachStatement__.js +8 -12
  63. package/out/concepts/ForEachStatement__.js.map +1 -1
  64. package/out/concepts/Function__.js +5 -5
  65. package/out/concepts/Function__.js.map +1 -1
  66. package/out/concepts/Identifier__.js +26 -24
  67. package/out/concepts/Identifier__.js.map +1 -1
  68. package/out/concepts/IfStatement__.js +2 -2
  69. package/out/concepts/IfStatement__.js.map +1 -1
  70. package/out/concepts/InterfaceParam__.d.ts +2 -0
  71. package/out/concepts/InterfaceParam__.js +41 -21
  72. package/out/concepts/InterfaceParam__.js.map +1 -1
  73. package/out/concepts/Interface__.d.ts +3 -0
  74. package/out/concepts/Interface__.js +105 -9
  75. package/out/concepts/Interface__.js.map +1 -1
  76. package/out/concepts/LogicItem__.d.ts +2 -1
  77. package/out/concepts/LogicItem__.js +14 -0
  78. package/out/concepts/LogicItem__.js.map +1 -1
  79. package/out/concepts/Logic__.d.ts +3 -0
  80. package/out/concepts/Logic__.js +57 -16
  81. package/out/concepts/Logic__.js.map +1 -1
  82. package/out/concepts/MemberExpression__.js +13 -6
  83. package/out/concepts/MemberExpression__.js.map +1 -1
  84. package/out/concepts/Module__.d.ts +6 -0
  85. package/out/concepts/Module__.js +18 -8
  86. package/out/concepts/Module__.js.map +1 -1
  87. package/out/concepts/Namespace__.d.ts +4 -0
  88. package/out/concepts/Namespace__.js +23 -12
  89. package/out/concepts/Namespace__.js.map +1 -1
  90. package/out/concepts/Param__.d.ts +2 -1
  91. package/out/concepts/Param__.js +35 -22
  92. package/out/concepts/Param__.js.map +1 -1
  93. package/out/concepts/ProcessComponent__.js +2 -2
  94. package/out/concepts/ProcessComponent__.js.map +1 -1
  95. package/out/concepts/ProcessElement__.js +20 -18
  96. package/out/concepts/ProcessElement__.js.map +1 -1
  97. package/out/concepts/ProcessOutcome__.js +1 -1
  98. package/out/concepts/ProcessOutcome__.js.map +1 -1
  99. package/out/concepts/Process__.d.ts +6 -1
  100. package/out/concepts/Process__.js +18 -14
  101. package/out/concepts/Process__.js.map +1 -1
  102. package/out/concepts/QueryAggregateExpression__.js +1 -1
  103. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  104. package/out/concepts/QueryFromExpression__.js +1 -1
  105. package/out/concepts/QueryFromExpression__.js.map +1 -1
  106. package/out/concepts/QueryJoinExpression__.js +2 -2
  107. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  108. package/out/concepts/QuerySelectExpression__.js +1 -1
  109. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  110. package/out/concepts/Return__.d.ts +1 -0
  111. package/out/concepts/Return__.js +38 -25
  112. package/out/concepts/Return__.js.map +1 -1
  113. package/out/concepts/SqlQueryComponent__.js +1 -1
  114. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  115. package/out/concepts/StringLiteral__.d.ts +1 -1
  116. package/out/concepts/StringLiteral__.js +2 -2
  117. package/out/concepts/StringLiteral__.js.map +1 -1
  118. package/out/concepts/StructureProperty__.d.ts +5 -4
  119. package/out/concepts/StructureProperty__.js +54 -31
  120. package/out/concepts/StructureProperty__.js.map +1 -1
  121. package/out/concepts/Structure__.d.ts +1 -0
  122. package/out/concepts/Structure__.js +18 -5
  123. package/out/concepts/Structure__.js.map +1 -1
  124. package/out/concepts/SwitchCase__.js +3 -3
  125. package/out/concepts/SwitchCase__.js.map +1 -1
  126. package/out/concepts/SwitchStatement__.js +1 -1
  127. package/out/concepts/SwitchStatement__.js.map +1 -1
  128. package/out/concepts/TypeAnnotation__.d.ts +3 -5
  129. package/out/concepts/TypeAnnotation__.js +36 -14
  130. package/out/concepts/TypeAnnotation__.js.map +1 -1
  131. package/out/concepts/UnaryExpression__.js +4 -2
  132. package/out/concepts/UnaryExpression__.js.map +1 -1
  133. package/out/concepts/ValidationRule__.d.ts +1 -0
  134. package/out/concepts/ValidationRule__.js +27 -1
  135. package/out/concepts/ValidationRule__.js.map +1 -1
  136. package/out/concepts/Variable__.d.ts +1 -0
  137. package/out/concepts/Variable__.js +38 -25
  138. package/out/concepts/Variable__.js.map +1 -1
  139. package/out/concepts/ViewComponent__.js +5 -5
  140. package/out/concepts/ViewComponent__.js.map +1 -1
  141. package/out/concepts/ViewElement__.d.ts +7 -1
  142. package/out/concepts/ViewElement__.js +154 -117
  143. package/out/concepts/ViewElement__.js.map +1 -1
  144. package/out/concepts/View__.d.ts +4 -0
  145. package/out/concepts/View__.js +38 -25
  146. package/out/concepts/View__.js.map +1 -1
  147. package/out/concepts/WhileStatement__.js +1 -1
  148. package/out/concepts/WhileStatement__.js.map +1 -1
  149. package/out/concepts/basics/stdlib/index.js +3 -1
  150. package/out/concepts/basics/stdlib/index.js.map +1 -1
  151. package/out/concepts/basics/stdlib/nasl.auth.d.ts +3 -0
  152. package/out/concepts/basics/stdlib/nasl.auth.js +30 -0
  153. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -0
  154. package/out/concepts/basics/stdlib/nasl.browser copy.d.ts +3 -0
  155. package/out/concepts/basics/stdlib/nasl.browser copy.js +70 -0
  156. package/out/concepts/basics/stdlib/nasl.browser copy.js.map +1 -0
  157. package/out/concepts/basics/stdlib/nasl.browser.js +6 -35
  158. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  159. package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -0
  160. package/out/concepts/basics/stdlib/nasl.configuration.js +25 -0
  161. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -0
  162. package/out/concepts/basics/stdlib/nasl.util.js +49 -41
  163. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  164. package/out/concepts/basics/stdlib/nasl.validation.js +26 -20
  165. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
  166. package/out/concepts/basics/types/coreTypeList.js +11 -11
  167. package/out/concepts/basics/types/coreTypeList.js.map +1 -1
  168. package/out/concepts/index__.d.ts +1 -0
  169. package/out/concepts/index__.js +1 -0
  170. package/out/concepts/index__.js.map +1 -1
  171. package/out/enums/KEYWORDS.js +1 -1
  172. package/out/enums/KEYWORDS.js.map +1 -1
  173. package/out/generator/genBundleFiles.d.ts +1 -0
  174. package/out/generator/genBundleFiles.js +122 -93
  175. package/out/generator/genBundleFiles.js.map +1 -1
  176. package/out/manager/diagnostic.d.ts +1 -1
  177. package/out/server/createUiTs.d.ts +1 -0
  178. package/out/server/createUiTs.js +19 -2
  179. package/out/server/createUiTs.js.map +1 -1
  180. package/out/server/entity2LogicNamespace.js +24 -9
  181. package/out/server/entity2LogicNamespace.js.map +1 -1
  182. package/out/server/getExtensionModules.js +2 -0
  183. package/out/server/getExtensionModules.js.map +1 -1
  184. package/out/server/getLogics.js +40 -56
  185. package/out/server/getLogics.js.map +1 -1
  186. package/out/server/getMemberIdentifier.d.ts +4 -0
  187. package/out/server/getMemberIdentifier.js +90 -48
  188. package/out/server/getMemberIdentifier.js.map +1 -1
  189. package/out/server/getProcesses.d.ts +2 -2
  190. package/out/server/getProcesses.js +34 -11
  191. package/out/server/getProcesses.js.map +1 -1
  192. package/out/server/index.js +4 -0
  193. package/out/server/index.js.map +1 -1
  194. package/out/server/naslServer.d.ts +11 -30
  195. package/out/server/naslServer.js +410 -199
  196. package/out/server/naslServer.js.map +1 -1
  197. package/out/server/process2LogicNamespace.d.ts +10 -0
  198. package/out/server/process2LogicNamespace.js +16 -0
  199. package/out/server/process2LogicNamespace.js.map +1 -1
  200. package/out/server/translator.d.ts +22 -3
  201. package/out/server/translator.js +336 -130
  202. package/out/server/translator.js.map +1 -1
  203. package/out/service/storage/init.js +29 -15
  204. package/out/service/storage/init.js.map +1 -1
  205. package/out/templator/genCreateBlock.js +5 -5
  206. package/out/templator/genCreateBlock.js.map +1 -1
  207. package/out/templator/genCurdEditMultipleKeyBlock.js +9 -13
  208. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  209. package/out/templator/genCurdMultipleKeyBlock.js +7 -7
  210. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  211. package/out/templator/genEditTableBlock.js +2 -2
  212. package/out/templator/genEditTableBlock.js.map +1 -1
  213. package/out/templator/genGetBlock.js +4 -2
  214. package/out/templator/genGetBlock.js.map +1 -1
  215. package/out/templator/genGridViewBlock.d.ts +1 -1
  216. package/out/templator/genGridViewBlock.js +3 -3
  217. package/out/templator/genGridViewBlock.js.map +1 -1
  218. package/out/templator/genQueryComponent.d.ts +2 -0
  219. package/out/templator/genQueryComponent.js +1 -0
  220. package/out/templator/genQueryComponent.js.map +1 -1
  221. package/out/templator/genTableBlock.d.ts +1 -1
  222. package/out/templator/genTableBlock.js +3 -3
  223. package/out/templator/genTableBlock.js.map +1 -1
  224. package/out/templator/genUpdateBlock.js +7 -7
  225. package/out/templator/genUpdateBlock.js.map +1 -1
  226. package/out/templator/utils.d.ts +3 -1
  227. package/out/templator/utils.js +2 -1
  228. package/out/templator/utils.js.map +1 -1
  229. package/out/utils/index.d.ts +6 -0
  230. package/out/utils/index.js +20 -1
  231. package/out/utils/index.js.map +1 -1
  232. package/package.json +2 -1
  233. package/src/automate/engine/index.js +73 -25
  234. package/src/automate/engine/utils.js +7 -6
  235. package/src/common/BaseNode.ts +51 -42
  236. package/src/concepts/App__.ts +104 -26
  237. package/src/concepts/Argument__.ts +3 -2
  238. package/src/concepts/Assignee__.ts +437 -0
  239. package/src/concepts/BinaryExpression__.ts +7 -6
  240. package/src/concepts/BindAttribute__.ts +51 -2
  241. package/src/concepts/BindDirective__.ts +20 -1
  242. package/src/concepts/BindEvent__.ts +39 -16
  243. package/src/concepts/CallFunction__.ts +21 -8
  244. package/src/concepts/CallInterface__.ts +161 -42
  245. package/src/concepts/CallLogic__.ts +21 -9
  246. package/src/concepts/CallQueryComponent__.ts +15 -13
  247. package/src/concepts/Comment__.ts +6 -2
  248. package/src/concepts/ConfigGroup__.ts +1 -1
  249. package/src/concepts/ConfigProperty__.ts +1 -1
  250. package/src/concepts/Configuration__.ts +1 -1
  251. package/src/concepts/Destination__.ts +57 -19
  252. package/src/concepts/End__.ts +9 -11
  253. package/src/concepts/EntityProperty__.ts +56 -3
  254. package/src/concepts/Entity__.ts +33 -20
  255. package/src/concepts/Enum__.ts +8 -7
  256. package/src/concepts/Event__.ts +1 -1
  257. package/src/concepts/ForEachStatement__.ts +8 -13
  258. package/src/concepts/Function__.ts +5 -5
  259. package/src/concepts/Identifier__.ts +31 -26
  260. package/src/concepts/IfStatement__.ts +2 -2
  261. package/src/concepts/InterfaceParam__.ts +39 -20
  262. package/src/concepts/Interface__.ts +103 -9
  263. package/src/concepts/LogicItem__.ts +16 -1
  264. package/src/concepts/Logic__.ts +60 -18
  265. package/src/concepts/MemberExpression__.ts +18 -6
  266. package/src/concepts/Module__.ts +19 -8
  267. package/src/concepts/Namespace__.ts +24 -12
  268. package/src/concepts/Param__.ts +34 -23
  269. package/src/concepts/ProcessComponent__.ts +2 -2
  270. package/src/concepts/ProcessElement__.ts +51 -50
  271. package/src/concepts/ProcessOutcome__.ts +1 -1
  272. package/src/concepts/Process__.ts +32 -28
  273. package/src/concepts/QueryAggregateExpression__.ts +1 -1
  274. package/src/concepts/QueryFromExpression__.ts +1 -1
  275. package/src/concepts/QueryJoinExpression__.ts +2 -2
  276. package/src/concepts/QuerySelectExpression__.ts +1 -1
  277. package/src/concepts/Return__.ts +35 -25
  278. package/src/concepts/SqlQueryComponent__.ts +1 -1
  279. package/src/concepts/StringLiteral__.ts +2 -2
  280. package/src/concepts/StructureProperty__.ts +49 -29
  281. package/src/concepts/Structure__.ts +17 -5
  282. package/src/concepts/SwitchCase__.ts +3 -3
  283. package/src/concepts/SwitchStatement__.ts +1 -1
  284. package/src/concepts/TypeAnnotation__.ts +34 -12
  285. package/src/concepts/UnaryExpression__.ts +4 -2
  286. package/src/concepts/ValidationRule__.ts +24 -1
  287. package/src/concepts/Variable__.ts +35 -24
  288. package/src/concepts/ViewComponent__.ts +5 -5
  289. package/src/concepts/ViewElement__.ts +168 -113
  290. package/src/concepts/View__.ts +44 -25
  291. package/src/concepts/WhileStatement__.ts +1 -1
  292. package/src/concepts/basics/stdlib/index.ts +3 -1
  293. package/src/concepts/basics/stdlib/nasl.auth.ts +26 -0
  294. package/src/concepts/basics/stdlib/nasl.browser.ts +7 -41
  295. package/src/concepts/basics/stdlib/nasl.configuration.ts +21 -0
  296. package/src/concepts/basics/stdlib/nasl.util.ts +49 -41
  297. package/src/concepts/basics/stdlib/nasl.validation.ts +17 -11
  298. package/src/concepts/basics/types/coreTypeList.ts +11 -11
  299. package/src/concepts/index__.ts +1 -0
  300. package/src/enums/KEYWORDS.ts +1 -1
  301. package/src/generator/genBundleFiles.ts +131 -112
  302. package/src/manager/diagnostic.ts +1 -1
  303. package/src/server/createUiTs.ts +22 -4
  304. package/src/server/entity2LogicNamespace.ts +25 -9
  305. package/src/server/getExtensionModules.ts +2 -0
  306. package/src/server/getLogics.ts +42 -58
  307. package/src/server/getMemberIdentifier.ts +88 -46
  308. package/src/server/getProcesses.ts +32 -9
  309. package/src/server/index.ts +12 -1
  310. package/src/server/naslServer.ts +422 -215
  311. package/src/server/process2LogicNamespace.ts +17 -1
  312. package/src/server/translator.ts +392 -134
  313. package/src/service/storage/init.ts +27 -16
  314. package/src/templator/genCreateBlock.ts +5 -5
  315. package/src/templator/genCurdEditMultipleKeyBlock.ts +25 -26
  316. package/src/templator/genCurdMultipleKeyBlock.ts +7 -7
  317. package/src/templator/genEditTableBlock.ts +2 -2
  318. package/src/templator/genGetBlock.ts +5 -7
  319. package/src/templator/genGridViewBlock.ts +4 -7
  320. package/src/templator/genQueryComponent.ts +1 -0
  321. package/src/templator/genTableBlock.ts +4 -7
  322. package/src/templator/genUpdateBlock.ts +7 -8
  323. package/src/templator/utils.ts +2 -1
  324. package/src/utils/index.ts +19 -0
@@ -6,7 +6,7 @@ let id = 0;
6
6
  class TemplateMeta {
7
7
  constructor(node) {
8
8
  // this.name = `t_${uuidv4().replace(/-/g, '')}`;
9
- this.name = `t_${node.concept}_${node.name ? node.name.replace(/-/g, '') : 'unknown'}_${id++}`;
9
+ this.name = `t_${node.concept}_${node.name ? node.name.replace(/[-\.]/g, '') : 'unknown'}_${id++}`;
10
10
  this.node = node;
11
11
  this.isRoot = false;
12
12
  this.rootBinds = [];
@@ -39,8 +39,10 @@ class TemplateMeta {
39
39
  if (typeof value === 'string') {
40
40
  value = value
41
41
  .split(/\n/)
42
- .map((c) => `"${c.replaceAll(/"/g, "\\\"")}"`)
43
- .join(' +\n');
42
+ .map((c) => `"${c.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`)
43
+ // .map((c) => `"${c.replace(/([^\\])"/g, '$1\\"')}"`)
44
+ // .map((c) => `decodeURIComponent("${c.encodeURIComponent}")`)
45
+ .join(' + "\\n" +\n');
44
46
  }
45
47
  if (typeof value === 'object') {
46
48
  value = JSON.stringify(value);
@@ -100,7 +102,8 @@ class TemplateMeta {
100
102
  // _tempConstructor = getConceptConstructor("${this.node.concept}");
101
103
  // const ${this.name} = new _tempConstructor();`
102
104
  return `${this.genComment('create')}
103
- let ${this.name} = _create("${this.node.concept}");`;
105
+ let ${this.name} = _create("${this.node.concept}");
106
+ _templateObjects.push(${this.name})`;
104
107
  }
105
108
 
106
109
  genBind() {
@@ -108,8 +111,9 @@ class TemplateMeta {
108
111
  const { type, propertyName, value } = bind;
109
112
  switch (type) {
110
113
  case TRACK_TYPE.PROPERTY:
114
+ return `_set(${this.name}, "${propertyName}", ${value}, (updatedObj) => { ${value} = updatedObj; })`;
111
115
  case TRACK_TYPE.PLAIN:
112
- return `_set(${this.name}, "${propertyName}", ${value})`;
116
+ return `_set(${this.name}, "${propertyName}", ${value});`;
113
117
  case TRACK_TYPE.ARRAY:
114
118
  return `_push(${this.name}, "${propertyName}", ${value});`;
115
119
  }
@@ -153,18 +157,18 @@ class TemplateMeta {
153
157
  if (this.node.concept === 'Role') {
154
158
  return '';
155
159
  }
156
- if (this.node.concept === 'Entity') {
157
- return `_set(${this.name}, "name", getGenUniqNameFunctionName(${this.name}, "${this.node.concept}"))
158
- ${this.name}.setTableName(${this.name}.name + '_' + app.id.slice(0,6))`;
159
- }
160
- return `_set(${this.name}, "name", getGenUniqNameFunctionName(${this.name}, "${this.node.concept}"))`;
160
+ // if (this.node.concept === 'Entity') {
161
+ // return `_set(${this.name}, "name", getGenUniqNameFunctionName(${this.name}, "${this.node.concept}"));`;
162
+ // _setTableName(${this.name}, ${this.name}.name + '_' + app.id.slice(0,6));`;
163
+ // }
164
+ return `_set(${this.name}, "name", getGenUniqNameFunctionName(${this.name}, "${this.node.concept}", app), (updatedObj) => { ${this.name} = updatedObj; })`;
161
165
  }
162
166
 
163
167
  genRoleBind() {
164
168
  return this.rolebinds.map((role) => {
165
169
  const { propertyName, arguVars } = role;
166
170
 
167
- return `_set(${this.name}, "${propertyName}", _bindRoles(${arguVars}));`;
171
+ return `_set(${this.name}, "${propertyName}", _bindRoles(${arguVars}), (updatedObj) => { ${this.name} = updatedObj; });`;
168
172
  });
169
173
  }
170
174
 
@@ -180,8 +184,8 @@ class TemplateMeta {
180
184
  } else {
181
185
  // return `${this.name}.${propertyName} = ${targetVar}.getNamespace();
182
186
  // ${this.name}.${relatedPropertyName} = ${targetVar}.name;`
183
- return `_set(${this.name}, "${propertyName}", ${targetVar}.getNamespace());
184
- _set(${this.name}, "${relatedPropertyName}", ${targetVar}.name);`;
187
+ return `_set(${this.name}, "${propertyName}", ${targetVar}.getNamespace(), (updatedObj) => { ${this.name} = updatedObj; });
188
+ _set(${this.name}, "${relatedPropertyName}", ${targetVar}.name, (updatedObj) => { ${this.name} = updatedObj; });`;
185
189
  }
186
190
  });
187
191
  }
@@ -225,6 +229,21 @@ function autoScript(stack) {
225
229
 
226
230
  return `
227
231
  (function () {
232
+ function unique(key, set, start = 1) {
233
+ const has = (_key) => {
234
+ if (set instanceof Set || set instanceof Map)
235
+ return set.has(_key);
236
+ else if (Array.isArray(set))
237
+ return set.includes(_key);
238
+ else
239
+ return set[_key];
240
+ };
241
+
242
+ while (has(key))
243
+ key = key.replace(/\\d*$/, (m) => String(m === '' ? start : (+m) + 1));
244
+ return key;
245
+ }
246
+
228
247
  function alphaUpper(name) {
229
248
  if (!name) {
230
249
  return '';
@@ -232,11 +251,27 @@ function autoScript(stack) {
232
251
  return name[0].toUpperCase() + name.substring(1);
233
252
  }
234
253
 
235
- function getGenUniqNameFunctionName(item, concept) {
236
- if(!item.parentNode) {
237
- return item.name;
238
- }
254
+ const NamesWeakMap = new Map();
255
+
256
+ function initAppUniqueNames(app) {
257
+ NamesWeakMap.set('Entity', new Set(app.getEntityExistingNames()));
258
+ NamesWeakMap.set('Structure', new Set(app.getStructureExistingNames()));
259
+ NamesWeakMap.set('Enum', new Set(app.getEnumExistingNames()));
260
+ NamesWeakMap.set('Logic', new Set(app.getLogicExistingNames()));
261
+ NamesWeakMap.set('Interface', new Set(app.getInterfaceExistingNames()));
262
+ NamesWeakMap.set('View', new Set(app.getViewExistingNames()));
263
+ NamesWeakMap.set('Process', new Set(app.getProcessExistingNames()));
264
+ NamesWeakMap.set('Role', new Set(app.getRoleExistingNames()));
265
+ }
266
+
267
+ function getGenUniqNameFunctionName(item, concept, app) {
239
268
  const p = item.parentNode;
269
+ if(!p) {
270
+ const nameSet = NamesWeakMap.get(concept);
271
+ const n = unique(item.name, nameSet);
272
+ nameSet.add(n);
273
+ return n;
274
+ }
240
275
  const f1 = p["get" + concept + "UniqueName"];
241
276
  const f2 = p["get" + concept + "ExistingNames"]
242
277
  if(f1 && f2) {
@@ -257,7 +292,7 @@ function autoScript(stack) {
257
292
  return (item instanceof BaseNodeConstructor);
258
293
  }
259
294
 
260
- function _set(item, propertyName, value) {
295
+ function _set(item, propertyName, value, callback) {
261
296
  if(instanceOfBaseNode(value)) {
262
297
  value.parentNode = item;
263
298
  value.parentKey = propertyName;
@@ -266,6 +301,10 @@ function autoScript(stack) {
266
301
  item.update({
267
302
  [propertyName]: value,
268
303
  });
304
+
305
+ if(instanceOfBaseNode(value) && callback) {
306
+ callback(item[propertyName]);
307
+ }
269
308
  }
270
309
  }
271
310
 
@@ -315,10 +354,14 @@ function autoScript(stack) {
315
354
  return ${JSON.stringify(roleNASL)};
316
355
  }
317
356
 
318
- const execTemplate = function(app, getCtor, getCMeta, base, rootBindCallback, roleCallback) {
357
+ const execTemplate = function(app, getCtor, getCMeta, base, rootBindCallback, roleCallback, finalCallback) {
358
+ let _templateObjects = [];
319
359
  BaseNodeConstructor = base;
320
360
  getConceptConstructor = getCtor;
321
361
  getConceptMeta = getCMeta;
362
+
363
+ initAppUniqueNames(app);
364
+
322
365
  app.emit('collect:start', {
323
366
  actionMsg: '导入页面模板'
324
367
  });
@@ -328,14 +371,14 @@ function autoScript(stack) {
328
371
  /*---- bind ---- */
329
372
  ${bindBlock.join('\n\t\t')}
330
373
 
331
- /*---- appbind ---- */
332
- ${appBindBlock.join('\n\t\t')}
374
+ /*---- reset name ---- */
375
+ ${nameBlock.join('\n\t\t')}
333
376
 
334
377
  /*--- root bind ---*/
335
378
  ${rootBindBlock.join('\n\t\t')}
336
379
 
337
- /*---- reset name ---- */
338
- ${nameBlock.join('\n\t\t')}
380
+ /*---- appbind ---- */
381
+ ${appBindBlock.join('\n\t\t')}
339
382
 
340
383
  /*--- role bind ---*/
341
384
  ${rolebindBlock.join('\n\t\t')}
@@ -345,6 +388,11 @@ function autoScript(stack) {
345
388
 
346
389
  /*---- add module ----*/
347
390
  ${moduleBlock.join('\n\t\t')}
391
+
392
+ /*--- final callback ---*/
393
+ if(finalCallback) {
394
+ finalCallback(_templateObjects)
395
+ }
348
396
  app.emit('collect:end');
349
397
 
350
398
  /*---- return root -----*/
@@ -450,7 +498,7 @@ export function getRoles(script) {
450
498
  const { exportRoles } = eval(script);
451
499
  return exportRoles();
452
500
  }
453
- export function applyTemplate(script, app, rootBindCallback, roleCallback) {
501
+ export function applyTemplate(script, app, rootBindCallback, roleCallback, finalCallback) {
454
502
  const { execTemplate } = eval(script);
455
- execTemplate(app, getConceptConstructor, getConceptMeta, BaseNode, rootBindCallback, roleCallback);
503
+ execTemplate(app, getConceptConstructor, getConceptMeta, BaseNode, rootBindCallback, roleCallback, finalCallback);
456
504
  }
@@ -69,9 +69,9 @@ export function getNodeByNodeCallee(AppInstance, namespace, callback) {
69
69
  */
70
70
  export function getNaslNodeByNodeCallee(namespace, typeName) {
71
71
  if (namespace === 'nasl.ui') {
72
- return uiStructures.find(item => item.name === typeName);
72
+ return uiStructures.find((item) => item.name === typeName);
73
73
  } else if (namespace === 'nasl.collection') {
74
- return collectionStructures.find(item => item.name === typeName);
74
+ return collectionStructures.find((item) => item.name === typeName);
75
75
  }
76
76
  }
77
77
  export const TRACK_TYPE = {
@@ -129,7 +129,8 @@ export const IGNORE_PROPERTY = [
129
129
  'branchName',
130
130
  'appId',
131
131
  'isIndex',
132
- 'tableName',
132
+ // 'tableName',
133
+ // 'columnName',
133
134
  ];
134
135
 
135
136
  const ROLE_PROPERTY = 'bindRoles';
@@ -247,7 +248,7 @@ export function tracking(node, startNode, callback) {
247
248
  relatedPropertyName,
248
249
  AppPropertyName: 'processes',
249
250
  });
250
- return;
251
+ break;
251
252
  }
252
253
 
253
254
  const entity = rootNode.entities.find((e) => e.name === nodeName);
@@ -261,7 +262,7 @@ export function tracking(node, startNode, callback) {
261
262
  relatedPropertyName,
262
263
  AppPropertyName: 'entities',
263
264
  });
264
- return;
265
+ break;
265
266
  }
266
267
  } else {
267
268
  const nsPath = `${ns}.${calleeN}`;
@@ -285,7 +286,7 @@ export function tracking(node, startNode, callback) {
285
286
  case BACKTACKING_PROPERTY.RELATION_NAMESPACE:
286
287
  break;
287
288
  default:
288
- if (property !== undefined && property !== null) {
289
+ if (property !== undefined) {
289
290
  if (objectRef) {
290
291
  callback(TRACK_TYPE.PROPERTY, propertyName, property);
291
292
  } else {
@@ -12,22 +12,6 @@ import * as utils from '../utils';
12
12
  import classMap from '../common/classMap';
13
13
  import { action, circular, excludedInJSON, property, getConceptConstructor, getConceptPropertyMap } from '../decorators';
14
14
  import { Diagnostic } from '../manager/diagnostic';
15
- import { CallQueryComponent } from '..';
16
-
17
- /**
18
- * 分割数组
19
- * @param array 原数组
20
- * @param subGroupLength 长度
21
- * @returns
22
- */
23
- function group(array: Array<any>, subGroupLength: number) {
24
- let index = 0;
25
- const newArray = [];
26
- while (index < array.length) {
27
- newArray.push(array.slice(index, (index += subGroupLength)));
28
- }
29
- return newArray;
30
- }
31
15
 
32
16
  /**
33
17
  * 顶点类
@@ -183,6 +167,7 @@ export class BaseNode extends EventEmitter {
183
167
  sourceItem.parentKey = key;
184
168
  }
185
169
  }
170
+
186
171
  (this as any)[key] = objectRefCtor && sourceItem && !(sourceItem instanceof objectRefCtor) ? this.activeInside(sourceItem, objectRefCtor, this, key) : sourceItem;
187
172
  } catch (e) {
188
173
  // Function has non-object prototype 'undefined' in instanceof check
@@ -237,27 +222,28 @@ export class BaseNode extends EventEmitter {
237
222
  * @returns
238
223
  */
239
224
  genActionListener($event: EventPayload) {
225
+ if (!$event.eventList) {
226
+ $event.eventList = [];
227
+ }
228
+ if (!$event.eventStop) {
229
+ $event.eventList.push($event);
230
+ // 页面逻辑需要冒泡到页面
231
+ if (['App', 'Process', 'View', 'Interface', 'Entity', 'Structure', 'Enum', 'ConfigProperty'].includes(this.concept) || (this.concept === 'Logic' && this.parentNode?.concept !== 'View')) {
232
+ $event.eventStop = true;
233
+ }
234
+ }
235
+ $event.originEvent = $event.originEvent || $event;
240
236
  this.onChange($event);
241
237
  if (this.concept === 'App') {
242
238
  this.emit('storage', $event);
243
239
  } else {
244
- if (!$event.eventList) {
245
- $event.eventList = [];
246
- }
247
- if (!$event.eventStop) {
248
- $event.eventList.push($event);
249
- // 页面逻辑需要冒泡到页面
250
- if (['Process', 'View', 'Interface', 'Entity', 'Structure', 'Enum', 'ConfigProperty'].includes(this.concept) || (this.concept === 'Logic' && this.parentNode?.concept !== 'View')) {
251
- $event.eventStop = true;
252
- }
253
- }
254
240
  const event: EventPayload = {
255
241
  action: 'update',
256
242
  path: this.parentNode?.getNodePath(false),
257
243
  object: {},
258
244
  oldObject: {},
259
- originEvent: $event.originEvent || $event,
260
- eventList: $event.eventList || [],
245
+ originEvent: $event.originEvent,
246
+ eventList: $event.eventList,
261
247
  eventStop: $event.eventStop,
262
248
  };
263
249
  this.parentNode?.emit('update', event);
@@ -301,6 +287,38 @@ export class BaseNode extends EventEmitter {
301
287
  });
302
288
  }
303
289
 
290
+ /**
291
+ * 如果有父节点,则删除节点,在添加时调用
292
+ */
293
+ ensureDelete() {
294
+ if (this.parentNode && this.parentKey) {
295
+ const path = this.getNodePath(false);
296
+ const parentParams = this._delete();
297
+ if (parentParams && parentParams.index !== -1) {
298
+ if (Array.isArray((this.parentNode as any)[this.parentKey])) {
299
+ this.emit('delete', {
300
+ action: 'delete',
301
+ path,
302
+ object: null,
303
+ ...parentParams,
304
+ });
305
+ } else {
306
+ const parentPath = this.parentNode.getNodePath(false);
307
+ this.parentNode.emit('update', {
308
+ action: 'update',
309
+ path: parentPath,
310
+ object: {
311
+ [this.parentKey]: null,
312
+ },
313
+ oldObject: {
314
+ [this.parentKey]: this.toJSON(),
315
+ },
316
+ });
317
+ }
318
+ }
319
+ }
320
+ }
321
+
304
322
  /**
305
323
  * 删除节点
306
324
  */
@@ -329,13 +347,6 @@ export class BaseNode extends EventEmitter {
329
347
  });
330
348
  }
331
349
  }
332
-
333
- // if(this.concept === 'Logic') {
334
- // this.traverseChildren((ele: BaseNode) => {
335
- // if(ele.concept === 'CallQueryComponent')
336
- // (ele as CallQueryComponent).removeStructure();
337
- // });
338
- // }
339
350
  }
340
351
 
341
352
  /**
@@ -669,6 +680,10 @@ export class BaseNode extends EventEmitter {
669
680
  /* override */
670
681
  }
671
682
 
683
+ async findReadOnlyLogicUsage(): Promise<any> {
684
+ /* override */
685
+ }
686
+
672
687
  /**
673
688
  * 重命名
674
689
  */
@@ -692,13 +707,7 @@ export class BaseNode extends EventEmitter {
692
707
  async addParamsPrepare(): Promise<any> {
693
708
  /* override */
694
709
  }
695
- /**
696
- * 添加参数准备
697
- */
698
- @action('页面删除')
699
- async viewPrepareDelete(): Promise<any> {
700
- /* override */
701
- }
710
+
702
711
  /**
703
712
  * 销毁
704
713
  * 从 Map 中删除点和子节点