@lcap/nasl 2.18.0-beta.5 → 2.18.0-beta.7

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 (88) hide show
  1. package/out/common/BaseNode.js +1 -0
  2. package/out/common/BaseNode.js.map +1 -1
  3. package/out/concepts/BatchAssignment__.js +63 -46
  4. package/out/concepts/BatchAssignment__.js.map +1 -1
  5. package/out/concepts/CallLogic__.d.ts +2 -1
  6. package/out/concepts/CallLogic__.js +26 -11
  7. package/out/concepts/CallLogic__.js.map +1 -1
  8. package/out/concepts/Destination__.d.ts +2 -1
  9. package/out/concepts/Destination__.js +90 -22
  10. package/out/concepts/Destination__.js.map +1 -1
  11. package/out/concepts/Logic__.js +6 -7
  12. package/out/concepts/Logic__.js.map +1 -1
  13. package/out/concepts/MatchExpression__.d.ts +97 -0
  14. package/out/concepts/MatchExpression__.js +281 -0
  15. package/out/concepts/MatchExpression__.js.map +1 -0
  16. package/out/concepts/ViewElement__.js +1 -1
  17. package/out/concepts/ViewElement__.js.map +1 -1
  18. package/out/concepts/View__.js +4 -0
  19. package/out/concepts/View__.js.map +1 -1
  20. package/out/generator/genBundleFiles.js +32 -182
  21. package/out/generator/genBundleFiles.js.map +1 -1
  22. package/out/generator/genMetaData.d.ts +1 -10
  23. package/out/generator/genMetaData.js +189 -50
  24. package/out/generator/genMetaData.js.map +1 -1
  25. package/out/generator/genReleaseBody.js +11 -2
  26. package/out/generator/genReleaseBody.js.map +1 -1
  27. package/out/server/extendBaseNode.js +4 -18
  28. package/out/server/extendBaseNode.js.map +1 -1
  29. package/out/server/formatTsUtils.d.ts +1 -2
  30. package/out/server/formatTsUtils.js +30 -47
  31. package/out/server/formatTsUtils.js.map +1 -1
  32. package/out/server/getProcesses.js +1 -1
  33. package/out/server/getProcesses.js.map +1 -1
  34. package/out/server/naslServer.js +8 -7
  35. package/out/server/naslServer.js.map +1 -1
  36. package/out/server/translator.js +19 -4
  37. package/out/server/translator.js.map +1 -1
  38. package/out/templator/sql-parser/index.d.ts +1 -0
  39. package/out/templator/sql-parser/index.js +228 -0
  40. package/out/templator/sql-parser/index.js.map +1 -0
  41. package/out/templator/sql-parser/parser.js +26664 -0
  42. package/out/templator/sql-parser/parser.js.map +1 -0
  43. package/package.json +2 -2
  44. package/sandbox/stdlib/dist/nasl.logging.js +0 -0
  45. package/sandbox/stdlib/nasl.util.ts +1 -1
  46. package/src/automate/engine/dist/index.dev.js +517 -0
  47. package/src/common/BaseNode.ts +1 -0
  48. package/src/common/dist/BaseNode.js +1101 -0
  49. package/src/concepts/BatchAssignment__.ts +66 -50
  50. package/src/concepts/CallLogic__.ts +26 -11
  51. package/src/concepts/Destination__.ts +92 -22
  52. package/src/concepts/Logic__.ts +6 -7
  53. package/src/concepts/ViewElement__.ts +8 -29
  54. package/src/concepts/View__.ts +4 -0
  55. package/src/concepts/basics/stdlib/dist/nasl.util.js +1503 -0
  56. package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +24 -0
  57. package/src/concepts/dist/Anchor__.js +179 -0
  58. package/src/concepts/dist/Assignment__.js +301 -0
  59. package/src/concepts/dist/CallFunction__.js +513 -0
  60. package/src/concepts/dist/CallInterface__.js +533 -0
  61. package/src/concepts/dist/CallLogic__.js +892 -0
  62. package/src/concepts/dist/ForEachStatement__.js +426 -0
  63. package/src/concepts/dist/MatchCase__.js +587 -0
  64. package/src/concepts/dist/Match__.js +631 -0
  65. package/src/concepts/dist/MemberExpression__.js +348 -0
  66. package/src/concepts/dist/Param__.js +538 -0
  67. package/src/concepts/dist/Return__.js +494 -0
  68. package/src/concepts/dist/Variable__.js +537 -0
  69. package/src/concepts/dist/ViewElement__.js +1680 -0
  70. package/src/generator/dist/genBundleFiles.js +261 -0
  71. package/src/generator/dist/genMetaData.js +249 -0
  72. package/src/generator/genBundleFiles.ts +34 -219
  73. package/src/generator/genMetaData.ts +182 -77
  74. package/src/generator/genReleaseBody.ts +10 -3
  75. package/src/server/dist/formatTsUtils.js +683 -0
  76. package/src/server/dist/naslServer.js +3474 -0
  77. package/src/server/extendBaseNode.ts +4 -19
  78. package/src/server/formatTsUtils.ts +30 -46
  79. package/src/server/getProcesses.ts +1 -1
  80. package/src/server/naslServer.ts +8 -7
  81. package/src/server/translator.ts +18 -4
  82. package/src/service/storage/dist/init.js +572 -0
  83. package/ts-worker/dist/webpack.config.dev.js +108 -0
  84. package/dist/bundle.js +0 -3962
  85. package/dist/bundle.js.LICENSE.txt +0 -16
  86. package/out/generator/release.d.ts +0 -1
  87. package/out/generator/release.js +0 -51
  88. package/out/generator/release.js.map +0 -1
