@lcap/nasl 1.0.2 → 2.12.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 (299) hide show
  1. package/out/automate/engine/index.d.ts +1 -0
  2. package/out/automate/engine/index.js +34 -12
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/operators.d.ts +10 -2
  5. package/out/automate/engine/operators.js +105 -7
  6. package/out/automate/engine/operators.js.map +1 -1
  7. package/out/automate/engine/uniqueName.d.ts +8 -2
  8. package/out/automate/engine/uniqueName.js +72 -4
  9. package/out/automate/engine/uniqueName.js.map +1 -1
  10. package/out/automate/engine/utils.d.ts +1 -0
  11. package/out/automate/engine/utils.js +92 -67
  12. package/out/automate/engine/utils.js.map +1 -1
  13. package/out/automate/template/process.d.ts +9 -0
  14. package/out/automate/template/process.js +10976 -0
  15. package/out/automate/template/process.js.map +1 -0
  16. package/out/bak/translator.js +1 -0
  17. package/out/bak/translator.js.map +1 -1
  18. package/out/common/BaseNode.d.ts +5 -0
  19. package/out/common/BaseNode.js +24 -3
  20. package/out/common/BaseNode.js.map +1 -1
  21. package/out/concepts/App__.d.ts +51 -49
  22. package/out/concepts/App__.js +86 -53
  23. package/out/concepts/App__.js.map +1 -1
  24. package/out/concepts/BindAttribute__.js +2 -2
  25. package/out/concepts/BindAttribute__.js.map +1 -1
  26. package/out/concepts/BindDirective__.js +10 -3
  27. package/out/concepts/BindDirective__.js.map +1 -1
  28. package/out/concepts/BindEvent__.js +15 -6
  29. package/out/concepts/BindEvent__.js.map +1 -1
  30. package/out/concepts/BooleanLiteral__.d.ts +4 -0
  31. package/out/concepts/BooleanLiteral__.js +11 -0
  32. package/out/concepts/BooleanLiteral__.js.map +1 -1
  33. package/out/concepts/CallFunction__.js +8 -2
  34. package/out/concepts/CallFunction__.js.map +1 -1
  35. package/out/concepts/CallLogic__.js +48 -30
  36. package/out/concepts/CallLogic__.js.map +1 -1
  37. package/out/concepts/CallQueryComponent__.d.ts +8 -7
  38. package/out/concepts/CallQueryComponent__.js +86 -76
  39. package/out/concepts/CallQueryComponent__.js.map +1 -1
  40. package/out/concepts/Comment__.js +1 -1
  41. package/out/concepts/Comment__.js.map +1 -1
  42. package/out/concepts/ConfigGroup__.d.ts +1 -0
  43. package/out/concepts/ConfigGroup__.js +7 -0
  44. package/out/concepts/ConfigGroup__.js.map +1 -1
  45. package/out/concepts/ConfigProperty__.d.ts +1 -0
  46. package/out/concepts/ConfigProperty__.js +3 -0
  47. package/out/concepts/ConfigProperty__.js.map +1 -1
  48. package/out/concepts/Configuration__.d.ts +1 -0
  49. package/out/concepts/Configuration__.js +3 -0
  50. package/out/concepts/Configuration__.js.map +1 -1
  51. package/out/concepts/DataSource__.d.ts +143 -0
  52. package/out/concepts/DataSource__.js +318 -0
  53. package/out/concepts/DataSource__.js.map +1 -0
  54. package/out/concepts/Destination__.js +8 -8
  55. package/out/concepts/Destination__.js.map +1 -1
  56. package/out/concepts/End__.js +2 -2
  57. package/out/concepts/End__.js.map +1 -1
  58. package/out/concepts/EntityIndex__.d.ts +5 -0
  59. package/out/concepts/EntityIndex__.js +6 -0
  60. package/out/concepts/EntityIndex__.js.map +1 -1
  61. package/out/concepts/EntityProperty__.d.ts +9 -0
  62. package/out/concepts/EntityProperty__.js +19 -2
  63. package/out/concepts/EntityProperty__.js.map +1 -1
  64. package/out/concepts/Entity__.d.ts +5 -0
  65. package/out/concepts/Entity__.js +20 -10
  66. package/out/concepts/Entity__.js.map +1 -1
  67. package/out/concepts/Enum__.js +12 -6
  68. package/out/concepts/Enum__.js.map +1 -1
  69. package/out/concepts/ForEachStatement__.js +2 -2
  70. package/out/concepts/ForEachStatement__.js.map +1 -1
  71. package/out/concepts/Function__.d.ts +18 -0
  72. package/out/concepts/Function__.js +96 -1
  73. package/out/concepts/Function__.js.map +1 -1
  74. package/out/concepts/Identifier__.js +6 -15
  75. package/out/concepts/Identifier__.js.map +1 -1
  76. package/out/concepts/IfStatement__.js +8 -8
  77. package/out/concepts/IfStatement__.js.map +1 -1
  78. package/out/concepts/Interface__.js +19 -12
  79. package/out/concepts/Interface__.js.map +1 -1
  80. package/out/concepts/JSBlock__.js +3 -5
  81. package/out/concepts/JSBlock__.js.map +1 -1
  82. package/out/concepts/Logic__.js +44 -44
  83. package/out/concepts/Logic__.js.map +1 -1
  84. package/out/concepts/Module__.d.ts +116 -194
  85. package/out/concepts/Module__.js +31 -114
  86. package/out/concepts/Module__.js.map +1 -1
  87. package/out/concepts/Namespace__.d.ts +0 -86
  88. package/out/concepts/Namespace__.js +1 -108
  89. package/out/concepts/Namespace__.js.map +1 -1
  90. package/out/concepts/Param__.d.ts +2 -1
  91. package/out/concepts/Param__.js +1 -1
  92. package/out/concepts/Param__.js.map +1 -1
  93. package/out/concepts/ProcessElement__.js +30 -10
  94. package/out/concepts/ProcessElement__.js.map +1 -1
  95. package/out/concepts/Process__.d.ts +1 -1
  96. package/out/concepts/Process__.js +17 -10
  97. package/out/concepts/Process__.js.map +1 -1
  98. package/out/concepts/QueryFieldExpression__.js +8 -1
  99. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  100. package/out/concepts/QueryFromExpression__.d.ts +4 -0
  101. package/out/concepts/QueryFromExpression__.js +13 -2
  102. package/out/concepts/QueryFromExpression__.js.map +1 -1
  103. package/out/concepts/QueryJoinExpression__.d.ts +4 -0
  104. package/out/concepts/QueryJoinExpression__.js +14 -3
  105. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  106. package/out/concepts/Return__.js +1 -1
  107. package/out/concepts/Return__.js.map +1 -1
  108. package/out/concepts/Role__.js +10 -3
  109. package/out/concepts/Role__.js.map +1 -1
  110. package/out/concepts/SqlQueryComponent__.d.ts +14 -0
  111. package/out/concepts/SqlQueryComponent__.js +48 -5
  112. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  113. package/out/concepts/StringLiteral__.d.ts +1 -1
  114. package/out/concepts/StringLiteral__.js +1 -1
  115. package/out/concepts/StructureProperty__.js +6 -5
  116. package/out/concepts/StructureProperty__.js.map +1 -1
  117. package/out/concepts/Structure__.js +19 -12
  118. package/out/concepts/Structure__.js.map +1 -1
  119. package/out/concepts/SwitchCase__.d.ts +1 -1
  120. package/out/concepts/SwitchCase__.js +23 -25
  121. package/out/concepts/SwitchCase__.js.map +1 -1
  122. package/out/concepts/SwitchStatement__.js +1 -6
  123. package/out/concepts/SwitchStatement__.js.map +1 -1
  124. package/out/concepts/TypeAnnotation__.d.ts +8 -0
  125. package/out/concepts/TypeAnnotation__.js +44 -2
  126. package/out/concepts/TypeAnnotation__.js.map +1 -1
  127. package/out/concepts/Variable__.js +1 -1
  128. package/out/concepts/Variable__.js.map +1 -1
  129. package/out/concepts/ViewElement__.js +25 -20
  130. package/out/concepts/ViewElement__.js.map +1 -1
  131. package/out/concepts/View__.d.ts +0 -2
  132. package/out/concepts/View__.js +27 -32
  133. package/out/concepts/View__.js.map +1 -1
  134. package/out/concepts/WhileStatement__.js +4 -4
  135. package/out/concepts/WhileStatement__.js.map +1 -1
  136. package/out/concepts/basics/stdlib/nasl.auth.js +20 -0
  137. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -1
  138. package/out/concepts/basics/stdlib/nasl.process.d.ts +4 -0
  139. package/out/concepts/basics/stdlib/nasl.process.js +410 -0
  140. package/out/concepts/basics/stdlib/nasl.process.js.map +1 -1
  141. package/out/concepts/basics/stdlib/nasl.ui.js +1 -11
  142. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  143. package/out/concepts/basics/stdlib/nasl.util.js +280 -2
  144. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  145. package/out/concepts/basics/types/index.d.ts +1 -0
  146. package/out/concepts/basics/types/index.js +4 -1
  147. package/out/concepts/basics/types/index.js.map +1 -1
  148. package/out/concepts/index__.d.ts +1 -0
  149. package/out/concepts/index__.js +1 -0
  150. package/out/concepts/index__.js.map +1 -1
  151. package/out/generator/genBundleFiles.d.ts +3 -1
  152. package/out/generator/genBundleFiles.js +23 -5
  153. package/out/generator/genBundleFiles.js.map +1 -1
  154. package/out/generator/genMetaData.d.ts +1 -0
  155. package/out/generator/genMetaData.js +20 -12
  156. package/out/generator/genMetaData.js.map +1 -1
  157. package/out/index.d.ts +1 -1
  158. package/out/index.js +2 -1
  159. package/out/index.js.map +1 -1
  160. package/out/server/createUiTs.js +1 -0
  161. package/out/server/createUiTs.js.map +1 -1
  162. package/out/server/getLogics.js +27 -1
  163. package/out/server/getLogics.js.map +1 -1
  164. package/out/server/getMemberIdentifier.js +5 -0
  165. package/out/server/getMemberIdentifier.js.map +1 -1
  166. package/out/server/getProcesses.d.ts +4 -0
  167. package/out/server/getProcesses.js +69 -1
  168. package/out/server/getProcesses.js.map +1 -1
  169. package/out/server/naslServer.d.ts +1 -0
  170. package/out/server/naslServer.js +223 -26
  171. package/out/server/naslServer.js.map +1 -1
  172. package/out/server/process2LogicNamespace.js +10 -1
  173. package/out/server/process2LogicNamespace.js.map +1 -1
  174. package/out/server/translator.js +37 -1
  175. package/out/server/translator.js.map +1 -1
  176. package/out/service/creator/errHandles.js +5 -0
  177. package/out/service/creator/errHandles.js.map +1 -1
  178. package/out/service/storage/init.d.ts +1 -0
  179. package/out/service/storage/init.js +95 -84
  180. package/out/service/storage/init.js.map +1 -1
  181. package/out/templator/genCreateBlock.js +34 -24
  182. package/out/templator/genCreateBlock.js.map +1 -1
  183. package/out/templator/genCurdEditMultipleKeyBlock.js +28 -18
  184. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  185. package/out/templator/genCurdMultipleKeyBlock.js +45 -29
  186. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  187. package/out/templator/genEditTableBlock.js +15 -13
  188. package/out/templator/genEditTableBlock.js.map +1 -1
  189. package/out/templator/genEnumSelectBlock.js +1 -1
  190. package/out/templator/genEnumSelectBlock.js.map +1 -1
  191. package/out/templator/genGridViewBlock.js +29 -24
  192. package/out/templator/genGridViewBlock.js.map +1 -1
  193. package/out/templator/genListViewBlock.js +7 -5
  194. package/out/templator/genListViewBlock.js.map +1 -1
  195. package/out/templator/genQueryComponent.js +25 -26
  196. package/out/templator/genQueryComponent.js.map +1 -1
  197. package/out/templator/genSelectBlock.js +8 -7
  198. package/out/templator/genSelectBlock.js.map +1 -1
  199. package/out/templator/genTableBlock.js +31 -21
  200. package/out/templator/genTableBlock.js.map +1 -1
  201. package/out/templator/genUpdateBlock.js +34 -24
  202. package/out/templator/genUpdateBlock.js.map +1 -1
  203. package/out/templator/utils.d.ts +2 -2
  204. package/out/templator/utils.js.map +1 -1
  205. package/out/test/integration/connect-file.js +6 -6
  206. package/out/test/integration/connect-file.js.map +1 -1
  207. package/out/translator/index.js +1 -1
  208. package/out/translator/index.js.map +1 -1
  209. package/out/utils/index.d.ts +5 -0
  210. package/out/utils/index.js +50 -1
  211. package/out/utils/index.js.map +1 -1
  212. package/package.json +1 -1
  213. package/src/automate/engine/index.js +33 -8
  214. package/src/automate/engine/operators.js +114 -17
  215. package/src/automate/engine/uniqueName.js +77 -9
  216. package/src/automate/engine/utils.js +95 -68
  217. package/src/automate/template/process.js +10999 -0
  218. package/src/bak/translator.js +1 -0
  219. package/src/common/BaseNode.ts +21 -4
  220. package/src/concepts/App__.ts +128 -94
  221. package/src/concepts/BindAttribute__.ts +2 -2
  222. package/src/concepts/BindDirective__.ts +9 -7
  223. package/src/concepts/BindEvent__.ts +14 -6
  224. package/src/concepts/BooleanLiteral__.ts +12 -0
  225. package/src/concepts/CallFunction__.ts +6 -2
  226. package/src/concepts/CallLogic__.ts +47 -32
  227. package/src/concepts/CallQueryComponent__.ts +92 -81
  228. package/src/concepts/Comment__.ts +1 -1
  229. package/src/concepts/ConfigGroup__.ts +3 -1
  230. package/src/concepts/ConfigProperty__.ts +4 -0
  231. package/src/concepts/Configuration__.ts +3 -0
  232. package/src/concepts/DataSource__.ts +391 -0
  233. package/src/concepts/Destination__.ts +24 -8
  234. package/src/concepts/End__.ts +2 -2
  235. package/src/concepts/EntityIndex__.ts +7 -0
  236. package/src/concepts/EntityProperty__.ts +20 -2
  237. package/src/concepts/Entity__.ts +23 -11
  238. package/src/concepts/Enum__.ts +25 -6
  239. package/src/concepts/ForEachStatement__.ts +2 -2
  240. package/src/concepts/Function__.ts +95 -1
  241. package/src/concepts/Identifier__.ts +15 -15
  242. package/src/concepts/IfStatement__.ts +9 -9
  243. package/src/concepts/Interface__.ts +20 -12
  244. package/src/concepts/JSBlock__.ts +3 -12
  245. package/src/concepts/Logic__.ts +45 -79
  246. package/src/concepts/Module__.ts +141 -342
  247. package/src/concepts/Namespace__.ts +1 -204
  248. package/src/concepts/Param__.ts +3 -2
  249. package/src/concepts/ProcessElement__.ts +33 -12
  250. package/src/concepts/Process__.ts +18 -12
  251. package/src/concepts/QueryFieldExpression__.ts +9 -1
  252. package/src/concepts/QueryFromExpression__.ts +13 -2
  253. package/src/concepts/QueryJoinExpression__.ts +14 -3
  254. package/src/concepts/Return__.ts +1 -1
  255. package/src/concepts/Role__.ts +10 -4
  256. package/src/concepts/SqlQueryComponent__.ts +47 -11
  257. package/src/concepts/StringLiteral__.ts +1 -1
  258. package/src/concepts/StructureProperty__.ts +6 -9
  259. package/src/concepts/Structure__.ts +19 -11
  260. package/src/concepts/SwitchCase__.ts +23 -27
  261. package/src/concepts/SwitchStatement__.ts +1 -5
  262. package/src/concepts/TypeAnnotation__.ts +43 -2
  263. package/src/concepts/Variable__.ts +1 -1
  264. package/src/concepts/ViewElement__.ts +26 -39
  265. package/src/concepts/View__.ts +29 -34
  266. package/src/concepts/WhileStatement__.ts +4 -4
  267. package/src/concepts/basics/stdlib/nasl.auth.ts +20 -0
  268. package/src/concepts/basics/stdlib/nasl.process.ts +406 -0
  269. package/src/concepts/basics/stdlib/nasl.ui.ts +1 -11
  270. package/src/concepts/basics/stdlib/nasl.util.ts +281 -2
  271. package/src/concepts/basics/types/index.ts +1 -0
  272. package/src/concepts/index__.ts +1 -0
  273. package/src/generator/genBundleFiles.ts +28 -7
  274. package/src/generator/genMetaData.ts +22 -13
  275. package/src/index.ts +1 -1
  276. package/src/server/createUiTs.ts +1 -0
  277. package/src/server/getLogics.ts +29 -4
  278. package/src/server/getMemberIdentifier.ts +4 -0
  279. package/src/server/getProcesses.ts +68 -0
  280. package/src/server/naslServer.ts +227 -30
  281. package/src/server/process2LogicNamespace.ts +29 -19
  282. package/src/server/translator.ts +39 -1
  283. package/src/service/creator/errHandles.js +6 -0
  284. package/src/service/storage/init.ts +97 -86
  285. package/src/templator/genCreateBlock.ts +35 -26
  286. package/src/templator/genCurdEditMultipleKeyBlock.ts +29 -21
  287. package/src/templator/genCurdMultipleKeyBlock.ts +46 -31
  288. package/src/templator/genEditTableBlock.ts +17 -14
  289. package/src/templator/genEnumSelectBlock.ts +1 -1
  290. package/src/templator/genGridViewBlock.ts +30 -25
  291. package/src/templator/genListViewBlock.ts +10 -7
  292. package/src/templator/genQueryComponent.ts +28 -27
  293. package/src/templator/genSelectBlock.ts +9 -8
  294. package/src/templator/genTableBlock.ts +32 -23
  295. package/src/templator/genUpdateBlock.ts +35 -25
  296. package/src/templator/utils.ts +2 -2
  297. package/src/test/integration/connect-file.ts +6 -6
  298. package/src/translator/index.ts +1 -1
  299. package/src/utils/index.ts +51 -0
