@lcap/nasl 2.14.0 → 2.15.1

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 (172) hide show
  1. package/out/automate/engine/index.js +2 -2
  2. package/out/automate/engine/index.js.map +1 -1
  3. package/out/automate/engine/viewCache.js +5 -5
  4. package/out/automate/engine/viewCache.js.map +1 -1
  5. package/out/common/BaseNode.js +3 -1
  6. package/out/common/BaseNode.js.map +1 -1
  7. package/out/concepts/AnonymousFunction__.d.ts +170 -0
  8. package/out/concepts/AnonymousFunction__.js +439 -0
  9. package/out/concepts/AnonymousFunction__.js.map +1 -0
  10. package/out/concepts/App__.js +7 -1
  11. package/out/concepts/App__.js.map +1 -1
  12. package/out/concepts/Assignee__.js +1 -1
  13. package/out/concepts/Assignee__.js.map +1 -1
  14. package/out/concepts/AssignmentLine__.d.ts +40 -0
  15. package/out/concepts/AssignmentLine__.js +109 -0
  16. package/out/concepts/AssignmentLine__.js.map +1 -0
  17. package/out/concepts/BatchAssignment__.d.ts +248 -0
  18. package/out/concepts/BatchAssignment__.js +742 -0
  19. package/out/concepts/BatchAssignment__.js.map +1 -0
  20. package/out/concepts/BindAttribute__.js +2 -0
  21. package/out/concepts/BindAttribute__.js.map +1 -1
  22. package/out/concepts/BindEvent__.js +9 -4
  23. package/out/concepts/BindEvent__.js.map +1 -1
  24. package/out/concepts/BindStyle__.d.ts +126 -0
  25. package/out/concepts/BindStyle__.js +233 -0
  26. package/out/concepts/BindStyle__.js.map +1 -0
  27. package/out/concepts/CallLogic__.js +3 -4
  28. package/out/concepts/CallLogic__.js.map +1 -1
  29. package/out/concepts/CallQueryComponent__.d.ts +1 -1
  30. package/out/concepts/ConstructArgument__.d.ts +40 -0
  31. package/out/concepts/ConstructArgument__.js +108 -0
  32. package/out/concepts/ConstructArgument__.js.map +1 -0
  33. package/out/concepts/Construct__.d.ts +189 -0
  34. package/out/concepts/Construct__.js +340 -0
  35. package/out/concepts/Construct__.js.map +1 -0
  36. package/out/concepts/EnumItem__.js +1 -1
  37. package/out/concepts/EnumItem__.js.map +1 -1
  38. package/out/concepts/Interface__.d.ts +1 -0
  39. package/out/concepts/Interface__.js +58 -0
  40. package/out/concepts/Interface__.js.map +1 -1
  41. package/out/concepts/Logic__.js +3 -3
  42. package/out/concepts/Logic__.js.map +1 -1
  43. package/out/concepts/MatchCase__.d.ts +256 -0
  44. package/out/concepts/MatchCase__.js +584 -0
  45. package/out/concepts/MatchCase__.js.map +1 -0
  46. package/out/concepts/Match__.d.ts +117 -0
  47. package/out/concepts/Match__.js +434 -0
  48. package/out/concepts/Match__.js.map +1 -0
  49. package/out/concepts/OqlQueryComponent__.d.ts +73 -0
  50. package/out/concepts/OqlQueryComponent__.js +395 -0
  51. package/out/concepts/OqlQueryComponent__.js.map +1 -0
  52. package/out/concepts/ProcessElement__.d.ts +2 -2
  53. package/out/concepts/ProcessElement__.js +30 -21
  54. package/out/concepts/ProcessElement__.js.map +1 -1
  55. package/out/concepts/Process__.d.ts +81 -0
  56. package/out/concepts/Process__.js +98 -2
  57. package/out/concepts/Process__.js.map +1 -1
  58. package/out/concepts/SelectMembers__.d.ts +141 -0
  59. package/out/concepts/SelectMembers__.js +290 -0
  60. package/out/concepts/SelectMembers__.js.map +1 -0
  61. package/out/concepts/SqlQueryComponent__.d.ts +4 -0
  62. package/out/concepts/SqlQueryComponent__.js +144 -2
  63. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  64. package/out/concepts/Variable__.js +0 -1
  65. package/out/concepts/Variable__.js.map +1 -1
  66. package/out/concepts/ViewElement__.js +10 -1
  67. package/out/concepts/ViewElement__.js.map +1 -1
  68. package/out/concepts/View__.js +4 -1
  69. package/out/concepts/View__.js.map +1 -1
  70. package/out/concepts/basics/stdlib/index.js +2 -1
  71. package/out/concepts/basics/stdlib/index.js.map +1 -1
  72. package/out/concepts/basics/stdlib/nasl.auth.js +26 -0
  73. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -1
  74. package/out/concepts/basics/stdlib/nasl.process.js +98 -0
  75. package/out/concepts/basics/stdlib/nasl.process.js.map +1 -1
  76. package/out/concepts/basics/stdlib/nasl.ui.js +54 -0
  77. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  78. package/out/concepts/basics/stdlib/nasl.util.js +2 -2
  79. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  80. package/out/concepts/basics/stdlib/nasl.validation.js +4 -0
  81. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
  82. package/out/enums/KEYWORDS.js +1 -0
  83. package/out/enums/KEYWORDS.js.map +1 -1
  84. package/out/generator/genBundleFiles.d.ts +1 -0
  85. package/out/generator/genBundleFiles.js +2 -0
  86. package/out/generator/genBundleFiles.js.map +1 -1
  87. package/out/server/extendBaseNode.js +32 -4
  88. package/out/server/extendBaseNode.js.map +1 -1
  89. package/out/server/getLogics.js +42 -14
  90. package/out/server/getLogics.js.map +1 -1
  91. package/out/server/getProcesses.d.ts +2 -2
  92. package/out/server/getProcesses.js +47 -21
  93. package/out/server/getProcesses.js.map +1 -1
  94. package/out/server/naslServer.js +46 -19
  95. package/out/server/naslServer.js.map +1 -1
  96. package/out/server/naslStdlibMap.js +1 -0
  97. package/out/server/naslStdlibMap.js.map +1 -1
  98. package/out/server/process2LogicNamespace.js +25 -21
  99. package/out/server/process2LogicNamespace.js.map +1 -1
  100. package/out/server/translator.js +35 -8
  101. package/out/server/translator.js.map +1 -1
  102. package/out/service/logic/api.d.ts +9 -0
  103. package/out/service/logic/api.js +11 -0
  104. package/out/service/logic/api.js.map +1 -0
  105. package/out/service/logic/index.d.ts +2 -0
  106. package/out/service/logic/index.js +10 -0
  107. package/out/service/logic/index.js.map +1 -0
  108. package/out/service/storage/init.js +18 -6
  109. package/out/service/storage/init.js.map +1 -1
  110. package/out/templator/genCreateBlock.js +1 -1
  111. package/out/templator/genCreateBlock.js.map +1 -1
  112. package/out/templator/genCurdEditMultipleKeyBlock.js +4 -5
  113. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  114. package/out/templator/genCurdMultipleKeyBlock.js +4 -4
  115. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  116. package/out/templator/genEditTableBlock.js +5 -3
  117. package/out/templator/genEditTableBlock.js.map +1 -1
  118. package/out/templator/genGetBlock.js +3 -2
  119. package/out/templator/genGetBlock.js.map +1 -1
  120. package/out/templator/genTableBlock.js +4 -2
  121. package/out/templator/genTableBlock.js.map +1 -1
  122. package/out/templator/genUpdateBlock.js +1 -1
  123. package/out/templator/genUpdateBlock.js.map +1 -1
  124. package/out/templator/sql-parser/index.d.ts +1 -0
  125. package/out/templator/sql-parser/index.js +228 -0
  126. package/out/templator/sql-parser/index.js.map +1 -0
  127. package/out/templator/sql-parser/parser.js +26664 -0
  128. package/out/templator/sql-parser/parser.js.map +1 -0
  129. package/package.json +1 -1
  130. package/src/automate/engine/index.js +1 -1
  131. package/src/automate/engine/viewCache.js +23 -23
  132. package/src/automate/template/myProcess.js +12295 -0
  133. package/src/common/BaseNode.ts +5 -1
  134. package/src/concepts/App__.ts +8 -1
  135. package/src/concepts/Assignee__.ts +1 -1
  136. package/src/concepts/BindAttribute__.ts +3 -1
  137. package/src/concepts/BindEvent__.ts +8 -4
  138. package/src/concepts/CallLogic__.ts +3 -4
  139. package/src/concepts/EnumItem__.ts +1 -1
  140. package/src/concepts/Interface__.ts +66 -7
  141. package/src/concepts/Logic__.ts +3 -3
  142. package/src/concepts/ProcessElement__.ts +34 -24
  143. package/src/concepts/Process__.ts +98 -2
  144. package/src/concepts/SqlQueryComponent__.ts +143 -2
  145. package/src/concepts/Variable__.ts +0 -1
  146. package/src/concepts/ViewElement__.ts +12 -20
  147. package/src/concepts/View__.ts +4 -1
  148. package/src/concepts/basics/stdlib/index.ts +2 -1
  149. package/src/concepts/basics/stdlib/nasl.auth.ts +25 -0
  150. package/src/concepts/basics/stdlib/nasl.io.ts +48 -0
  151. package/src/concepts/basics/stdlib/nasl.process.ts +98 -0
  152. package/src/concepts/basics/stdlib/nasl.ui.ts +54 -0
  153. package/src/concepts/basics/stdlib/nasl.util.ts +2 -2
  154. package/src/concepts/basics/stdlib/nasl.validation.ts +4 -0
  155. package/src/enums/KEYWORDS.ts +1 -0
  156. package/src/generator/genBundleFiles.ts +3 -0
  157. package/src/server/extendBaseNode.ts +31 -4
  158. package/src/server/getLogics.ts +43 -14
  159. package/src/server/getProcesses.ts +47 -21
  160. package/src/server/naslServer.ts +44 -21
  161. package/src/server/naslStdlibMap.ts +1 -0
  162. package/src/server/process2LogicNamespace.ts +27 -21
  163. package/src/server/translator.ts +35 -8
  164. package/src/service/storage/init.ts +18 -6
  165. package/src/templator/genCreateBlock.ts +1 -1
  166. package/src/templator/genCurdEditMultipleKeyBlock.ts +4 -7
  167. package/src/templator/genCurdMultipleKeyBlock.ts +4 -4
  168. package/src/templator/genEditTableBlock.ts +5 -3
  169. package/src/templator/genGetBlock.ts +3 -2
  170. package/src/templator/genTableBlock.ts +4 -2
  171. package/src/templator/genUpdateBlock.ts +1 -1
  172. package/src/automate/template/process.js +0 -11810