@@ -0,0 +1,587 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __assign = (this && this.__assign) || function () {
16
+ __assign = Object.assign || function(t) {
17
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
18
+ s = arguments[i];
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20
+ t[p] = s[p];
21
+ }
22
+ return t;
23
+ };
24
+ return __assign.apply(this, arguments);
25
+ };
26
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
27
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29
+ 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;
30
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
31
+ };
32
+ exports.__esModule = true;
33
+ exports.MatchCase = void 0;
34
+ // @ts-nocheck
35
+ var translator_1 = require("../translator");
36
+ var MemberExpression__1 = require("./MemberExpression__");
37
+ var BooleanLiteral__1 = require("./BooleanLiteral__");
38
+ var decorators_1 = require("../decorators");
39
+ var utils = require("../utils");
40
+ var classMap_1 = require("../common/classMap");
41
+ var LogicItem__1 = require("./LogicItem__");
42
+ var TypeAnnotation__1 = require("./TypeAnnotation__");
43
+ /**
44
+ * 匹配分支情况
45
+ */
46
+ var MatchCase = /** @class */ (function (_super) {
47
+ __extends(MatchCase, _super);
48
+ /**
49
+ * @param source 需要合并的部分参数
50
+ */
51
+ function MatchCase(source) {
52
+ var _this = this;
53
+ source = Object.assign({}, MatchCase_1.getDefaultOptions(), source);
54
+ _this = _super.call(this, source) || this;
55
+ /**
56
+ * 产品概念
57
+ */
58
+ _this.concept = 'MatchCase';
59
+ /**
60
+ * 条件表达式
61
+ */
62
+ _this.patterns = [];
63
+ /**
64
+ * then
65
+ */
66
+ _this.body = [];
67
+ /**
68
+ * 是否可枚举
69
+ */
70
+ _this.isMatchedTypeEnumable = false;
71
+ _super.prototype.subConstructor.call(_this, source);
72
+ return _this;
73
+ }
74
+ MatchCase_1 = MatchCase;
75
+ MatchCase.from = function (source, parentNode, parentKey) {
76
+ return _super.from.call(this, source, parentNode, parentKey);
77
+ };
78
+ /**
79
+ * 设置条件表达式
80
+ */
81
+ MatchCase.prototype.setPatterns = function (patterns) {
82
+ var object = {
83
+ patterns: patterns
84
+ };
85
+ this.update(__assign({}, object));
86
+ };
87
+ /**
88
+ * 设置是否可枚举
89
+ */
90
+ MatchCase.prototype.setIsMatchedTypeEnumable = function (isMatchedTypeEnumable) {
91
+ var object = {
92
+ isMatchedTypeEnumable: isMatchedTypeEnumable
93
+ };
94
+ this.update(__assign({}, object));
95
+ };
96
+ MatchCase.prototype.getLogicItemExistingNames = function (excludedList) {
97
+ if (excludedList === void 0) { excludedList = []; }
98
+ var excludedSet = new Set(excludedList);
99
+ return (this.patterns || []).filter(function (item) { return !excludedSet.has(item); }).map(function (item) { return item.name; });
100
+ };
101
+ MatchCase.prototype.getLogicItemUniqueName = function (name) {
102
+ if (name === void 0) { name = 'logicItem1'; }
103
+ return utils.unique(name, this.getLogicItemExistingNames(), undefined, false);
104
+ };
105
+ MatchCase.prototype._insertLogicItemInPatternsAt = function (options, index) {
106
+ var logicItemOptions = {};
107
+ var relationOptions = { parentNode: this, parentKey: 'patterns' };
108
+ var logicItem;
109
+ if (!options) {
110
+ logicItem = LogicItem__1["default"].from(__assign(__assign({}, logicItemOptions), { name: this.getLogicItemUniqueName() }), this, 'patterns');
111
+ }
112
+ else if (typeof options === 'string') {
113
+ logicItem = LogicItem__1["default"].from(__assign(__assign({}, logicItemOptions), { name: options }), this, 'patterns');
114
+ }
115
+ else if (options instanceof LogicItem__1["default"]) {
116
+ options.ensureDelete(); // 同一实例不支持多处存在
117
+ logicItem = options;
118
+ Object.assign(logicItem, relationOptions);
119
+ }
120
+ else {
121
+ logicItem = LogicItem__1["default"].from(__assign(__assign({}, logicItemOptions), options), this, 'patterns');
122
+ }
123
+ this.patterns.splice(index, 0, logicItem);
124
+ return logicItem;
125
+ };
126
+ MatchCase.prototype.insertLogicItemInPatternsAt = function (options, index) {
127
+ var node = this._insertLogicItemInPatternsAt(options, index);
128
+ node.create({
129
+ index: index,
130
+ parentNode: this,
131
+ parentKey: 'patterns'
132
+ });
133
+ return node;
134
+ };
135
+ MatchCase.prototype._addLogicItemInPatterns = function (options) {
136
+ var index = this.patterns.length;
137
+ return this._insertLogicItemInPatternsAt(options, index);
138
+ };
139
+ MatchCase.prototype.addLogicItemInPatterns = function (options) {
140
+ var node = this._addLogicItemInPatterns(options);
141
+ var index = this.patterns.indexOf(node);
142
+ node.create({
143
+ index: index,
144
+ parentNode: this,
145
+ parentKey: 'patterns'
146
+ });
147
+ return node;
148
+ };
149
+ MatchCase.prototype._insertItemInBodyAt = function (options, index) {
150
+ var logicItemOptions = {};
151
+ var relationOptions = { parentNode: this, parentKey: 'body' };
152
+ var logicItem;
153
+ if (options instanceof LogicItem__1["default"]) {
154
+ options.ensureDelete(); // 同一实例不支持多处存在
155
+ logicItem = options;
156
+ Object.assign(logicItem, relationOptions);
157
+ }
158
+ else {
159
+ logicItem = LogicItem__1["default"].from(__assign(__assign({}, logicItemOptions), options), this, 'body');
160
+ }
161
+ this.body.splice(index, 0, logicItem);
162
+ return logicItem;
163
+ };
164
+ MatchCase.prototype.insertItemInBodyAt = function (options, index) {
165
+ var node = this._insertItemInBodyAt(options, index);
166
+ node.create({
167
+ index: index,
168
+ parentNode: this,
169
+ parentKey: 'body'
170
+ });
171
+ return node;
172
+ };
173
+ MatchCase.prototype._addItemInBody = function (options) {
174
+ var index = this.body.length;
175
+ return this._insertItemInBodyAt(options, index);
176
+ };
177
+ MatchCase.prototype.addItemInBody = function (options) {
178
+ var node = this._addItemInBody(options);
179
+ var index = this.body.indexOf(node);
180
+ node.create({
181
+ index: index,
182
+ parentNode: this,
183
+ parentKey: 'body'
184
+ });
185
+ return node;
186
+ };
187
+ MatchCase.prototype.getTypeAnnotationExistingNames = function (excludedList) {
188
+ if (excludedList === void 0) { excludedList = []; }
189
+ var excludedSet = new Set(excludedList);
190
+ return (this.patterns || []).filter(function (item) { return !excludedSet.has(item); }).map(function (item) { return item.name; });
191
+ };
192
+ MatchCase.prototype.getTypeAnnotationUniqueName = function (name) {
193
+ if (name === void 0) { name = 'typeAnnotation1'; }
194
+ return utils.unique(name, this.getTypeAnnotationExistingNames(), undefined, false);
195
+ };
196
+ MatchCase.prototype._insertTypeAnnotationAt = function (options, index) {
197
+ var typeAnnotationOptions = {};
198
+ var relationOptions = { parentNode: this, parentKey: 'patterns' };
199
+ var typeAnnotation;
200
+ if (!options) {
201
+ typeAnnotation = TypeAnnotation__1["default"].from(__assign(__assign({}, typeAnnotationOptions), { name: this.getTypeAnnotationUniqueName() }), this, 'patterns');
202
+ }
203
+ else if (typeof options === 'string') {
204
+ typeAnnotation = TypeAnnotation__1["default"].from(__assign(__assign({}, typeAnnotationOptions), { name: options }), this, 'patterns');
205
+ }
206
+ else if (options instanceof TypeAnnotation__1["default"]) {
207
+ options.ensureDelete(); // 同一实例不支持多处存在
208
+ typeAnnotation = options;
209
+ Object.assign(typeAnnotation, relationOptions);
210
+ }
211
+ else {
212
+ typeAnnotation = TypeAnnotation__1["default"].from(__assign(__assign({}, typeAnnotationOptions), options), this, 'patterns');
213
+ }
214
+ this.patterns.splice(index, 0, typeAnnotation);
215
+ return typeAnnotation;
216
+ };
217
+ MatchCase.prototype.insertTypeAnnotationAt = function (options, index) {
218
+ var node = this._insertTypeAnnotationAt(options, index);
219
+ node.create({
220
+ index: index,
221
+ parentNode: this,
222
+ parentKey: 'patterns'
223
+ });
224
+ return node;
225
+ };
226
+ MatchCase.prototype._addTypeAnnotation = function (options) {
227
+ var index = this.patterns.length;
228
+ return this._insertTypeAnnotationAt(options, index);
229
+ };
230
+ MatchCase.prototype.addTypeAnnotation = function (options) {
231
+ var node = this._addTypeAnnotation(options);
232
+ var index = this.patterns.indexOf(node);
233
+ node.create({
234
+ index: index,
235
+ parentNode: this,
236
+ parentKey: 'patterns'
237
+ });
238
+ return node;
239
+ };
240
+ MatchCase.prototype.removeLogicItemInPatterns = function (options) {
241
+ var logicItem;
242
+ if (typeof options === 'string') {
243
+ logicItem = this.patterns.find(function (item) { return item.name === options; });
244
+ if (!logicItem) {
245
+ throw new Error('找不到逻辑项 ' + options);
246
+ }
247
+ }
248
+ else {
249
+ logicItem = options;
250
+ }
251
+ return logicItem["delete"]();
252
+ };
253
+ MatchCase.prototype.removeItemInBody = function (options) {
254
+ var logicItem = options;
255
+ return logicItem["delete"]();
256
+ };
257
+ MatchCase.prototype.__removeLogicItem = function (logicItem) {
258
+ var parentKey = logicItem.parentKey;
259
+ var params = {
260
+ parentNode: this,
261
+ parentKey: parentKey,
262
+ index: -1,
263
+ object: null,
264
+ oldObject: logicItem
265
+ };
266
+ if (parentKey) {
267
+ params.parentKey = parentKey;
268
+ if (Array.isArray(this[parentKey])) {
269
+ var index = this[parentKey].indexOf(logicItem);
270
+ ~index && this[parentKey].splice(index, 1);
271
+ params.index = index;
272
+ }
273
+ else if (this[parentKey] === logicItem) {
274
+ params.index = 0;
275
+ this[parentKey] = undefined;
276
+ }
277
+ }
278
+ return params;
279
+ };
280
+ MatchCase.prototype.removeTypeAnnotation = function (options) {
281
+ var typeAnnotation;
282
+ if (typeof options === 'string') {
283
+ typeAnnotation = this.patterns.find(function (item) { return item.name === options; });
284
+ if (!typeAnnotation) {
285
+ throw new Error('找不到类型标注 ' + options);
286
+ }
287
+ }
288
+ else {
289
+ typeAnnotation = options;
290
+ }
291
+ return typeAnnotation["delete"]();
292
+ };
293
+ MatchCase.prototype.__removeTypeAnnotation = function (typeAnnotation) {
294
+ var parentKey = typeAnnotation.parentKey;
295
+ var params = {
296
+ parentNode: this,
297
+ parentKey: parentKey,
298
+ index: -1,
299
+ object: null,
300
+ oldObject: typeAnnotation
301
+ };
302
+ if (parentKey) {
303
+ params.parentKey = parentKey;
304
+ if (Array.isArray(this[parentKey])) {
305
+ var index = this[parentKey].indexOf(typeAnnotation);
306
+ ~index && this[parentKey].splice(index, 1);
307
+ params.index = index;
308
+ }
309
+ else if (this[parentKey] === typeAnnotation) {
310
+ params.index = 0;
311
+ this[parentKey] = undefined;
312
+ }
313
+ }
314
+ return params;
315
+ };
316
+ Object.defineProperty(MatchCase.prototype, "isDisabled", {
317
+ //================================================================================
318
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
319
+ // 自动生成的代码已结束。下面可以手动编写。
320
+ //================================================================================
321
+ // 是否处于禁用状态
322
+ get: function () {
323
+ var matchExpression = this.parentNode;
324
+ var cases = matchExpression === null || matchExpression === void 0 ? void 0 : matchExpression.cases;
325
+ if (Array.isArray(cases) && cases.length > 1) {
326
+ var index = cases.indexOf(this);
327
+ // 是最后一项
328
+ if (index === cases.length - 1) {
329
+ var enumerableItems = matchExpression === null || matchExpression === void 0 ? void 0 : matchExpression.enumerableItems;
330
+ if (Array.isArray(enumerableItems)) {
331
+ var map_1 = {};
332
+ cases.forEach(function (caseItem) {
333
+ var patterns = (caseItem || {}).patterns;
334
+ if (Array.isArray(patterns)) {
335
+ patterns.forEach(function (pattern) {
336
+ if (pattern instanceof TypeAnnotation__1["default"]) {
337
+ var patternTypeKey = pattern.typeKey;
338
+ map_1[patternTypeKey] = true;
339
+ }
340
+ else if (pattern instanceof MemberExpression__1["default"] || pattern instanceof BooleanLiteral__1["default"]) {
341
+ var patternValue = pattern.getValue();
342
+ map_1[patternValue] = true;
343
+ }
344
+ });
345
+ }
346
+ });
347
+ var enumerableKeys = Object.keys(map_1);
348
+ if (enumerableKeys.length === enumerableItems.length) {
349
+ return true;
350
+ }
351
+ }
352
+ }
353
+ }
354
+ return false;
355
+ },
356
+ enumerable: false,
357
+ configurable: true
358
+ });
359
+ Object.defineProperty(MatchCase.prototype, "isSlotTypeError", {
360
+ // 槽位类型是否错误
361
+ get: function () {
362
+ var match = this.parentNode;
363
+ var expression = match === null || match === void 0 ? void 0 : match.expression;
364
+ var isMatchedTypeEnumable = match === null || match === void 0 ? void 0 : match.isEnumerable;
365
+ if (expression && isMatchedTypeEnumable !== this.isMatchedTypeEnumable) {
366
+ return true;
367
+ }
368
+ return false;
369
+ },
370
+ enumerable: false,
371
+ configurable: true
372
+ });
373
+ MatchCase.prototype.isTypeMatching = function () {
374
+ return this.parentNode.isTypeMatching();
375
+ };
376
+ MatchCase.prototype.toVue = function (options) {
377
+ var _this = this;
378
+ if ((options === null || options === void 0 ? void 0 : options.finalCode) === false) {
379
+ var code_1 = '';
380
+ if (Array.isArray(this.patterns)) {
381
+ this.patterns.forEach(function (pattern, index) {
382
+ var _a;
383
+ code_1 += (_a = pattern === null || pattern === void 0 ? void 0 : pattern.toVue) === null || _a === void 0 ? void 0 : _a.call(pattern);
384
+ if (index !== _this.patterns.length - 1) {
385
+ code_1 += ' 或 ';
386
+ }
387
+ });
388
+ }
389
+ if (Array.isArray(this.body)) {
390
+ code_1 += " => ";
391
+ this.body.forEach(function (logicItem, bodyIndex) {
392
+ var _a;
393
+ if (bodyIndex === _this.body.length - 1 && logicItem.concept !== 'Assignment') {
394
+ code_1 += ' ' + ((_a = logicItem === null || logicItem === void 0 ? void 0 : logicItem.toVue) === null || _a === void 0 ? void 0 : _a.call(logicItem)) + ' ';
395
+ }
396
+ });
397
+ code_1 += "; ";
398
+ }
399
+ return code_1;
400
+ }
401
+ };
402
+ MatchCase.prototype.toUI = function (state) {
403
+ var _this = this;
404
+ var code = '';
405
+ if (Array.isArray(this.patterns)) {
406
+ this.patterns.forEach(function (pattern, index) {
407
+ var _a;
408
+ code += (_a = pattern.toUI) === null || _a === void 0 ? void 0 : _a.call(pattern);
409
+ if (index !== _this.patterns.length - 1) {
410
+ code += ' 或 ';
411
+ }
412
+ });
413
+ }
414
+ if (Array.isArray(this.body)) {
415
+ code += " => ";
416
+ this.body.forEach(function (logicItem, bodyIndex) {
417
+ var _a;
418
+ if (bodyIndex === _this.body.length - 1 && logicItem.concept !== 'Assignment') {
419
+ code += ' ' + ((_a = logicItem.toUI) === null || _a === void 0 ? void 0 : _a.call(logicItem)) + ' ';
420
+ }
421
+ });
422
+ code += "; ";
423
+ }
424
+ return code;
425
+ };
426
+ MatchCase.prototype.toJS = function (expression, index, length) {
427
+ var _this = this;
428
+ var code = '';
429
+ if (Array.isArray(this.patterns)) {
430
+ var patternStrArr = this.patterns.map(function (pattern) {
431
+ var _a, _b, _c, _d;
432
+ var patternStr = '';
433
+ if (pattern instanceof TypeAnnotation__1["default"]) {
434
+ patternStr += "this.$isInstanceOf(" + ((_a = expression.toJS) === null || _a === void 0 ? void 0 : _a.call(expression)) + ", " + ((_b = pattern.toJS) === null || _b === void 0 ? void 0 : _b.call(pattern)) + ")";
435
+ }
436
+ else {
437
+ patternStr += "this.$global.isEqual(" + ((_c = expression.toJS) === null || _c === void 0 ? void 0 : _c.call(expression)) + ", " + ((_d = pattern.toJS) === null || _d === void 0 ? void 0 : _d.call(pattern)) + ")";
438
+ }
439
+ return patternStr;
440
+ });
441
+ var patternStr = patternStrArr.join(' || ');
442
+ if (length > 1) {
443
+ if (index === 0) {
444
+ code = "if (" + patternStr + ") {\n";
445
+ }
446
+ else if (index !== length - 1) {
447
+ code = "else if (" + patternStr + ") {\n";
448
+ }
449
+ else {
450
+ code += 'else {\n';
451
+ }
452
+ }
453
+ if (Array.isArray(this.body)) {
454
+ this.body.forEach(function (logicItem, bodyIndex) {
455
+ if (_this.parentNode.isExpression && bodyIndex === _this.body.length - 1) {
456
+ code += "return ";
457
+ }
458
+ code += logicItem.toJS() + '\n';
459
+ });
460
+ }
461
+ if (length > 1) {
462
+ code += '}\n';
463
+ }
464
+ }
465
+ return code;
466
+ };
467
+ MatchCase.prototype.toEmbeddedTS = function (state, index, parentCode) {
468
+ var _this = this;
469
+ var code = '\n';
470
+ var parentNode = this.parentNode;
471
+ var length = parentNode.cases.length;
472
+ if (length > 1) {
473
+ if (index !== length - 1) {
474
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0));
475
+ code += 'if (';
476
+ if (Array.isArray(this.patterns) && this.patterns.length) {
477
+ this.patterns.forEach(function (pattern, index) {
478
+ // nasl.code.isUnionType<typeof ccc, List<Integer> | List<Boolean>>
479
+ if (pattern instanceof TypeAnnotation__1["default"]) {
480
+ if (index === 0) {
481
+ code += "nasl.core.isUnionType<typeof ";
482
+ code += parentCode + ",";
483
+ code += pattern.toEmbeddedTS(translator_1.shiftState(state, code));
484
+ }
485
+ else {
486
+ code += '|';
487
+ code += pattern.toEmbeddedTS(translator_1.shiftState(state, code));
488
+ }
489
+ if (index === _this.patterns.length - 1) {
490
+ code += '>';
491
+ code += "(" + parentCode + ")";
492
+ }
493
+ }
494
+ else {
495
+ if (index !== 0) {
496
+ code += ' || ';
497
+ }
498
+ code += parentCode;
499
+ code += ' === ';
500
+ code += pattern.toEmbeddedTS(translator_1.shiftState(state, code, {
501
+ tabSize: ((state === null || state === void 0 ? void 0 : state.tabSize) || 0)
502
+ }));
503
+ }
504
+ });
505
+ }
506
+ else {
507
+ code += '__IDENTIFIER__';
508
+ }
509
+ code += ') {\n';
510
+ if (Array.isArray(this.body)) {
511
+ this.body.forEach(function (logicItem, bodyIndex) {
512
+ if (bodyIndex === _this.body.length - 1 && logicItem.concept !== 'Assignment') {
513
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0));
514
+ code += "return ";
515
+ }
516
+ code
517
+ += logicItem.toEmbeddedTS(translator_1.shiftState(state, code, {
518
+ tabSize: ((state === null || state === void 0 ? void 0 : state.tabSize) || 0)
519
+ })) + '\n';
520
+ });
521
+ }
522
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0)) + '}\n';
523
+ }
524
+ else {
525
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0));
526
+ code += 'else {\n';
527
+ if (Array.isArray(this.body)) {
528
+ this.body.forEach(function (logicItem, bodyIndex) {
529
+ if (bodyIndex === _this.body.length - 1 && logicItem.concept !== 'Assignment') {
530
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0));
531
+ code += "return ";
532
+ }
533
+ code
534
+ += logicItem.toEmbeddedTS(translator_1.shiftState(state, code, {
535
+ tabSize: ((state === null || state === void 0 ? void 0 : state.tabSize) || 0)
536
+ })) + '\n';
537
+ });
538
+ }
539
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0)) + '}\n';
540
+ }
541
+ }
542
+ else {
543
+ if (Array.isArray(this.body)) {
544
+ this.body.forEach(function (logicItem, bodyIndex) {
545
+ if (bodyIndex === _this.body.length - 1 && logicItem.concept !== 'Assignment') {
546
+ code += translator_1.indent(((state === null || state === void 0 ? void 0 : state.tabSize) || 0));
547
+ code += "return ";
548
+ }
549
+ code
550
+ += logicItem.toEmbeddedTS(translator_1.shiftState(state, code, {
551
+ tabSize: ((state === null || state === void 0 ? void 0 : state.tabSize) || 0)
552
+ })) + '\n';
553
+ });
554
+ }
555
+ code += '\n';
556
+ }
557
+ return code;
558
+ };
559
+ var MatchCase_1;
560
+ __decorate([
561
+ decorators_1.property()
562
+ ], MatchCase.prototype, "concept");
563
+ __decorate([
564
+ decorators_1.property('LogicItem | TypeAnnotation')
565
+ ], MatchCase.prototype, "patterns");
566
+ __decorate([
567
+ decorators_1.property('LogicItem')
568
+ ], MatchCase.prototype, "body");
569
+ __decorate([
570
+ decorators_1.property()
571
+ ], MatchCase.prototype, "isMatchedTypeEnumable");
572
+ __decorate([
573
+ translator_1.withSourceMap()
574
+ ], MatchCase.prototype, "toEmbeddedTS");
575
+ MatchCase = MatchCase_1 = __decorate([
576
+ decorators_1.concept('匹配分支情况')
577
+ ], MatchCase);
578
+ return MatchCase;
579
+ }(LogicItem__1["default"]));
580
+ exports.MatchCase = MatchCase;
581
+ classMap_1["default"].MatchCase = MatchCase;
582
+ exports["default"] = MatchCase;
583
+ //================================================================================
584
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
585
+ // 自动生成的代码已结束。下面可以手动编写。
586
+ //================================================================================
587
+ // @ts-check