@@ -0,0 +1,391 @@
1
+ import App from './App__';
2
+ import { TranslatorState, withSourceMap, createCompilerState } from '../translator';
3
+
4
+ //================================================================================
5
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
6
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
7
+ //================================================================================
8
+ import { EventPayload, Params } from '../common/EventEmitter';
9
+ import { concept, excludedInJSON, property } from '../decorators';
10
+
11
+ import * as utils from '../utils';
12
+ import { v4 as uuidv4 } from 'uuid';
13
+ import BaseNode from '../common/BaseNode';
14
+ import classMap from '../common/classMap';
15
+ import Entity from './Entity__';
16
+
17
+ /**
18
+ * 数据源
19
+ */
20
+ @concept('数据源')
21
+ export class DataSource extends BaseNode {
22
+ /**
23
+ * 产品概念
24
+ */
25
+ @property()
26
+ concept: 'DataSource' = 'DataSource';
27
+
28
+ /**
29
+ * 数据源名称
30
+ */
31
+ @property()
32
+ name: string = undefined;
33
+
34
+ /**
35
+ * 数据源描述
36
+ */
37
+ @property()
38
+ description: string = undefined;
39
+
40
+ /**
41
+ * 实体列表
42
+ */
43
+ @property('Entity')
44
+ entities: Array<Entity> = [];
45
+
46
+
47
+
48
+ /**
49
+ * @param source 需要合并的部分参数
50
+ */
51
+ constructor(source?: Partial<DataSource>) {
52
+ source = Object.assign({}, DataSource.getDefaultOptions(), source);
53
+ super(source);
54
+ super.subConstructor(source);
55
+ }
56
+
57
+ static from(source: any, parentNode?: any, parentKey?: string): DataSource {
58
+ return super.from(source, parentNode, parentKey) as DataSource;
59
+ }
60
+
61
+ /**
62
+ * 从父级删除该节点
63
+ * @internal
64
+ */
65
+ _delete() {
66
+ let params: Params = null;
67
+ if (this.parentNode) {
68
+ params = (this.parentNode as any)?.__removeDataSource?.(this);
69
+ }
70
+ return params;
71
+ }
72
+ /**
73
+ * 设置数据源描述
74
+ */
75
+ setDescription(description: string) {
76
+ const object = {
77
+ description,
78
+ };
79
+ this.update({
80
+ ...object,
81
+ });
82
+ }
83
+
84
+ getEntityExistingNames(excludedList: Array<Entity> = []) {
85
+ const excludedSet = new Set(excludedList);
86
+ return (this.entities || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
87
+ }
88
+ getEntityUniqueName(name = 'Entity1') {
89
+ return utils.unique(name, this.getEntityExistingNames(), undefined, true);
90
+ }
91
+
92
+ /**
93
+ * 插入实体
94
+ * @internal
95
+ * @param name 实体名称,如果不填会自动生成一个唯一名称
96
+ */
97
+ _insertEntityAt(name: string, index: number): Entity;
98
+
99
+ /**
100
+ * 插入实体
101
+ * @internal
102
+ * @param entityOptions 实体参数
103
+ */
104
+ _insertEntityAt(entityOptions: Partial<Entity>, index: number): Entity;
105
+
106
+ /**
107
+ * 插入实体
108
+ * @internal
109
+ * @param entity 已有的实体实例
110
+ */
111
+ _insertEntityAt(entity: Entity, index: number): Entity;
112
+
113
+ _insertEntityAt(options: string | Partial<Entity> | Entity, index: number) {
114
+ const entityOptions: any = {};
115
+ const relationOptions = { parentNode: this, parentKey: 'entities' };
116
+ let entity: Entity;
117
+ if (!options) {
118
+ entity = Entity.from({
119
+ ...entityOptions,
120
+ name: this.getEntityUniqueName(),
121
+ }, this, 'entities');
122
+ } else if (typeof options === 'string') {
123
+ entity = Entity.from({
124
+ ...entityOptions,
125
+ name: options,
126
+ }, this, 'entities');
127
+ } else if (options instanceof Entity) {
128
+ options.ensureDelete(); // 同一实例不支持多处存在
129
+ entity = options;
130
+ Object.assign(entity, relationOptions);
131
+ } else {
132
+ entity = Entity.from({
133
+ ...entityOptions,
134
+ ...options,
135
+ }, this, 'entities');
136
+ }
137
+ this.entities.splice(index, 0, entity);
138
+ return entity;
139
+ }
140
+
141
+ /**
142
+ * 插入实体
143
+ * @param name 实体名称,如果不填会自动生成一个唯一名称
144
+ */
145
+ insertEntityAt(name: string, index: number): Entity;
146
+
147
+ /**
148
+ * 插入实体
149
+ * @param entityOptions 实体参数
150
+ */
151
+ insertEntityAt(entityOptions: Partial<Entity>, index: number): Entity;
152
+
153
+ /**
154
+ * 插入实体
155
+ * @param entity 已有的实体实例
156
+ */
157
+ insertEntityAt(entity: Entity, index: number): Entity;
158
+
159
+ insertEntityAt(options: string | Partial<Entity> | Entity, index: number) {
160
+ const node = this._insertEntityAt(options as any, index);
161
+ node.create({
162
+ index,
163
+ parentNode: this,
164
+ parentKey: 'entities',
165
+ });
166
+ return node;
167
+ }
168
+
169
+ /**
170
+ * 添加实体
171
+ * @internal
172
+ * @param name 实体名称,如果不填会自动生成一个唯一名称
173
+ */
174
+ _addEntity(name?: string): Entity;
175
+
176
+ /**
177
+ * 添加实体
178
+ * @internal
179
+ * @param entityOptions 实体参数
180
+ */
181
+ _addEntity(entityOptions: Partial<Entity>): Entity;
182
+
183
+ /**
184
+ * 添加实体
185
+ * @internal
186
+ * @param entity 已有的实体实例
187
+ */
188
+ _addEntity(entity: Entity): Entity;
189
+
190
+ _addEntity(options?: string | Partial<Entity> | Entity) {
191
+ const index = 0;
192
+ return this._insertEntityAt(options as any, index);
193
+ }
194
+
195
+ /**
196
+ * 添加实体
197
+ * @internal
198
+ * @param name 实体名称,如果不填会自动生成一个唯一名称
199
+ */
200
+ addEntity(name?: string): Entity;
201
+
202
+ /**
203
+ * 添加实体
204
+ * @param entityOptions 实体参数
205
+ */
206
+ addEntity(entityOptions: Partial<Entity>): Entity;
207
+
208
+ /**
209
+ * 添加实体
210
+ * @param entity 已有的实体实例
211
+ */
212
+ addEntity(entity: Entity): Entity;
213
+
214
+ addEntity(options?: string | Partial<Entity> | Entity) {
215
+ const node = this._addEntity(options as any);
216
+ const index = this.entities.indexOf(node);
217
+ node.create({
218
+ index,
219
+ parentNode: this,
220
+ parentKey: 'entities',
221
+ });
222
+ return node;
223
+ }
224
+
225
+
226
+
227
+
228
+ /**
229
+ * 删除实体
230
+ * @param name 实体名称
231
+ */
232
+ removeEntity(name: string): void;
233
+
234
+ /**
235
+ * 删除实体
236
+ * @param entity 已有的实体实例
237
+ */
238
+ removeEntity(entity: Entity): void;
239
+
240
+ removeEntity(options: string | Entity) {
241
+ let entity: Entity;
242
+ if (typeof options === 'string') {
243
+ entity = this.entities.find((item) => item.name === options);
244
+ if (!entity) {
245
+ throw new Error('找不到实体 ' + options);
246
+ }
247
+ } else {
248
+ entity = options;
249
+ }
250
+ return entity.delete();
251
+ }
252
+
253
+ __removeEntity(entity: Entity) {
254
+ const parentKey = entity.parentKey;
255
+ const params: Params = {
256
+ parentNode: this,
257
+ parentKey,
258
+ index: -1,
259
+ object: null,
260
+ oldObject: entity,
261
+ };
262
+ if (parentKey) {
263
+ params.parentKey = parentKey;
264
+ if (Array.isArray((this as any)[parentKey])) {
265
+ const index = (this as any)[parentKey].indexOf(entity);
266
+ ~index && (this as any)[parentKey].splice(index, 1);
267
+ params.index = index;
268
+ } else if ((this as any)[parentKey] === entity) {
269
+ params.index = 0;
270
+ (this as any)[parentKey] = undefined;
271
+ }
272
+ }
273
+ return params;
274
+ }
275
+
276
+ //================================================================================
277
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
278
+ // 自动生成的代码已结束。下面可以手动编写。
279
+ //================================================================================
280
+ findEntityByName(name: string) {
281
+ return this.entities.find((entity) => entity.name === name);
282
+ }
283
+ /**
284
+ * 设置DataSource的名称
285
+ */
286
+ setName(name: string) {
287
+ const App = this.rootNode;
288
+ App.emit('collect:start', {
289
+ actionMsg: '修改数据源名称',
290
+ });
291
+ // 修改配置对应配置上的 datasource
292
+ const dataSourceGroup = (App as App).configuration?.getGroup('dataSource');
293
+ if (dataSourceGroup) {
294
+ const dataSourceConfig = dataSourceGroup.getProperty(this.name);
295
+ if (dataSourceConfig) {
296
+ dataSourceConfig.setName(name);
297
+ }
298
+ }
299
+
300
+ // 修改自己内部的名称
301
+ const object = {
302
+ name,
303
+ };
304
+ this.update({
305
+ ...object,
306
+ field: 'name',
307
+ });
308
+ // 结束修改 ,批量操作
309
+ App.emit('collect:end');
310
+ }
311
+ getNamespace() {
312
+ if (this.parentNode && (this.parentNode as App).getNamespace) {
313
+ const parentNamespace = (this.parentNode as App).getNamespace();
314
+ const parentName = this.parentNode.name;
315
+ const arr = [parentNamespace];
316
+ if (this.parentNode.concept !== 'App' && parentName) {
317
+ arr.push(parentName);
318
+ }
319
+ return `${arr.join('.')}.dataSources`;
320
+ } else
321
+ throw new Error('无法获取命名空间,请设置 parentNode!');
322
+ }
323
+ /**
324
+ * 生成宿主语言的文件路径
325
+ * @param name 一般不用传,用于 rename
326
+ */
327
+ getEmbeddedFilePath(name = this.name) {
328
+ return `/embedded/${this.rootNode?.name || this.parentNode.name}/datasources/${name}.ts`;
329
+ }
330
+ @withSourceMap()
331
+ toEmbeddedTS(state?: TranslatorState): string {
332
+ let code = `export namespace ${this.name} {\n`;
333
+ code += 'const name = ';
334
+ code += '"' + this.name + '";\n';
335
+ code += '}\n';
336
+ return code;
337
+ }
338
+ toEmbeddedTSFile() {
339
+ let code = `namespace ${this.getNamespace()} {\n`;
340
+
341
+ const state = createCompilerState(code, { tabSize: 1 });
342
+ try {
343
+ code += this.toEmbeddedTS(state);
344
+ } catch (err) {
345
+ code += '';
346
+ }
347
+ code += '}\n';
348
+
349
+ return {
350
+ code,
351
+ filePath: this.getEmbeddedFilePath(),
352
+ sourceMap: state.sourceMap,
353
+ };
354
+ }
355
+
356
+ // 获取datasource对应的数据源配置
357
+ get dataSourceConfig() {
358
+ let devProperty = null;
359
+ let onlineProperty = null;
360
+ let devValue = null;
361
+ let onlineValue = null;
362
+
363
+ const dataSourceGroup = (this.rootNode as App).configuration?.getGroup('dataSource');
364
+ if (dataSourceGroup) {
365
+ const property = dataSourceGroup.getProperty(this.name);
366
+ if (property.values) {
367
+ devProperty = property.values.find((item) => item.env === 'dev');
368
+ devValue = { ...devProperty, ...JSON.parse(devProperty.value || '{}') };
369
+ onlineProperty = property.values.find((item) => item.env === 'online');
370
+ onlineValue = { ...onlineProperty, ...JSON.parse(onlineProperty.value || '{}') };
371
+ }
372
+ }
373
+ return {
374
+ devProperty,
375
+ onlineProperty,
376
+ devValue,
377
+ onlineValue,
378
+ };
379
+ }
380
+ //================================================================================
381
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
382
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
383
+ //================================================================================
384
+ }
385
+
386
+ classMap['DataSource'] = DataSource;
387
+ export default DataSource;
388
+ //================================================================================
389
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
390
+ // 自动生成的代码已结束。下面可以手动编写。
391
+ //================================================================================
@@ -52,6 +52,8 @@ export class Destination extends LogicItem {
52
52
  @property('Argument')
53
53
  arguments: Array<Argument> = [];
54
54
 
55
+
56
+
55
57
  /**
56
58
  * @param source 需要合并的部分参数
57
59
  */
@@ -65,6 +67,7 @@ export class Destination extends LogicItem {
65
67
  return super.from(source, parentNode, parentKey) as Destination;
66
68
  }
67
69
 
70
+
68
71
  /**
69
72
  * 设置viewNamespace
70
73
  */
@@ -89,6 +92,10 @@ export class Destination extends LogicItem {
89
92
  });
90
93
  }
