@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.
- package/out/common/BaseNode.js +1 -0
- package/out/common/BaseNode.js.map +1 -1
- package/out/concepts/BatchAssignment__.js +63 -46
- package/out/concepts/BatchAssignment__.js.map +1 -1
- package/out/concepts/CallLogic__.d.ts +2 -1
- package/out/concepts/CallLogic__.js +26 -11
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/Destination__.d.ts +2 -1
- package/out/concepts/Destination__.js +90 -22
- package/out/concepts/Destination__.js.map +1 -1
- package/out/concepts/Logic__.js +6 -7
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/MatchExpression__.d.ts +97 -0
- package/out/concepts/MatchExpression__.js +281 -0
- package/out/concepts/MatchExpression__.js.map +1 -0
- package/out/concepts/ViewElement__.js +1 -1
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.js +4 -0
- package/out/concepts/View__.js.map +1 -1
- package/out/generator/genBundleFiles.js +32 -182
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/genMetaData.d.ts +1 -10
- package/out/generator/genMetaData.js +189 -50
- package/out/generator/genMetaData.js.map +1 -1
- package/out/generator/genReleaseBody.js +11 -2
- package/out/generator/genReleaseBody.js.map +1 -1
- package/out/server/extendBaseNode.js +4 -18
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/formatTsUtils.d.ts +1 -2
- package/out/server/formatTsUtils.js +30 -47
- package/out/server/formatTsUtils.js.map +1 -1
- package/out/server/getProcesses.js +1 -1
- package/out/server/getProcesses.js.map +1 -1
- package/out/server/naslServer.js +8 -7
- package/out/server/naslServer.js.map +1 -1
- package/out/server/translator.js +19 -4
- package/out/server/translator.js.map +1 -1
- package/out/templator/sql-parser/index.d.ts +1 -0
- package/out/templator/sql-parser/index.js +228 -0
- package/out/templator/sql-parser/index.js.map +1 -0
- package/out/templator/sql-parser/parser.js +26664 -0
- package/out/templator/sql-parser/parser.js.map +1 -0
- package/package.json +2 -2
- package/sandbox/stdlib/dist/nasl.logging.js +0 -0
- package/sandbox/stdlib/nasl.util.ts +1 -1
- package/src/automate/engine/dist/index.dev.js +517 -0
- package/src/common/BaseNode.ts +1 -0
- package/src/common/dist/BaseNode.js +1101 -0
- package/src/concepts/BatchAssignment__.ts +66 -50
- package/src/concepts/CallLogic__.ts +26 -11
- package/src/concepts/Destination__.ts +92 -22
- package/src/concepts/Logic__.ts +6 -7
- package/src/concepts/ViewElement__.ts +8 -29
- package/src/concepts/View__.ts +4 -0
- package/src/concepts/basics/stdlib/dist/nasl.util.js +1503 -0
- package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +24 -0
- package/src/concepts/dist/Anchor__.js +179 -0
- package/src/concepts/dist/Assignment__.js +301 -0
- package/src/concepts/dist/CallFunction__.js +513 -0
- package/src/concepts/dist/CallInterface__.js +533 -0
- package/src/concepts/dist/CallLogic__.js +892 -0
- package/src/concepts/dist/ForEachStatement__.js +426 -0
- package/src/concepts/dist/MatchCase__.js +587 -0
- package/src/concepts/dist/Match__.js +631 -0
- package/src/concepts/dist/MemberExpression__.js +348 -0
- package/src/concepts/dist/Param__.js +538 -0
- package/src/concepts/dist/Return__.js +494 -0
- package/src/concepts/dist/Variable__.js +537 -0
- package/src/concepts/dist/ViewElement__.js +1680 -0
- package/src/generator/dist/genBundleFiles.js +261 -0
- package/src/generator/dist/genMetaData.js +249 -0
- package/src/generator/genBundleFiles.ts +34 -219
- package/src/generator/genMetaData.ts +182 -77
- package/src/generator/genReleaseBody.ts +10 -3
- package/src/server/dist/formatTsUtils.js +683 -0
- package/src/server/dist/naslServer.js +3474 -0
- package/src/server/extendBaseNode.ts +4 -19
- package/src/server/formatTsUtils.ts +30 -46
- package/src/server/getProcesses.ts +1 -1
- package/src/server/naslServer.ts +8 -7
- package/src/server/translator.ts +18 -4
- package/src/service/storage/dist/init.js +572 -0
- package/ts-worker/dist/webpack.config.dev.js +108 -0
- package/dist/bundle.js +0 -3962
- package/dist/bundle.js.LICENSE.txt +0 -16
- package/out/generator/release.d.ts +0 -1
- package/out/generator/release.js +0 -51
- package/out/generator/release.js.map +0 -1
|
@@ -572,63 +572,79 @@ export class BatchAssignment extends LogicItem {
|
|
|
572
572
|
if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length)
|
|
573
573
|
leftLineSet.add(i);
|
|
574
574
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
return;
|
|
586
|
-
|
|
587
|
-
this.rights.forEach((selectMember, rightFirstIndex) => {
|
|
588
|
-
const { members, expression } = selectMember;
|
|
589
|
-
if (leftLineSet.has(leftSecondIndex))
|
|
590
|
-
return;
|
|
591
|
-
if (addRightIndex !== -1 && addRightIndex !== rightFirstIndex)
|
|
592
|
-
return;
|
|
593
|
-
// 右侧父节点也不允许自动连线
|
|
594
|
-
const rightLineSet = new Set();
|
|
595
|
-
for (let i = 0; i < members.length - 1; i++) {
|
|
596
|
-
const completeName = members[i].completeName;
|
|
597
|
-
const preCompleteName = members[i + 1].completeName;
|
|
598
|
-
if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length)
|
|
599
|
-
rightLineSet.add(i);
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
if (leftName === expression.name && expression.__TypeAnnotation.typeKind === leftTypeAnnotation.typeKind) {
|
|
603
|
-
const Line: AssignmentLine = new AssignmentLine({
|
|
604
|
-
leftIndex: [0, leftSecondIndex],
|
|
605
|
-
rightIndex: [rightFirstIndex],
|
|
606
|
-
});
|
|
607
|
-
lineArr.push(Line);
|
|
608
|
-
leftLineSet.add(leftSecondIndex);
|
|
575
|
+
// await new Promise((resolve) => setTimeout(resolve, 400));
|
|
576
|
+
const autoConnection = () => {
|
|
577
|
+
this.app.emit('collect:start', {
|
|
578
|
+
actionMsg: '自动连线',
|
|
579
|
+
});
|
|
580
|
+
this.left.members.forEach((member: any, leftSecondIndex: number) => {
|
|
581
|
+
const leftValue = member.getValue();
|
|
582
|
+
const leftName = member.property.name;
|
|
583
|
+
const leftTypeAnnotation = member.__TypeAnnotation;
|
|
584
|
+
if (leftLineSet.has(leftSecondIndex) || leftLineSet.has(leftName))
|
|
609
585
|
return;
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
const
|
|
613
|
-
|
|
614
|
-
if (rightLineSet.has(rightSecondIndex))
|
|
586
|
+
|
|
587
|
+
this.rights.forEach((selectMember, rightFirstIndex) => {
|
|
588
|
+
const { members, expression } = selectMember;
|
|
589
|
+
if (leftLineSet.has(leftSecondIndex))
|
|
615
590
|
return;
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
const
|
|
622
|
-
const
|
|
623
|
-
|
|
591
|
+
if (addRightIndex !== -1 && addRightIndex !== rightFirstIndex)
|
|
592
|
+
return;
|
|
593
|
+
// 右侧父节点也不允许自动连线
|
|
594
|
+
const rightLineSet = new Set();
|
|
595
|
+
for (let i = 0; i < members.length - 1; i++) {
|
|
596
|
+
const completeName = members[i].completeName;
|
|
597
|
+
const preCompleteName = members[i + 1].completeName;
|
|
598
|
+
if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length)
|
|
599
|
+
rightLineSet.add(i);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
if (leftName === expression.name && expression.__TypeAnnotation.typeKind === leftTypeAnnotation.typeKind) {
|
|
603
|
+
const Line: AssignmentLine = new AssignmentLine({
|
|
604
|
+
leftIndex: [0, leftSecondIndex],
|
|
605
|
+
rightIndex: [rightFirstIndex],
|
|
606
|
+
});
|
|
624
607
|
lineArr.push(Line);
|
|
625
608
|
leftLineSet.add(leftSecondIndex);
|
|
609
|
+
return;
|
|
626
610
|
}
|
|
611
|
+
members.forEach((rightMember: any, rightSecondIndex: number) => {
|
|
612
|
+
const rightValue = rightMember.getValue();
|
|
613
|
+
const rightName = rightMember.property.name;
|
|
614
|
+
if (rightLineSet.has(rightSecondIndex))
|
|
615
|
+
return;
|
|
616
|
+
|
|
617
|
+
if (leftName === rightName && leftValue.split('.').length === rightValue.split('.').length) {
|
|
618
|
+
const rightTypeAnnotation = rightMember.__TypeAnnotation;
|
|
619
|
+
if (leftTypeAnnotation.typeKind !== rightTypeAnnotation.typeKind)
|
|
620
|
+
return;
|
|
621
|
+
const leftIndex = [0, leftSecondIndex];
|
|
622
|
+
const rightIndex = [rightFirstIndex, rightSecondIndex];
|
|
623
|
+
const Line: AssignmentLine = new AssignmentLine({ leftIndex, rightIndex });
|
|
624
|
+
lineArr.push(Line);
|
|
625
|
+
leftLineSet.add(leftSecondIndex);
|
|
626
|
+
}
|
|
627
|
+
});
|
|
627
628
|
});
|
|
628
629
|
});
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
630
|
+
lineArr.length && this.setAssignmentLines([...this.assignmentLines, ...lineArr]);
|
|
631
|
+
this.app.emit('collect:end');
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
let count = 0;
|
|
635
|
+
const typeAnnotationEnd = () => {
|
|
636
|
+
const l = this.left.members.every((item) => item.__isCorrectTypeAnnotation);
|
|
637
|
+
const r = this.rights.every((right) => right.members.every((item) => item.__isCorrectTypeAnnotation));
|
|
638
|
+
count++;
|
|
639
|
+
if (l && r) {
|
|
640
|
+
autoConnection();
|
|
641
|
+
} else if (count <= 10) {
|
|
642
|
+
setTimeout(() => {
|
|
643
|
+
typeAnnotationEnd();
|
|
644
|
+
}, 100);
|
|
645
|
+
}
|
|
646
|
+
};
|
|
647
|
+
typeAnnotationEnd();
|
|
632
648
|
}
|
|
633
649
|
|
|
634
650
|
connection(leftItem: LogicItem | SelectMembers, rightItem: LogicItem | SelectMembers, rightToLeft: boolean) {
|
|
@@ -513,21 +513,15 @@ export class CallLogic extends LogicItem {
|
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
515
|
|
|
516
|
-
|
|
517
|
-
/**
|
|
518
|
-
* a: logic.params b: this.arguments
|
|
519
|
-
* a 长度 和 b长度相等就一起加一起删
|
|
520
|
-
* 等重新建立连接后
|
|
521
|
-
* 2.b大于a时后面的几项就是要被删除的
|
|
522
|
-
* 3.重命名时候按照下标进行重命名
|
|
523
|
-
* 4.b大于a时,a添加的时候,b的name要改,但是内容不改
|
|
524
|
-
*/
|
|
516
|
+
addCalleeArg(logic: Logic) {
|
|
525
517
|
const newArgs = this.arguments.map((argument) =>
|
|
526
518
|
Argument.from({
|
|
527
519
|
...argument,
|
|
528
520
|
}, this));
|
|
529
521
|
const relationOptions = { parentNode: this, parentKey: 'arguments' };
|
|
530
|
-
|
|
522
|
+
/**
|
|
523
|
+
* 当前两个参数对应上,添加的时候,logic会比参数位内容多,就添加一个 argment
|
|
524
|
+
*/
|
|
531
525
|
if (logic.params.length >= newArgs.length) {
|
|
532
526
|
logic.params.forEach((param: Param, index: number) => {
|
|
533
527
|
const arg = newArgs[index];
|
|
@@ -542,6 +536,9 @@ export class CallLogic extends LogicItem {
|
|
|
542
536
|
}
|
|
543
537
|
});
|
|
544
538
|
} else {
|
|
539
|
+
/**
|
|
540
|
+
* 当前calllogic上数量比logic参数还多,他就需要找一个arg使他变成可用的参数
|
|
541
|
+
*/
|
|
545
542
|
newArgs.forEach((arg: Argument, index: number) => {
|
|
546
543
|
const param = logic.params[index];
|
|
547
544
|
if (param) {
|
|
@@ -554,6 +551,24 @@ export class CallLogic extends LogicItem {
|
|
|
554
551
|
});
|
|
555
552
|
}
|
|
556
553
|
|
|
554
|
+
deleteCalleeArg(argIndex: number) {
|
|
555
|
+
/**
|
|
556
|
+
* 传递过下标来,然后直接移动到最后结束
|
|
557
|
+
* 如果原来就是最后一个位置就不移动了
|
|
558
|
+
*/
|
|
559
|
+
if (typeof argIndex === 'number') {
|
|
560
|
+
if (!this.arguments[argIndex]?.expression) {
|
|
561
|
+
// 如果本身没有值就直接删除
|
|
562
|
+
return this.arguments[argIndex].delete();
|
|
563
|
+
}
|
|
564
|
+
if (argIndex !== this.arguments.length - 1) {
|
|
565
|
+
this.arguments[argIndex]?.moveNode({
|
|
566
|
+
sourceNode: this.arguments[this.arguments.length - 1],
|
|
567
|
+
position: 'insertAfter',
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
557
572
|
toVue(options?: ElementToVueOptions): string {
|
|
558
573
|
let code = '';
|
|
559
574
|
if (this.calleeNamespace === 'nasl.browser' || this.calleeNamespace === 'nasl.auth' || this.calleeNamespace === 'nasl.configuration' || this.calleeNamespace === 'nasl.process') {
|
|
@@ -949,7 +964,7 @@ var __parseType = __parseType || ((root, prop) => {
|
|
|
949
964
|
// 取到是不是必填放入参数中
|
|
950
965
|
code += arg.toEmbeddedTS(shiftState(state, code), arg?.paramRequired);
|
|
951
966
|
if (index !== this.arguments.length - 1)
|
|
952
|
-
code += ',
|
|
967
|
+
code += ', ';
|
|
953
968
|
});
|
|
954
969
|
code += ')';
|
|
955
970
|
if (this.parentNode.concept !== 'Argument'
|
|
@@ -350,10 +350,16 @@ export class Destination extends LogicItem {
|
|
|
350
350
|
url += `/${viewArr.join('/')}`;
|
|
351
351
|
const completeArguments = this.completeArguments;
|
|
352
352
|
if (completeArguments.length) {
|
|
353
|
-
const
|
|
353
|
+
const node = this.viewNode;
|
|
354
|
+
let logicParam: Param[] = [];
|
|
355
|
+
if (node) {
|
|
356
|
+
logicParam = node.params;
|
|
357
|
+
}
|
|
358
|
+
const logicParamLength = logicParam.length;
|
|
359
|
+
const args = completeArguments.map((arg, index) => {
|
|
354
360
|
const value = arg?.toVue();
|
|
355
361
|
let argStr = '';
|
|
356
|
-
if (value) {
|
|
362
|
+
if (value && index < logicParamLength) {
|
|
357
363
|
argStr += `${arg.keyword}=` + '${';
|
|
358
364
|
if (value === 'undefined') {
|
|
359
365
|
argStr += `null`;
|
|
@@ -384,10 +390,16 @@ export class Destination extends LogicItem {
|
|
|
384
390
|
url += `/${viewArr.join('/')}`;
|
|
385
391
|
const completeArguments = this.completeArguments;
|
|
386
392
|
if (completeArguments.length) {
|
|
387
|
-
const
|
|
393
|
+
const node = this.viewNode;
|
|
394
|
+
let logicParam: Param[] = [];
|
|
395
|
+
if (node) {
|
|
396
|
+
logicParam = node.params;
|
|
397
|
+
}
|
|
398
|
+
const logicParamLength = logicParam.length;
|
|
399
|
+
const args = completeArguments.map((arg, index) => {
|
|
388
400
|
const value = arg?.toUI();
|
|
389
401
|
let argStr = '';
|
|
390
|
-
if (value) {
|
|
402
|
+
if (value && index < logicParamLength) {
|
|
391
403
|
argStr += `${arg.keyword}=` + '${';
|
|
392
404
|
if (value === 'undefined') {
|
|
393
405
|
argStr += 'null';
|
|
@@ -397,7 +409,7 @@ export class Destination extends LogicItem {
|
|
|
397
409
|
argStr += '}';
|
|
398
410
|
}
|
|
399
411
|
return argStr;
|
|
400
|
-
});
|
|
412
|
+
}).filter((arg) => !!arg);
|
|
401
413
|
url += `?${args.join('&')}`;
|
|
402
414
|
}
|
|
403
415
|
if (this.anchor) {
|
|
@@ -419,10 +431,16 @@ export class Destination extends LogicItem {
|
|
|
419
431
|
const completeArguments = this.completeArguments;
|
|
420
432
|
|
|
421
433
|
if (completeArguments.length) {
|
|
422
|
-
const
|
|
434
|
+
const node = this.viewNode;
|
|
435
|
+
let logicParam: Param[] = [];
|
|
436
|
+
if (node) {
|
|
437
|
+
logicParam = node.params;
|
|
438
|
+
}
|
|
439
|
+
const logicParamLength = logicParam.length;
|
|
440
|
+
const args = completeArguments.map((arg, index) => {
|
|
423
441
|
const value = arg?.toJS();
|
|
424
442
|
let argStr = '';
|
|
425
|
-
if (value) {
|
|
443
|
+
if (value && index < logicParamLength) {
|
|
426
444
|
argStr += `${arg.keyword}=` + '${';
|
|
427
445
|
if (value === 'undefined') {
|
|
428
446
|
argStr += 'null';
|
|
@@ -481,26 +499,61 @@ export class Destination extends LogicItem {
|
|
|
481
499
|
/**
|
|
482
500
|
* 设置view的argument
|
|
483
501
|
*/
|
|
484
|
-
|
|
485
|
-
const
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
502
|
+
addCalleeArg(view: View) {
|
|
503
|
+
const newArgs = this.arguments.map((argument) =>
|
|
504
|
+
Argument.from({
|
|
505
|
+
...argument,
|
|
506
|
+
}, this));
|
|
507
|
+
const relationOptions = { parentNode: this, parentKey: 'arguments' };
|
|
508
|
+
/**
|
|
509
|
+
* 当前两个参数对应上,添加的时候,view会比参数位内容多,就添加一个 argment
|
|
510
|
+
*/
|
|
511
|
+
if (view.params.length >= newArgs.length) {
|
|
512
|
+
view.params.forEach((param: Param, index: number) => {
|
|
513
|
+
const arg = newArgs[index];
|
|
490
514
|
if (!arg) {
|
|
491
|
-
|
|
492
|
-
keyword:
|
|
493
|
-
});
|
|
515
|
+
const newParam = Argument.from({
|
|
516
|
+
keyword: param.name,
|
|
517
|
+
}, this);
|
|
518
|
+
Object.assign(newParam, relationOptions);
|
|
519
|
+
newArgs.push(newParam);
|
|
520
|
+
} else {
|
|
521
|
+
arg.keyword = param.name;
|
|
494
522
|
}
|
|
495
523
|
});
|
|
496
524
|
} else {
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
525
|
+
/**
|
|
526
|
+
* 当前callview上数量比view参数还多,他就需要找一个arg使他变成可用的参数
|
|
527
|
+
*/
|
|
528
|
+
newArgs.forEach((arg: Argument, index: number) => {
|
|
529
|
+
const param = view.params[index];
|
|
530
|
+
if (param) {
|
|
531
|
+
arg.keyword = param.name;
|
|
501
532
|
}
|
|
502
533
|
});
|
|
503
534
|
}
|
|
535
|
+
this.update({
|
|
536
|
+
arguments: newArgs,
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
deleteCalleeArg(argIndex: number) {
|
|
541
|
+
/**
|
|
542
|
+
* 传递过下标来,然后直接移动到最后结束
|
|
543
|
+
* 如果原来就是最后一个位置就不移动了
|
|
544
|
+
*/
|
|
545
|
+
if (typeof argIndex === 'number') {
|
|
546
|
+
if (!this.arguments[argIndex]?.expression) {
|
|
547
|
+
return this.arguments[argIndex].delete();
|
|
548
|
+
}
|
|
549
|
+
if (argIndex !== this.arguments.length - 1) {
|
|
550
|
+
// 如果本身没有值就直接删除
|
|
551
|
+
this.arguments[argIndex]?.moveNode({
|
|
552
|
+
sourceNode: this.arguments[this.arguments.length - 1],
|
|
553
|
+
position: 'insertAfter',
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
}
|
|
504
557
|
}
|
|
505
558
|
/**
|
|
506
559
|
* 设置Arguments的KeyWord
|
|
@@ -554,13 +607,25 @@ export class Destination extends LogicItem {
|
|
|
554
607
|
toEmbeddedTS(state?: TranslatorState): string {
|
|
555
608
|
let code = '';
|
|
556
609
|
|
|
610
|
+
const node = this.viewNode;
|
|
611
|
+
let logicParam: Param[] = [];
|
|
612
|
+
if (node) {
|
|
613
|
+
logicParam = node.params;
|
|
614
|
+
}
|
|
615
|
+
const logicParamLength = logicParam.length;
|
|
616
|
+
|
|
557
617
|
if (this.parentNode instanceof BindAttribute) {
|
|
558
618
|
code += indent((state?.tabSize || 0) + 2);
|
|
559
619
|
if (this.tsCalleeNamespace && this.tsName) {
|
|
560
620
|
code += `${this.tsCalleeNamespace}.${this.tsName}.$destination({`;
|
|
561
621
|
if (Array.isArray(this.arguments)) {
|
|
562
|
-
this.arguments.forEach((argument: Argument) => {
|
|
622
|
+
this.arguments.forEach((argument: Argument, index) => {
|
|
623
|
+
const oldName = argument.keyword;
|
|
624
|
+
if (index >= logicParamLength) {
|
|
625
|
+
argument.keyword = '__unknown__';
|
|
626
|
+
}
|
|
563
627
|
code += argument.toEmbeddedTS(shiftState(state, code), false, true) + ', ';
|
|
628
|
+
argument.keyword = oldName;
|
|
564
629
|
});
|
|
565
630
|
}
|
|
566
631
|
|
|
@@ -573,8 +638,13 @@ export class Destination extends LogicItem {
|
|
|
573
638
|
if (this.tsCalleeNamespace && this.tsName) {
|
|
574
639
|
code += `${this.tsCalleeNamespace}.${this.tsName}.$destination({`;
|
|
575
640
|
if (Array.isArray(this.arguments)) {
|
|
576
|
-
this.arguments.forEach((argument: Argument) => {
|
|
641
|
+
this.arguments.forEach((argument: Argument, index) => {
|
|
642
|
+
const oldName = argument.keyword;
|
|
643
|
+
if (index >= logicParamLength) {
|
|
644
|
+
argument.keyword = '__unknown__';
|
|
645
|
+
}
|
|
577
646
|
code += argument.toEmbeddedTS(shiftState(state, code), false, true) + ', ';
|
|
647
|
+
argument.keyword = oldName;
|
|
578
648
|
});
|
|
579
649
|
}
|
|
580
650
|
|
package/src/concepts/Logic__.ts
CHANGED
|
@@ -1625,15 +1625,10 @@ export class Logic extends BaseNode {
|
|
|
1625
1625
|
code += '(';
|
|
1626
1626
|
this.params.forEach((param, index) => {
|
|
1627
1627
|
code += param.toEmbeddedTS(shiftState(state, code));
|
|
1628
|
-
code += ',';
|
|
1629
|
-
});
|
|
1630
|
-
code += '\n, __defaultValues?: { \n';
|
|
1631
|
-
this.params.forEach((param, index) => {
|
|
1632
|
-
code += `${param.name}: "${param.defaultValue || ''}"`;
|
|
1633
1628
|
if (index !== this.params.length - 1)
|
|
1634
|
-
code += '
|
|
1629
|
+
code += ', ';
|
|
1635
1630
|
});
|
|
1636
|
-
code += '
|
|
1631
|
+
code += ')';
|
|
1637
1632
|
} else {
|
|
1638
1633
|
// 没有参数的
|
|
1639
1634
|
code += '()';
|
|
@@ -1815,6 +1810,10 @@ export class Logic extends BaseNode {
|
|
|
1815
1810
|
return replaceCode;
|
|
1816
1811
|
|
|
1817
1812
|
let fnCode = $1;
|
|
1813
|
+
if ($1.startsWith(`${variable}.`))
|
|
1814
|
+
fnCode = $1.replaceAll(`${variable}.`, `${replaceCode}.`);
|
|
1815
|
+
if ($1.startsWith(`${variable},`))
|
|
1816
|
+
fnCode = $1.replaceAll(`${variable},`, `${replaceCode},`);
|
|
1818
1817
|
if ($1.includes(`(${variable},`))
|
|
1819
1818
|
fnCode = $1.replaceAll(`(${variable},`, `(${replaceCode},`);
|
|
1820
1819
|
if ($1.includes(`(${variable}.`))
|
|
@@ -315,8 +315,6 @@ export class ViewElement extends BaseNode {
|
|
|
315
315
|
super.subConstructor(source);
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
|
|
319
|
-
|
|
320
318
|
/**
|
|
321
319
|
* 从父级删除该节点
|
|
322
320
|
* @internal
|
|
@@ -365,7 +363,7 @@ export class ViewElement extends BaseNode {
|
|
|
365
363
|
});
|
|
366
364
|
}
|
|
367
365
|
|
|
368
|
-
|
|
366
|
+
getBindAttributeExistingNames(excludedList: Array<BindAttribute> = []) {
|
|
369
367
|
const excludedSet = new Set(excludedList);
|
|
370
368
|
return ((this.bindAttrs as BindAttribute[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
|
|
371
369
|
}
|
|
@@ -506,7 +504,6 @@ export class ViewElement extends BaseNode {
|
|
|
506
504
|
return node;
|
|
507
505
|
}
|
|
508
506
|
|
|
509
|
-
|
|
510
507
|
getBindEventExistingNames(excludedList: Array<BindEvent> = []) {
|
|
511
508
|
const excludedSet = new Set(excludedList);
|
|
512
509
|
return ((this.bindEvents as BindEvent[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
|
|
@@ -648,7 +645,6 @@ export class ViewElement extends BaseNode {
|
|
|
648
645
|
return node;
|
|
649
646
|
}
|
|
650
647
|
|
|
651
|
-
|
|
652
648
|
getBindDirectiveExistingNames(excludedList: Array<BindDirective> = []) {
|
|
653
649
|
const excludedSet = new Set(excludedList);
|
|
654
650
|
return ((this.bindDirectives as BindDirective[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
|
|
@@ -790,9 +786,6 @@ export class ViewElement extends BaseNode {
|
|
|
790
786
|
return node;
|
|
791
787
|
}
|
|
792
788
|
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
789
|
getBindStyleExistingNames(excludedList: Array<BindStyle> = []) {
|
|
797
790
|
const excludedSet = new Set(excludedList);
|
|
798
791
|
return ((this.bindStyles as BindStyle[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
|
|
@@ -934,9 +927,6 @@ export class ViewElement extends BaseNode {
|
|
|
934
927
|
return node;
|
|
935
928
|
}
|
|
936
929
|
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
930
|
/**
|
|
941
931
|
* 插入页面元素
|
|
942
932
|
* @internal
|
|
@@ -1070,9 +1060,6 @@ export class ViewElement extends BaseNode {
|
|
|
1070
1060
|
return node;
|
|
1071
1061
|
}
|
|
1072
1062
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
1063
|
/**
|
|
1077
1064
|
* 删除元素绑定属性
|
|
1078
1065
|
* @param name 元素绑定属性名称
|
|
@@ -1121,8 +1108,6 @@ export class ViewElement extends BaseNode {
|
|
|
1121
1108
|
return params;
|
|
1122
1109
|
}
|
|
1123
1110
|
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
1111
|
/**
|
|
1127
1112
|
* 删除元素绑定事件
|
|
1128
1113
|
* @param name 元素绑定事件名称
|
|
@@ -1171,8 +1156,6 @@ export class ViewElement extends BaseNode {
|
|
|
1171
1156
|
return params;
|
|
1172
1157
|
}
|
|
1173
1158
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
1159
|
/**
|
|
1177
1160
|
* 删除元素指令
|
|
1178
1161
|
* @param name 元素指令名称
|
|
@@ -1221,8 +1204,6 @@ export class ViewElement extends BaseNode {
|
|
|
1221
1204
|
return params;
|
|
1222
1205
|
}
|
|
1223
1206
|
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
1207
|
/**
|
|
1227
1208
|
* 删除元素绑定样式
|
|
1228
1209
|
* @param name 元素绑定样式名称
|
|
@@ -1271,8 +1252,6 @@ export class ViewElement extends BaseNode {
|
|
|
1271
1252
|
return params;
|
|
1272
1253
|
}
|
|
1273
1254
|
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
1255
|
/**
|
|
1277
1256
|
* 删除页面元素
|
|
1278
1257
|
* @param name 页面元素名称
|
|
@@ -1669,7 +1648,7 @@ export class ViewElement extends BaseNode {
|
|
|
1669
1648
|
expression: transAstNodeToNaslNode(Object.assign({}, argument)),
|
|
1670
1649
|
}));
|
|
1671
1650
|
}
|
|
1672
|
-
} catch (error) {}
|
|
1651
|
+
} catch (error) { }
|
|
1673
1652
|
return {
|
|
1674
1653
|
concept: 'ValidationRule',
|
|
1675
1654
|
name: '',
|
|
@@ -1766,7 +1745,7 @@ export class ViewElement extends BaseNode {
|
|
|
1766
1745
|
}
|
|
1767
1746
|
attr = new BindAttribute(source);
|
|
1768
1747
|
} catch (e) {
|
|
1769
|
-
const expression = <any>
|
|
1748
|
+
const expression = <any>this._parseExpression(oldAttr.value);
|
|
1770
1749
|
attr = new BindAttribute({
|
|
1771
1750
|
type: 'dynamic',
|
|
1772
1751
|
name: oldAttr.name,
|
|
@@ -1823,7 +1802,7 @@ export class ViewElement extends BaseNode {
|
|
|
1823
1802
|
if (directive.name === 'model') {
|
|
1824
1803
|
const valueAttr = astNode.attrs && astNode.attrs.find((attr) => attr.name === 'value');
|
|
1825
1804
|
if (!valueAttr) {
|
|
1826
|
-
const expression = <any>
|
|
1805
|
+
const expression = <any>this._parseExpression(directive.value);
|
|
1827
1806
|
element.addBindAttribute(new BindAttribute({
|
|
1828
1807
|
type: 'dynamic',
|
|
1829
1808
|
name: 'value',
|
|
@@ -1833,7 +1812,7 @@ export class ViewElement extends BaseNode {
|
|
|
1833
1812
|
}));
|
|
1834
1813
|
}
|
|
1835
1814
|
} else {
|
|
1836
|
-
const expression = <any>
|
|
1815
|
+
const expression = <any>this._parseExpression(directive.value);
|
|
1837
1816
|
element.addBindDirective(new BindDirective({
|
|
1838
1817
|
type: expression ? 'string' : 'dynamic',
|
|
1839
1818
|
name: directive.name,
|
|
@@ -1852,7 +1831,7 @@ export class ViewElement extends BaseNode {
|
|
|
1852
1831
|
name: 'if',
|
|
1853
1832
|
rawName: 'v-if',
|
|
1854
1833
|
value: '',
|
|
1855
|
-
expression: <any>
|
|
1834
|
+
expression: <any>this._parseExpression(astNode.if),
|
|
1856
1835
|
}));
|
|
1857
1836
|
}
|
|
1858
1837
|
} else if (astNode.type === 2) {
|
|
@@ -1863,7 +1842,7 @@ export class ViewElement extends BaseNode {
|
|
|
1863
1842
|
name: view.getViewElementUniqueName(`${baseName}1`),
|
|
1864
1843
|
});
|
|
1865
1844
|
const value = astNode.text?.match(/{{(.*?)}}/)[1].trim();
|
|
1866
|
-
const expression = <any>
|
|
1845
|
+
const expression = <any>this._parseExpression(value);
|
|
1867
1846
|
element.addBindAttribute(new BindAttribute({
|
|
1868
1847
|
type: 'dynamic',
|
|
1869
1848
|
name: 'text',
|
|
@@ -1925,7 +1904,7 @@ export class ViewElement extends BaseNode {
|
|
|
1925
1904
|
finalCode: false,
|
|
1926
1905
|
nodePathAttr: true,
|
|
1927
1906
|
attrFormat: (attr: BindAttribute | BindEvent | BindDirective, element?: ViewElement, defaultResult?: string) => {
|
|
1928
|
-
if (attr.concept === 'BindAttribute') {
|
|
1907
|
+
if (attr.concept === 'BindAttribute' && !['href', 'destination', 'externalDestination', 'download'].includes(attr.name)) {
|
|
1929
1908
|
const api = config.allNodesAPI[element.tag];
|
|
1930
1909
|
const apiOfAttr = api && api.attrs && api.attrs.find((_attr) => _attr.name === attr.name);
|
|
1931
1910
|
if (['u-form-item', 'u-validator', 'van-field'].includes(element.tag) && attr.name === 'rules') {
|
package/src/concepts/View__.ts
CHANGED
|
@@ -2153,6 +2153,10 @@ export class View extends BaseNode {
|
|
|
2153
2153
|
return replaceCode;
|
|
2154
2154
|
|
|
2155
2155
|
let fnCode = $1;
|
|
2156
|
+
if ($1.startsWith(`${variable}.`))
|
|
2157
|
+
fnCode = $1.replaceAll(`${variable}.`, `${replaceCode}.`);
|
|
2158
|
+
if ($1.startsWith(`${variable},`))
|
|
2159
|
+
fnCode = $1.replaceAll(`${variable},`, `${replaceCode},`);
|
|
2156
2160
|
if ($1.includes(`(${variable},`))
|
|
2157
2161
|
fnCode = $1.replaceAll(`(${variable},`, `(${replaceCode},`);
|
|
2158
2162
|
if ($1.includes(`(${variable}.`))
|