@lcap/nasl 2.14.0-beta.5 → 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 (137) hide show
  1. package/out/automate/template/process.js +10298 -9487
  2. package/out/automate/template/process.js.map +1 -1
  3. package/out/concepts/AnonymousFunction__.d.ts +170 -0
  4. package/out/concepts/AnonymousFunction__.js +439 -0
  5. package/out/concepts/AnonymousFunction__.js.map +1 -0
  6. package/out/concepts/AssignmentLine__.d.ts +40 -0
  7. package/out/concepts/AssignmentLine__.js +109 -0
  8. package/out/concepts/AssignmentLine__.js.map +1 -0
  9. package/out/concepts/BatchAssignment__.d.ts +248 -0
  10. package/out/concepts/BatchAssignment__.js +742 -0
  11. package/out/concepts/BatchAssignment__.js.map +1 -0
  12. package/out/concepts/BindDirective__.js +2 -2
  13. package/out/concepts/BindDirective__.js.map +1 -1
  14. package/out/concepts/BindStyle__.d.ts +126 -0
  15. package/out/concepts/BindStyle__.js +233 -0
  16. package/out/concepts/BindStyle__.js.map +1 -0
  17. package/out/concepts/ConstructArgument__.d.ts +40 -0
  18. package/out/concepts/ConstructArgument__.js +108 -0
  19. package/out/concepts/ConstructArgument__.js.map +1 -0
  20. package/out/concepts/Construct__.d.ts +189 -0
  21. package/out/concepts/Construct__.js +340 -0
  22. package/out/concepts/Construct__.js.map +1 -0
  23. package/out/concepts/Interface__.d.ts +1 -0
  24. package/out/concepts/Interface__.js +17 -5
  25. package/out/concepts/Interface__.js.map +1 -1
  26. package/out/concepts/MatchCase__.d.ts +256 -0
  27. package/out/concepts/MatchCase__.js +584 -0
  28. package/out/concepts/MatchCase__.js.map +1 -0
  29. package/out/concepts/Match__.d.ts +117 -0
  30. package/out/concepts/Match__.js +434 -0
  31. package/out/concepts/Match__.js.map +1 -0
  32. package/out/concepts/OqlQueryComponent__.d.ts +73 -0
  33. package/out/concepts/OqlQueryComponent__.js +395 -0
  34. package/out/concepts/OqlQueryComponent__.js.map +1 -0
  35. package/out/concepts/ProcessElement__.js +6 -4
  36. package/out/concepts/ProcessElement__.js.map +1 -1
  37. package/out/concepts/SelectMembers__.d.ts +141 -0
  38. package/out/concepts/SelectMembers__.js +290 -0
  39. package/out/concepts/SelectMembers__.js.map +1 -0
  40. package/out/concepts/SqlQueryComponent__.d.ts +4 -0
  41. package/out/concepts/SqlQueryComponent__.js +144 -2
  42. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  43. package/out/concepts/Variable__.js +0 -1
  44. package/out/concepts/Variable__.js.map +1 -1
  45. package/out/concepts/ViewElement__.js +10 -1
  46. package/out/concepts/ViewElement__.js.map +1 -1
  47. package/out/generator/genMetaData.d.ts +10 -1
  48. package/out/generator/genMetaData.js +28 -34
  49. package/out/generator/genMetaData.js.map +1 -1
  50. package/out/server/extendBaseNode.js +17 -4
  51. package/out/server/extendBaseNode.js.map +1 -1
  52. package/out/server/naslServer.js +14 -0
  53. package/out/server/naslServer.js.map +1 -1
  54. package/out/server/stdlib/nasl.annotation.d.ts +4 -0
  55. package/out/server/stdlib/nasl.annotation.js +1 -0
  56. package/out/server/stdlib/nasl.annotation.js.map +1 -0
  57. package/out/server/stdlib/nasl.auth.d.ts +30 -0
  58. package/out/server/stdlib/nasl.auth.js +1 -0
  59. package/out/server/stdlib/nasl.auth.js.map +1 -0
  60. package/out/server/stdlib/nasl.browser.d.ts +5 -0
  61. package/out/server/stdlib/nasl.browser.js +1 -0
  62. package/out/server/stdlib/nasl.browser.js.map +1 -0
  63. package/out/server/stdlib/nasl.collection.d.ts +22 -0
  64. package/out/server/stdlib/nasl.collection.js +1 -0
  65. package/out/server/stdlib/nasl.collection.js.map +1 -0
  66. package/out/server/stdlib/nasl.configuration.d.ts +3 -0
  67. package/out/server/stdlib/nasl.configuration.js +1 -0
  68. package/out/server/stdlib/nasl.configuration.js.map +1 -0
  69. package/out/server/stdlib/nasl.core.d.ts +104 -0
  70. package/out/server/stdlib/nasl.core.js +1 -0
  71. package/out/server/stdlib/nasl.core.js.map +1 -0
  72. package/out/server/stdlib/nasl.interface.d.ts +7 -0
  73. package/out/server/stdlib/nasl.interface.js +1 -0
  74. package/out/server/stdlib/nasl.interface.js.map +1 -0
  75. package/out/server/stdlib/nasl.langUtil.d.ts +28 -0
  76. package/out/server/stdlib/nasl.langUtil.js +1 -0
  77. package/out/server/stdlib/nasl.langUtil.js.map +1 -0
  78. package/out/server/stdlib/nasl.process.d.ts +50 -0
  79. package/out/server/stdlib/nasl.process.js +1 -0
  80. package/out/server/stdlib/nasl.process.js.map +1 -0
  81. package/out/server/stdlib/nasl.ui.d.ts +186 -0
  82. package/out/server/stdlib/nasl.ui.definition.d.ts +1072 -0
  83. package/out/server/stdlib/nasl.ui.definition.js +632 -0
  84. package/out/server/stdlib/nasl.ui.definition.js.map +1 -0
  85. package/out/server/stdlib/nasl.ui.js +1 -0
  86. package/out/server/stdlib/nasl.ui.js.map +1 -0
  87. package/out/server/stdlib/nasl.util.d.ts +74 -0
  88. package/out/server/stdlib/nasl.util.js +4 -0
  89. package/out/server/stdlib/nasl.util.js.map +1 -0
  90. package/out/server/stdlib/nasl.validation.d.ts +32 -0
  91. package/out/server/stdlib/nasl.validation.js +1 -0
  92. package/out/server/stdlib/nasl.validation.js.map +1 -0
  93. package/out/server/translator.js +4 -0
  94. package/out/server/translator.js.map +1 -1
  95. package/out/service/logic/api.d.ts +9 -0
  96. package/out/service/logic/api.js +11 -0
  97. package/out/service/logic/api.js.map +1 -0
  98. package/out/service/logic/index.d.ts +2 -0
  99. package/out/service/logic/index.js +10 -0
  100. package/out/service/logic/index.js.map +1 -0
  101. package/out/templator/genCreateBlock.js +1 -1
  102. package/out/templator/genCreateBlock.js.map +1 -1
  103. package/out/templator/genCurdEditMultipleKeyBlock.js +4 -5
  104. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  105. package/out/templator/genCurdMultipleKeyBlock.js +4 -4
  106. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  107. package/out/templator/genEditTableBlock.js +5 -3
  108. package/out/templator/genEditTableBlock.js.map +1 -1
  109. package/out/templator/genGetBlock.js +3 -2
  110. package/out/templator/genGetBlock.js.map +1 -1
  111. package/out/templator/genTableBlock.js +4 -2
  112. package/out/templator/genTableBlock.js.map +1 -1
  113. package/out/templator/genUpdateBlock.js +1 -1
  114. package/out/templator/genUpdateBlock.js.map +1 -1
  115. package/out/templator/sql-parser/index.d.ts +1 -0
  116. package/out/templator/sql-parser/index.js +228 -0
  117. package/out/templator/sql-parser/index.js.map +1 -0
  118. package/out/templator/sql-parser/parser.js +26664 -0
  119. package/out/templator/sql-parser/parser.js.map +1 -0
  120. package/package.json +1 -1
  121. package/src/concepts/BindDirective__.ts +2 -17
  122. package/src/concepts/Interface__.ts +31 -16
  123. package/src/concepts/ProcessElement__.ts +8 -6
  124. package/src/concepts/SqlQueryComponent__.ts +143 -2
  125. package/src/concepts/Variable__.ts +0 -1
  126. package/src/concepts/ViewElement__.ts +12 -20
  127. package/src/generator/genMetaData.ts +55 -37
  128. package/src/server/extendBaseNode.ts +16 -4
  129. package/src/server/naslServer.ts +14 -0
  130. package/src/server/translator.ts +4 -0
  131. package/src/templator/genCreateBlock.ts +1 -1
  132. package/src/templator/genCurdEditMultipleKeyBlock.ts +4 -7
  133. package/src/templator/genCurdMultipleKeyBlock.ts +4 -4
  134. package/src/templator/genEditTableBlock.ts +5 -3
  135. package/src/templator/genGetBlock.ts +3 -2
  136. package/src/templator/genTableBlock.ts +4 -2
  137. package/src/templator/genUpdateBlock.ts +1 -1
@@ -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