91
94
 
95
+
96
+
97
+
98
+
92
99
  /**
93
100
  * 插入实际参数
94
101
  * @internal
@@ -121,6 +128,8 @@ export class Destination extends LogicItem {
121
128
  return argument;
122
129
  }
123
130
 
131
+
132
+
124
133
  /**
125
134
  * 插入实际参数
126
135
  * @param argumentOptions 实际参数参数
@@ -143,6 +152,8 @@ export class Destination extends LogicItem {
143
152
  return node;
144
153
  }
145
154
 
155
+
156
+
146
157
  /**
147
158
  * 添加实际参数
148
159
  * @internal
@@ -162,6 +173,8 @@ export class Destination extends LogicItem {
162
173
  return this._insertArgumentAt(options as any, index);
163
174
  }
164
175
 
176
+
177
+
165
178
  /**
166
179
  * 添加实际参数
167
180
  * @param argumentOptions 实际参数参数
@@ -185,6 +198,9 @@ export class Destination extends LogicItem {
185
198
  return node;
186
199
  }
187
200
 
201
+
202
+
203
+
188
204
  /**
189
205
  * 删除实际参数
190
206
  * @param argument 已有的实际参数实例
@@ -192,7 +208,7 @@ export class Destination extends LogicItem {
192
208
  removeArgument(argument: Argument): void;
193
209
 
194
210
  removeArgument(options: Argument) {
195
- const argument: Argument = options;
211
+ let argument: Argument = options;
196
212
  return argument.delete();
197
213
  }
198
214
 
@@ -388,7 +404,7 @@ export class Destination extends LogicItem {
388
404
  }
389
405
  @withSourceMap()
390
406
  toEmbeddedTSInProcess(state: TranslatorState, prependCode: string): string {
391
- // const tab = indent(state.tabSize);
407
+ // const tab = indent((state?.tabSize || 0));
392
408
  if (this.tsCalleeNamespace && this.tsName) {
393
409
  let code = `destination: function() {\n`;
394
410
  code += prependCode;
@@ -402,7 +418,7 @@ export class Destination extends LogicItem {
402
418
  }
403
419
  code += `});\n`;
404
420
  }
405
- code += indent(state.tabSize + 1) + `}\n`;
421
+ code += indent((state?.tabSize || 0) + 1) + `}\n`;
406
422
  return code;
407
423
  } else {
408
424
  return '__IDENTIFIER__';
@@ -415,7 +431,7 @@ export class Destination extends LogicItem {
415
431
 
416
432
  if (this.parentNode instanceof BindAttribute) {
417
433
  code = `${utils.firstLowerCase(this.concept)}: () => {\n`;
418
- code += indent(state.tabSize + 2);
434
+ code += indent((state?.tabSize || 0) + 2);
419
435
  if (this.tsCalleeNamespace && this.tsName) {
420
436
  code += `${this.tsCalleeNamespace}.${this.tsName}.$destination({`;
421
437
  if (Array.isArray(this.arguments)) {
@@ -425,7 +441,7 @@ export class Destination extends LogicItem {
425
441
  }
426
442
  code += `});\n`;
427
443
  }
428
- code += indent(state.tabSize + 1) + `},\n`;
444
+ code += indent((state?.tabSize || 0) + 1) + `},\n`;
429
445
  return code;
430
446
  } else {
431
447
  if (this.tsCalleeNamespace && this.tsName) {
@@ -445,7 +461,7 @@ export class Destination extends LogicItem {
445
461
  @withSourceMap()
446
462
  toEmbeddedTSNormalFunction(state?: TranslatorState): string {
447
463
  let code = `let ${utils.firstLowerCase(this.concept)} = function() {\n`;
448
- const tab = indent(state.tabSize + 2);
464
+ const tab = indent((state?.tabSize || 0) + 2);
449
465
  if (this.tsCalleeNamespace && this.tsName) {
450
466
  code += `${tab}${this.tsCalleeNamespace}.${this.tsName}.$destination(`;
451
467
  if (Array.isArray(this.arguments)) {
@@ -455,7 +471,7 @@ export class Destination extends LogicItem {
455
471
  }
456
472
  code += `${tab});\n`;
457
473
  }
458
- code += `${indent(state.tabSize + 1)}}\n`;
474
+ code += `${indent((state?.tabSize || 0) + 1)}}\n`;
459
475
  return code;
460
476
  }
461
477
  //================================================================================
@@ -464,7 +480,7 @@ export class Destination extends LogicItem {
464
480
  //================================================================================
465
481
  }
466
482
 
467
- classMap.Destination = Destination;
483
+ classMap['Destination'] = Destination;
468
484
  export default Destination;
469
485
  //================================================================================
470
486
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
@@ -70,9 +70,9 @@ export class End extends LogicItem {
70
70
  let code = '';
71
71
  const ret = this.logic.returns[0];
72
72
  if (ret) {
73
- code += indent(state.tabSize) + 'return ' + ret.name + ';';
73
+ code += indent((state?.tabSize || 0)) + 'return ' + ret.name + ';';
74
74
  } else {
75
- code += indent(state.tabSize) + 'return;';
75
+ code += indent((state?.tabSize || 0)) + 'return;';
76
76
  }
77
77
  return code;
78
78
  }
@@ -15,6 +15,7 @@ import classMap from '../common/classMap';
15
15
  import Entity from './Entity__';
16
16
  import Module from './Module__';
17
17
  import App from './App__';
18
+ import DataSource from './DataSource__';
18
19
 
19
20
  /**
20
21
  * 实体索引
@@ -75,6 +76,12 @@ export class EntityIndex extends BaseNode {
75
76
  get app() {
76
77
  return this.getAncestor('App') as App;
77
78
  }
79
+ /**
80
+ * 祖先 DataSource
81
+ */
82
+ get dataSource() {
83
+ return this.getAncestor('DataSource') as DataSource;
84
+ }
78
85
 