@@ -0,0 +1,742 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __importDefault = (this && this.__importDefault) || function (mod) {
32
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33
+ };
34
+ var BatchAssignment_1;
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BatchAssignment = void 0;
37
+ const translator_1 = require("../translator");
38
+ const Assignment__1 = __importDefault(require("./Assignment__"));
39
+ const decorators_1 = require("../decorators");
40
+ const utils = __importStar(require("../utils"));
41
+ const classMap_1 = __importDefault(require("../common/classMap"));
42
+ const SelectMembers__1 = __importDefault(require("./SelectMembers__"));
43
+ const AssignmentLine__1 = __importDefault(require("./AssignmentLine__"));
44
+ const LogicItem__1 = __importDefault(require("./LogicItem__"));
45
+ /**
46
+ * 批量赋值语句
47
+ */
48
+ let BatchAssignment = BatchAssignment_1 = class BatchAssignment extends LogicItem__1.default {
49
+ /**
50
+ * 产品概念
51
+ */
52
+ concept = 'BatchAssignment';
53
+ /**
54
+ * 批量赋值语句标题
55
+ */
56
+ label = '批量赋值';
57
+ /**
58
+ * 左边项
59
+ */
60
+ left = undefined;
61
+ /**
62
+ * 右边项
63
+ */
64
+ rights = [];
65
+ /**
66
+ * 赋值
67
+ */
68
+ assignmentLines = [];
69
+ /**
70
+ * 自动连线
71
+ */
72
+ autoConnection = true;
73
+ /**
74
+ * @param source 需要合并的部分参数
75
+ */
76
+ constructor(source) {
77
+ source = Object.assign({}, BatchAssignment_1.getDefaultOptions(), source);
78
+ super(source);
79
+ super.subConstructor(source);
80
+ }
81
+ static from(source, parentNode, parentKey) {
82
+ return super.from(source, parentNode, parentKey);
83
+ }
84
+ /**
85
+ * 设置左边项
86
+ */
87
+ setLeft(left) {
88
+ left._delete();
89
+ const relationOptions = { parentNode: this, parentKey: 'left' };
90
+ Object.assign(left, relationOptions);
91
+ const object = {
92
+ left,
93
+ };
94
+ this.update({
95
+ ...object,
96
+ });
97
+ }
98
+ /**
99
+ * 设置右边项
100
+ */
101
+ setRights(rights) {
102
+ const object = {
103
+ rights,
104
+ };
105
+ this.update({
106
+ ...object,
107
+ });
108
+ }
109
+ /**
110
+ * 设置赋值
111
+ */
112
+ setAssignmentLines(assignmentLines) {
113
+ const object = {
114
+ assignmentLines,
115
+ };
116
+ this.update({
117
+ ...object,
118
+ });
119
+ }
120
+ /**
121
+ * 设置自动连线
122
+ */
123
+ setAutoConnection(autoConnection) {
124
+ const object = {
125
+ autoConnection,
126
+ };
127
+ this.update({
128
+ ...object,
129
+ });
130
+ }
131
+ getSelectMembersExistingNames(excludedList = []) {
132
+ const excludedSet = new Set(excludedList);
133
+ return (this.rights || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
134
+ }
135
+ getSelectMembersUniqueName(name = 'selectMembers1') {
136
+ return utils.unique(name, this.getSelectMembersExistingNames(), undefined, false);
137
+ }
138
+ _insertSelectMembersAt(options, index) {
139
+ const selectMembersOptions = {};
140
+ const relationOptions = { parentNode: this, parentKey: 'rights' };
141
+ let selectMembers;
142
+ if (!options) {
143
+ selectMembers = SelectMembers__1.default.from({
144
+ ...selectMembersOptions,
145
+ name: this.getSelectMembersUniqueName(),
146
+ }, this, 'rights');
147
+ }
148
+ else if (typeof options === 'string') {
149
+ selectMembers = SelectMembers__1.default.from({
150
+ ...selectMembersOptions,
151
+ name: options,
152
+ }, this, 'rights');
153
+ }
154
+ else if (options instanceof SelectMembers__1.default) {
155
+ options.ensureDelete(); // 同一实例不支持多处存在
156
+ selectMembers = options;
157
+ Object.assign(selectMembers, relationOptions);
158
+ }
159
+ else {
160
+ selectMembers = SelectMembers__1.default.from({
161
+ ...selectMembersOptions,
162
+ ...options,
163
+ }, this, 'rights');
164
+ }
165
+ this.rights.splice(index, 0, selectMembers);
166
+ return selectMembers;
167
+ }
168
+ insertSelectMembersAt(options, index) {
169
+ const node = this._insertSelectMembersAt(options, index);
170
+ node.create({
171
+ index,
172
+ parentNode: this,
173
+ parentKey: 'rights',
174
+ });
175
+ return node;
176
+ }
177
+ _addSelectMembers(options) {
178
+ const index = this.rights.length;
179
+ return this._insertSelectMembersAt(options, index);
180
+ }
181
+ addSelectMembers(options) {
182
+ const node = this._addSelectMembers(options);
183
+ const index = this.rights.indexOf(node);
184
+ node.create({
185
+ index,
186
+ parentNode: this,
187
+ parentKey: 'rights',
188
+ });
189
+ return node;
190
+ }
191
+ getAssignmentLineExistingNames(excludedList = []) {
192
+ const excludedSet = new Set(excludedList);
193
+ return (this.assignmentLines || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
194
+ }
195
+ getAssignmentLineUniqueName(name = 'assignmentLine1') {
196
+ return utils.unique(name, this.getAssignmentLineExistingNames(), undefined, false);
197
+ }
198
+ _insertAssignmentLineAt(options, index) {
199
+ const assignmentLineOptions = {};
200
+ const relationOptions = { parentNode: this, parentKey: 'assignmentLines' };
201
+ let assignmentLine;
202
+ if (!options) {
203
+ assignmentLine = AssignmentLine__1.default.from({
204
+ ...assignmentLineOptions,
205
+ name: this.getAssignmentLineUniqueName(),
206
+ }, this, 'assignmentLines');
207
+ }
208
+ else if (typeof options === 'string') {
209
+ assignmentLine = AssignmentLine__1.default.from({
210
+ ...assignmentLineOptions,
211
+ name: options,
212
+ }, this, 'assignmentLines');
213
+ }
214
+ else if (options instanceof AssignmentLine__1.default) {
215
+ options.ensureDelete(); // 同一实例不支持多处存在
216
+ assignmentLine = options;
217
+ Object.assign(assignmentLine, relationOptions);
218
+ }
219
+ else {
220
+ assignmentLine = AssignmentLine__1.default.from({
221
+ ...assignmentLineOptions,
222
+ ...options,
223
+ }, this, 'assignmentLines');
224
+ }
225
+ this.assignmentLines.splice(index, 0, assignmentLine);
226
+ return assignmentLine;
227
+ }
228
+ insertAssignmentLineAt(options, index) {
229
+ const node = this._insertAssignmentLineAt(options, index);
230
+ node.create({
231
+ index,
232
+ parentNode: this,
233
+ parentKey: 'assignmentLines',
234
+ });
235
+ return node;
236
+ }
237
+ _addAssignmentLine(options) {
238
+ const index = this.assignmentLines.length;
239
+ return this._insertAssignmentLineAt(options, index);
240
+ }
241
+ addAssignmentLine(options) {
242
+ const node = this._addAssignmentLine(options);
243
+ const index = this.assignmentLines.indexOf(node);
244
+ node.create({
245
+ index,
246
+ parentNode: this,
247
+ parentKey: 'assignmentLines',
248
+ });
249
+ return node;
250
+ }
251
+ removeLeft(options) {
252
+ let left;
253
+ if (typeof options === 'string') {
254
+ left = this.left;
255
+ if (!left) {
256
+ throw new Error('找不到调用逻辑 ' + options);
257
+ }
258
+ }
259
+ else {
260
+ left = options;
261
+ }
262
+ return left.delete();
263
+ }
264
+ removeSelectMembersInRights(options) {
265
+ let selectMembers;
266
+ if (typeof options === 'string') {
267
+ selectMembers = this.rights.find((item) => item.name === options);
268
+ if (!selectMembers) {
269
+ throw new Error('找不到调用逻辑 ' + options);
270
+ }
271
+ }
272
+ else {
273
+ selectMembers = options;
274
+ }
275
+ return selectMembers.delete();
276
+ }
277
+ __removeSelectMembers(selectMembers) {
278
+ const parentKey = selectMembers.parentKey;
279
+ const params = {
280
+ parentNode: this,
281
+ parentKey,
282
+ index: -1,
283
+ object: null,
284
+ oldObject: selectMembers,
285
+ };
286
+ if (parentKey) {
287
+ params.parentKey = parentKey;
288
+ if (Array.isArray(this[parentKey])) {
289
+ const index = this[parentKey].indexOf(selectMembers);
290
+ ~index && this[parentKey].splice(index, 1);
291
+ params.index = index;
292
+ }
293
+ else if (this[parentKey] === selectMembers) {
294
+ params.index = 0;
295
+ this[parentKey] = undefined;
296
+ }
297
+ }
298
+ return params;
299
+ }
300
+ removeAssignmentLine(options) {
301
+ let assignmentLine;
302
+ if (typeof options === 'string') {
303
+ assignmentLine = this.assignmentLines.find((item) => item.name === options);
304
+ if (!assignmentLine) {
305
+ throw new Error('找不到枚举 ' + options);
306
+ }
307
+ }
308
+ else {
309
+ assignmentLine = options;
310
+ }
311
+ return assignmentLine.delete();
312
+ }
313
+ __removeAssignmentLine(assignmentLine) {
314
+ const parentKey = assignmentLine.parentKey;
315
+ const params = {
316
+ parentNode: this,
317
+ parentKey,
318
+ index: -1,
319
+ object: null,
320
+ oldObject: assignmentLine,
321
+ };
322
+ if (parentKey) {
323
+ params.parentKey = parentKey;
324
+ if (Array.isArray(this[parentKey])) {
325
+ const index = this[parentKey].indexOf(assignmentLine);
326
+ ~index && this[parentKey].splice(index, 1);
327
+ params.index = index;
328
+ }
329
+ else if (this[parentKey] === assignmentLine) {
330
+ params.index = 0;
331
+ this[parentKey] = undefined;
332
+ }
333
+ }
334
+ return params;
335
+ }
336
+ //================================================================================
337
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
338
+ // 自动生成的代码已结束。下面可以手动编写。
339
+ //================================================================================
340
+ static getDefaultOptions() {
341
+ return {
342
+ left: {
343
+ concept: 'SelectMembers',
344
+ expression: {
345
+ concept: 'Identifier',
346
+ name: '',
347
+ },
348
+ },
349
+ };
350
+ }
351
+ // 自动连线算法---addRightIndex : 指右边选择变量后对该selectmember进行自动连线。
352
+ async batchAutoConnection(addRightIndex) {
353
+ const leftLineSet = new Set();
354
+ const lineArr = [];
355
+ // 系统属性不可自动连线
356
+ ['id', 'createdTime', 'updatedTime', 'createdBy', 'updatedBy'].forEach((name) => leftLineSet.add(name));
357
+ // 左边已连线的下标
358
+ this.assignmentLines.forEach((line) => {
359
+ if (line.leftIndex.length > 1)
360
+ leftLineSet.add(Number(line.leftIndex[1]));
361
+ });
362
+ // 父节点不允许自动连线
363
+ for (let i = 0; i < this.left.members.length - 1; i++) {
364
+ const completeName = this.left.members[i].completeName;
365
+ const preCompleteName = this.left.members[i + 1].completeName;
366
+ if (preCompleteName.includes(completeName))
367
+ leftLineSet.add(i);
368
+ }
369
+ await new Promise((resolve) => setTimeout(resolve, 400));
370
+ this.app.emit('collect:start', {
371
+ actionMsg: '自动连线',
372
+ });
373
+ this.left.members.forEach((member, leftSecondIndex) => {
374
+ const leftValue = member.getValue();
375
+ const leftName = member.property.name;
376
+ const leftTypeAnnotation = member.__TypeAnnotation;
377
+ if (leftLineSet.has(leftSecondIndex) || leftLineSet.has(leftName))
378
+ return;
379
+ this.rights.forEach((selectMember, rightFirstIndex) => {
380
+ const { members, expression } = selectMember;
381
+ if (leftLineSet.has(leftSecondIndex))
382
+ return;
383
+ if (addRightIndex !== -1 && addRightIndex !== rightFirstIndex)
384
+ return;
385
+ // 右侧父节点也不允许自动连线
386
+ const rightLineSet = new Set();
387
+ for (let i = 0; i < members.length - 1; i++) {
388
+ const completeName = members[i].completeName;
389
+ const preCompleteName = members[i + 1].completeName;
390
+ if (preCompleteName.includes(completeName))
391
+ rightLineSet.add(i);
392
+ }
393
+ if (leftName === expression.name && expression.__TypeAnnotation.typeKind === leftTypeAnnotation.typeKind) {
394
+ const Line = new AssignmentLine__1.default({
395
+ leftIndex: [0, leftSecondIndex],
396
+ rightIndex: [rightFirstIndex],
397
+ });
398
+ lineArr.push(Line);
399
+ leftLineSet.add(leftSecondIndex);
400
+ return;
401
+ }
402
+ members.forEach((rightMember, rightSecondIndex) => {
403
+ const rightValue = rightMember.getValue();
404
+ const rightName = rightMember.property.name;
405
+ if (rightLineSet.has(rightSecondIndex))
406
+ return;
407
+ if (leftName === rightName && leftValue.split('.').length === rightValue.split('.').length) {
408
+ const rightTypeAnnotation = rightMember.__TypeAnnotation;
409
+ if (leftTypeAnnotation.typeKind !== rightTypeAnnotation.typeKind)
410
+ return;
411
+ const leftIndex = [0, leftSecondIndex];
412
+ const rightIndex = [rightFirstIndex, rightSecondIndex];
413
+ const Line = new AssignmentLine__1.default({ leftIndex, rightIndex });
414
+ lineArr.push(Line);
415
+ leftLineSet.add(leftSecondIndex);
416
+ }
417
+ });
418
+ });
419
+ });
420
+ lineArr.length && this.setAssignmentLines([...this.assignmentLines, ...lineArr]);
421
+ this.app.emit('collect:end');
422
+ }
423
+ connection(leftItem, rightItem, rightToLeft) {
424
+ let newLeftIndex = [0];
425
+ let newRightIndex = [];
426
+ let newLines = [];
427
+ let newMembers = this.left.members;
428
+ if (leftItem.concept !== 'SelectMembers' && leftItem.parentKey !== 'expression') {
429
+ const members = this.left.members;
430
+ const secondIndex = members.findIndex((exp) => exp === leftItem);
431
+ const completeNameSplitLength = members[secondIndex].completeName.split('.').length;
432
+ let filterLines = [];
433
+ // 连线左边的坐标。
434
+ newLeftIndex = [0, secondIndex];
435
+ // 父节点选中后删除此节点下的子节点
436
+ let sameLevelIndex = members.findIndex((exp, index) => {
437
+ if (index > secondIndex) {
438
+ return exp.completeName.split('.').length <= completeNameSplitLength;
439
+ }
440
+ return false;
441
+ });
442
+ sameLevelIndex = sameLevelIndex === -1 ? members.length : sameLevelIndex;
443
+ newMembers = members.filter((member, index) => index <= secondIndex || index >= sameLevelIndex);
444
+ filterLines = this.assignmentLines.filter(({ leftIndex }) => leftIndex[1] <= secondIndex || leftIndex[1] >= sameLevelIndex);
445
+ // members成员减少,需要重新计算后续连线下标
446
+ filterLines.forEach((line) => {
447
+ const distance = sameLevelIndex - secondIndex - 1;
448
+ if (line.leftIndex[1] > secondIndex) {
449
+ const newLine = Object.assign({}, line, { leftIndex: [line.leftIndex[0], line.leftIndex[1] - distance] });
450
+ newLines.push(newLine);
451
+ return;
452
+ }
453
+ newLines.push(line);
454
+ });
455
+ }
456
+ else {
457
+ newLines = [];
458
+ newMembers = [];
459
+ }
460
+ if (rightItem.concept === 'SelectMembers') {
461
+ newRightIndex = [this.rights.findIndex((right) => right === rightItem)];
462
+ }
463
+ else if (rightItem.concept !== 'MemberExpression') {
464
+ newRightIndex = [this.rights.findIndex((right) => right === rightItem.parentNode)];
465
+ }
466
+ else {
467
+ const selectMember = rightItem.getAncestor('SelectMembers');
468
+ const firstIndex = this.rights.findIndex((right) => right === selectMember);
469
+ const secondIndex = this.rights[firstIndex].members.findIndex((exp) => exp === rightItem);
470
+ newRightIndex = [firstIndex, secondIndex];
471
+ }
472
+ // 左边同一个属性只能有一个连线
473
+ if (rightToLeft) {
474
+ newLines = newLines.filter(({ leftIndex: index }) => !(newLeftIndex[0] === index[0] && newLeftIndex[1] === index[1]));
475
+ }
476
+ this.update({
477
+ assignmentLines: newLines,
478
+ });
479
+ this.left.update({
480
+ members: newMembers,
481
+ });
482
+ const Line = new AssignmentLine__1.default({
483
+ leftIndex: newLeftIndex,
484
+ rightIndex: newRightIndex,
485
+ });
486
+ this.addAssignmentLine(Line);
487
+ }
488
+ swapLocation(location1, location2) {
489
+ if (location1 === location2)
490
+ return;
491
+ const newRights = this.rights;
492
+ [newRights[location1], newRights[2]] = [newRights[location2], newRights[1]];
493
+ const newLines = this.assignmentLines.map((line) => {
494
+ if (line.rightIndex[0] === location1) {
495
+ line.rightIndex[0] = location2;
496
+ }
497
+ else if (line.rightIndex[0] === location2) {
498
+ line.rightIndex[0] = location1;
499
+ }
500
+ return line;
501
+ });
502
+ this.update({
503
+ rigths: newRights,
504
+ assignmentLines: newLines,
505
+ });
506
+ }
507
+ deleteAssignmentLine(assignmentLine) {
508
+ const newLine = this.assignmentLines.filter((line) => line === assignmentLine);
509
+ this.update({
510
+ assignmentLines: newLine,
511
+ });
512
+ }
513
+ changeLinesLocation(selectMember) {
514
+ // 区分操作左边或者操作右边
515
+ if (selectMember === this.left) {
516
+ this.update({
517
+ left: null,
518
+ assignmentLines: [],
519
+ });
520
+ }
521
+ else if (this.rights.findIndex((member) => selectMember === member) !== -1) {
522
+ const index = this.rights.findIndex((member) => selectMember === member);
523
+ const newRights = this.rights.filter((member) => selectMember !== member);
524
+ const filterLine = this.assignmentLines.filter((line) => line.rightIndex[0] !== index);
525
+ const newLines = [];
526
+ filterLine.forEach((line) => {
527
+ if (line.rightIndex[0] > index) {
528
+ if (line.rightIndex[1] === undefined) {
529
+ const newLine = Object.assign({}, line, { rightIndex: [line.rightIndex[0] - 1] });
530
+ newLines.push(newLine);
531
+ }
532
+ else {
533
+ const newLine = Object.assign({}, line, { rightIndex: [line.rightIndex[0] - 1, line.rightIndex[1]] });
534
+ newLines.push(newLine);
535
+ }
536
+ }
537
+ else {
538
+ newLines.push(line);
539
+ }
540
+ });
541
+ this.update({
542
+ rights: newRights,
543
+ assignmentLines: newLines,
544
+ });
545
+ }
546
+ }
547
+ findMember(arrIndex, place) {
548
+ const [firstIndex, secondIndex] = [arrIndex[0], arrIndex[1]];
549
+ if (place === 'left') {
550
+ if (secondIndex === undefined) {
551
+ return this.left.expression;
552
+ }
553
+ return this.left.members[secondIndex];
554
+ }
555
+ else {
556
+ if (secondIndex === undefined) {
557
+ return this.rights[firstIndex].expression;
558
+ }
559
+ return this.rights[firstIndex].members[secondIndex];
560
+ }
561
+ }
562
+ findlines(member, selectMember) {
563
+ const lines = [];
564
+ // 根节点的情况
565
+ if (selectMember === this) {
566
+ if (member === this.left)
567
+ return this.assignmentLines;
568
+ else {
569
+ const firstIndex = this.rights.findIndex((right) => right === member);
570
+ return this.assignmentLines.filter(({ rightIndex }) => rightIndex[1] === undefined && rightIndex[0] === firstIndex);
571
+ }
572
+ }
573
+ if (this.left === selectMember) {
574
+ const index2 = selectMember.members.findIndex((item) => item.completeName === member.completeName);
575
+ this.assignmentLines.forEach((line) => {
576
+ if (line.leftIndex[1] === index2)
577
+ lines.push(line);
578
+ });
579
+ }
580
+ else {
581
+ const index1 = this.rights.findIndex((right) => right === selectMember);
582
+ const index2 = selectMember.members.findIndex((item) => item.completeName === member.completeName);
583
+ this.assignmentLines.forEach((line) => {
584
+ if (line.rightIndex[0] === index1 && line.rightIndex[1] === index2)
585
+ lines.push(line);
586
+ });
587
+ }
588
+ return lines;
589
+ }
590
+ replaceAssignment() {
591
+ if (this.assignmentLines.length > 1)
592
+ return false;
593
+ this.app.emit('collect:start', {
594
+ actionMsg: '批量赋值切换普通赋值',
595
+ });
596
+ const { parentKey, parentNode, logic } = this;
597
+ let rightExpression;
598
+ let leftExpression;
599
+ let index;
600
+ if (this.assignmentLines.length === 1) {
601
+ const { leftIndex, rightIndex } = this.assignmentLines[0];
602
+ leftExpression = Object.assign({}, this.findMember(leftIndex, 'left'));
603
+ rightExpression = Object.assign({}, this.findMember(rightIndex, 'right'));
604
+ }
605
+ else {
606
+ leftExpression = Object.assign({}, this.left.expression);
607
+ }
608
+ const assignment = new Assignment__1.default({
609
+ left: leftExpression,
610
+ right: rightExpression,
611
+ offsetX: this.offsetX,
612
+ offsetY: this.offsetY,
613
+ });
614
+ if (parentNode.concept === 'Logic') {
615
+ if (parentKey === 'body') {
616
+ index = logic.body.findIndex((item) => item === this);
617
+ logic.insertItemInBodyAt(assignment, index);
618
+ }
619
+ else {
620
+ index = logic.playground.findIndex((item) => item === this);
621
+ logic.insertItemInPlaygroundAt(assignment, index);
622
+ }
623
+ }
624
+ else {
625
+ index = parentNode[parentKey].findIndex((item) => item === this);
626
+ const firstUpperText = parentKey[0].toUpperCase() + parentKey.slice(1, parentKey.length);
627
+ if (parentNode[`insertItemIn${firstUpperText}At`])
628
+ parentNode[`insertItemIn${firstUpperText}At`](assignment, index);
629
+ else
630
+ parentNode.insertItemAt(assignment, index);
631
+ }
632
+ this.delete();
633
+ this.app.emit('collect:end');
634
+ return true;
635
+ }
636
+ toVue(options) {
637
+ let code = '';
638
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
639
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toVue(options) : this.left.members[leftIndex[1]]?.toVue(options);
640
+ code += `${leftValue}`;
641
+ code += ' = ';
642
+ const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toVue(options) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toVue(options);
643
+ code += `${rightValue}`;
644
+ code += ';';
645
+ code += '\n';
646
+ });
647
+ return code;
648
+ }
649
+ toUI(state) {
650
+ let code = '';
651
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
652
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toUI((0, translator_1.shiftState)(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toUI((0, translator_1.shiftState)(state, code, { inline: true }));
653
+ code += `${leftValue}`;
654
+ code += ' = ';
655
+ const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toUI((0, translator_1.shiftState)(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toUI((0, translator_1.shiftState)(state, code, { inline: true }));
656
+ code += `${rightValue}`;
657
+ code += ';';
658
+ code += '\n';
659
+ });
660
+ return code;
661
+ }
662
+ toJS(state) {
663
+ let code = '';
664
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
665
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toJS((0, translator_1.shiftState)(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toJS((0, translator_1.shiftState)(state, code, { inline: true }));
666
+ code += `${leftValue}`;
667
+ code += ' = ';
668
+ const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toJS((0, translator_1.shiftState)(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toJS((0, translator_1.shiftState)(state, code, { inline: true }));
669
+ code += `${rightValue}`;
670
+ code += ';';
671
+ code += '\n';
672
+ });
673
+ return code;
674
+ }
675
+ toEmbeddedTS(state) {
676
+ let code = '';
677
+ // 提供sourcemap,获取类型标注和上下文可选变量
678
+ code += this.left.expression ? `${this.left.expression.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }))}` : '';
679
+ code += ';\n';
680
+ this.left.members.forEach((member) => {
681
+ code += member.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
682
+ code += '; ';
683
+ });
684
+ code += '\n';
685
+ this.rights.forEach((right) => {
686
+ code += `${right.expression.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }))}`;
687
+ code += ';\n';
688
+ right.members.forEach((member) => {
689
+ code += member.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
690
+ code += '; ';
691
+ });
692
+ code += right.members.length ? '\n' : '';
693
+ });
694
+ // 根据连线状态,拆分成多个单赋值
695
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
696
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
697
+ code += 'nasl.core.assign(';
698
+ code += `${leftValue}`;
699
+ code += ', ';
700
+ const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
701
+ code += `${rightValue}`;
702
+ code += ')';
703
+ code += ';';
704
+ code += '\n';
705
+ });
706
+ if (!this.assignmentLines.length)
707
+ code += `__assignmentLineEmpty__`;
708
+ return code;
709
+ }
710
+ };
711
+ __decorate([
712
+ (0, decorators_1.property)()
713
+ ], BatchAssignment.prototype, "concept", void 0);
714
+ __decorate([
715
+ (0, decorators_1.property)()
716
+ ], BatchAssignment.prototype, "label", void 0);
717
+ __decorate([
718
+ (0, decorators_1.property)('SelectMembers')
719
+ ], BatchAssignment.prototype, "left", void 0);
720
+ __decorate([
721
+ (0, decorators_1.property)('SelectMembers')
722
+ ], BatchAssignment.prototype, "rights", void 0);
723
+ __decorate([
724
+ (0, decorators_1.property)('AssignmentLine')
725
+ ], BatchAssignment.prototype, "assignmentLines", void 0);
726
+ __decorate([
727
+ (0, decorators_1.property)()
728
+ ], BatchAssignment.prototype, "autoConnection", void 0);
729
+ __decorate([
730
+ (0, translator_1.withSourceMap)()
731
+ ], BatchAssignment.prototype, "toEmbeddedTS", null);
732
+ BatchAssignment = BatchAssignment_1 = __decorate([
733
+ (0, decorators_1.concept)('批量赋值语句')
734
+ ], BatchAssignment);
735
+ exports.BatchAssignment = BatchAssignment;
736
+ classMap_1.default.BatchAssignment = BatchAssignment;
737
+ exports.default = BatchAssignment;
738
+ //================================================================================
739
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
740
+ // 自动生成的代码已结束。下面可以手动编写。
741
+ //================================================================================
742
+ //# sourceMappingURL=BatchAssignment__.js.map