79
86
  /**
80
87
  * @param source 需要合并的部分参数
@@ -17,6 +17,7 @@ import TypeAnnotation from './TypeAnnotation__';
17
17
  import Entity from './Entity__';
18
18
  import Module from './Module__';
19
19
  import App from './App__';
20
+ import DataSource from './DataSource__';
20
21
 
21
22
  /**
22
23
  * 实体字段
@@ -154,6 +155,12 @@ export class EntityProperty extends BaseNode {
154
155
  get app() {
155
156
  return this.getAncestor('App') as App;
156
157
  }
158
+ /**
159
+ * 祖先 DataSource
160
+ */
161
+ get dataSource() {
162
+ return this.getAncestor('DataSource') as DataSource;
163
+ }
157
164
 
158
165
  /**
159
166
  * @param source 需要合并的部分参数
@@ -417,8 +424,8 @@ export class EntityProperty extends BaseNode {
417
424
  let code = '';
418
425
  if (this.relationNamespace && this.relationEntity && this.relationProperty) {
419
426
  code += `@nasl.annotation.EntityRelation(new ${this.relationNamespace}.${this.relationEntity}().${this.relationProperty})\n`;
420
- code += indent(state.tabSize + 2);
421
- // code += indent(state.tabSize + 1);
427
+ code += indent((state?.tabSize || 0) + 2);
428
+ // code += indent((state?.tabSize || 0) + 1);
422
429
  }
423
430
 
424
431
  code += this.name;
@@ -528,6 +535,17 @@ export class EntityProperty extends BaseNode {
528
535
  });
529
536
  }
530
537
 
538
+ /**
539
+ * 设置关联实体实体名称
540
+ */
541
+ setRelationNamespace(relationNamespace: string) {
542
+ const object = {
543
+ relationNamespace,
544
+ };
545
+ this.update({
546
+ ...object,
547
+ });
548
+ }
531
549
  /**
532
550
  * 设置关联实体实体名称
533
551
  */
@@ -15,6 +15,7 @@ import classMap from '../common/classMap';
15
15
  import EntityProperty from './EntityProperty__';
16
16
  import EntityIndex from './EntityIndex__';
17
17
  import Module from './Module__';
18
+ import DataSource from './DataSource__';
18
19
  import App from './App__';
19
20
 
20
21
  /**
@@ -82,6 +83,12 @@ export class Entity extends BaseNode {
82
83
  get app() {
83
84
  return this.getAncestor('App') as App;
84
85
  }
86
+ /**
87
+ * 祖先 DataSource
88
+ */
89
+ get dataSource() {
90
+ return this.getAncestor('DataSource') as DataSource;
91
+ }
85
92
 
86
93
  /**
87
94
  * @param source 需要合并的部分参数
@@ -644,40 +651,45 @@ export class Entity extends BaseNode {
644
651
  @withSourceMap()
645
652
  toEmbeddedTS(state?: TranslatorState): string {
646
653
  let code = `export class ${this.name} {\n`;
647
- code += indent(state.tabSize + 1);
654
+ code += indent((state?.tabSize || 0) + 1);
648
655
  code += `__name: '${this.getNamespace()}.${this.name}';\n`;
649
656
  this.properties.forEach((property) => {
650
- code += indent(state.tabSize + 1);
657
+ code += indent((state?.tabSize || 0) + 1);
651
658
  code += property.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
652
659
  code += ';\n';
653
660
  });
654
661
  if (this.indexes && this.indexes.length) {
655
- code += indent(state.tabSize + 1);
662
+ code += indent((state?.tabSize || 0) + 1);
656
663
  code += `__IndexList() {\n`;
657
664
  code += ` return [`;
658
665
  this.indexes.forEach((entityIndex) => {
659
- code += indent(state.tabSize + 1);
666
+ code += indent((state?.tabSize || 0) + 1);
660
667
  code += '\n ';
661
668
  code += entityIndex.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
662
669
  });
663
- code += indent(state.tabSize) + `\n ];\n }\n`;
670
+ code += indent((state?.tabSize || 0)) + `\n ];\n }\n`;
664
671
  }
665
672
 
666
673
  const ns = this.ns;
674
+
675
+ /**
676
+ * 8个函数的总行数
677
+ * 如果修改这里,可能会影响到dataSource的重命名, 在naslserver中,可能要一起修改
678
+ */
667
679
  code += `\nstatic logics = {\n`;
668
680
  ns.logics.forEach((logic) => {
669
- code += indent(state.tabSize + 1);
681
+ code += indent((state?.tabSize || 0) + 1);
670
682
  code += logic.toEmbeddedTS(shiftState(state, code), 'inObject');
671
683
  });
672
684
  code += '}\n';
673
- code += indent(state.tabSize) + '}\n';
685
+ code += indent((state?.tabSize || 0)) + '}\n';
674
686
 
675
687
  return code;
676
688
  }
677
689
 
678
690
  getNamespace() {
679
- if (this.parentNode && (this.parentNode as Namespace).getNamespace)
680
- return `${(this.parentNode as Namespace).getNamespace()}.entities`;
691
+ if (this.parentNode && (this.parentNode as DataSource).getNamespace)
692
+ return `${(this.parentNode as DataSource).getNamespace()}.${this.parentNode.name}.entities`;
681
693
  else
682
694
  throw new Error('无法获取命名空间,请设置 parentNode!');
683
695
  }
@@ -687,12 +699,12 @@ export class Entity extends BaseNode {
687
699
  * @param name 一般不用传,用于 rename
688
700
  */
689
701
  getEmbeddedFilePath(name = this.name) {
690
- return `/embedded/${this.app.name}/entities/${name}.ts`;
702
+ return `/embedded/${this.app.name}/datasources/${this.parentNode.name}/entities/${name}.ts`;
691
703
  }
692
704
 
693
705
  get ns() {
694
706
  const ns: Namespace = entity2LogicNamespace(this);
695
- ns.path = this.getNamespace() + '.' + ns.name;
707
+ ns.path = this.getNamespace();
696
708
  return ns;
697
709
  }
698
710
  // @excludedInJSON()