@lcap/nasl 4.1.0-beta.4 → 4.1.0-beta.5
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/generator/release-body/body.d.ts +1 -1
- package/out/generator/release-body/body.d.ts.map +1 -1
- package/out/generator/release-body/body.js +387 -385
- package/out/generator/release-body/body.js.map +1 -1
- package/out/generator/release-body/data.d.ts.map +1 -1
- package/out/generator/release-body/data.js +51 -34
- package/out/generator/release-body/data.js.map +1 -1
- package/out/generator/release-body/index.d.ts +1 -0
- package/out/generator/release-body/index.d.ts.map +1 -1
- package/out/generator/release-body/index.js +1 -0
- package/out/generator/release-body/index.js.map +1 -1
- package/out/generator/release-body/memory-optimization.d.ts +47 -0
- package/out/generator/release-body/memory-optimization.d.ts.map +1 -0
- package/out/generator/release-body/memory-optimization.js +266 -0
- package/out/generator/release-body/memory-optimization.js.map +1 -0
- package/out/generator/release-body/utils.d.ts +11 -4
- package/out/generator/release-body/utils.d.ts.map +1 -1
- package/out/generator/release-body/utils.js +52 -20
- package/out/generator/release-body/utils.js.map +1 -1
- package/out/server/extendBaseNode.js +1 -1
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/findReference.d.ts.map +1 -1
- package/out/server/findReference.js +5 -1
- package/out/server/findReference.js.map +1 -1
- package/out/server/index.d.ts +0 -1
- package/out/server/index.d.ts.map +1 -1
- package/out/server/index.js +1 -2
- package/out/server/index.js.map +1 -1
- package/out/server/naslServer.d.ts +4 -11
- package/out/server/naslServer.d.ts.map +1 -1
- package/out/server/naslServer.js +21 -56
- package/out/server/naslServer.js.map +1 -1
- package/out/templator/utils.d.ts.map +1 -1
- package/out/templator/utils.js +1 -0
- package/out/templator/utils.js.map +1 -1
- package/package.json +11 -12
- package/sandbox/stdlib/nasl.util.ts +18 -4
package/out/server/naslServer.js
CHANGED
|
@@ -49,6 +49,7 @@ const concepts_1 = require("../concepts");
|
|
|
49
49
|
const asserts_1 = require("@lcap/nasl-concepts/asserts");
|
|
50
50
|
const service_1 = require("@lcap/nasl-concepts/service");
|
|
51
51
|
const utils = __importStar(require("../utils"));
|
|
52
|
+
const memory_optimization_1 = require("../generator/release-body/memory-optimization");
|
|
52
53
|
const createUiTs_1 = __importStar(require("./createUiTs"));
|
|
53
54
|
const translator_1 = require("../translator");
|
|
54
55
|
const translator_2 = require("./translator");
|
|
@@ -1614,7 +1615,9 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
1614
1615
|
// // this.logger.info(refsList, 'refsList');
|
|
1615
1616
|
// return refsList;
|
|
1616
1617
|
// }
|
|
1617
|
-
|
|
1618
|
+
/**
|
|
1619
|
+
* @warning 主要是 rename 等内部调用的查找引用,不是用户点击的 "查找引用"
|
|
1620
|
+
*/
|
|
1618
1621
|
async _isHaveRef(__node) {
|
|
1619
1622
|
const wrapRefs = (refs) => {
|
|
1620
1623
|
const result = [];
|
|
@@ -1643,13 +1646,7 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
1643
1646
|
}
|
|
1644
1647
|
const { parentNode } = nd;
|
|
1645
1648
|
let result = wrapRefs(this.semEnv.refMgr.getReferences(this.semEnv, nd));
|
|
1646
|
-
if (nd.concept === '
|
|
1647
|
-
// 加上所有实体逻辑调用的引用(实体逻辑可看做无定义,但要修改调用处的 namespace:实体名是 namespace 的一部分)
|
|
1648
|
-
for (const l of nd.logics) {
|
|
1649
|
-
result.push(...wrapRefs(this.semEnv.refMgr.getReferences(this.semEnv, l)));
|
|
1650
|
-
}
|
|
1651
|
-
}
|
|
1652
|
-
else if (nd.concept === 'ViewElement') {
|
|
1649
|
+
if (nd.concept === 'ViewElement') {
|
|
1653
1650
|
const refMemAddrs = this.semEnv.refMgr.getViewElementRefs(this.semEnv, nd);
|
|
1654
1651
|
result.push(...wrapRefs(refMemAddrs));
|
|
1655
1652
|
}
|
|
@@ -2621,32 +2618,12 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
2621
2618
|
// 不用 TS LS 的最新类型,用现有类型直接写入 NASL json
|
|
2622
2619
|
async fastGetNaslAnnotatedJSON(naslNode) {
|
|
2623
2620
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
2624
|
-
const isApp = concepts_1.asserts.isApp(naslNode);
|
|
2625
2621
|
if (this.changeStackList?.length) {
|
|
2626
2622
|
throw new Error(`当前还有${this.changeStackList.length}个文件还在执行更新操作`);
|
|
2627
2623
|
}
|
|
2628
2624
|
this.logger.time('app to AnnotatedJSON');
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
// 不知道为什么实体的(国际化、流程)枚举的默认值的 expr 和 expr.object 和 expr.property 都没标类型,但是逻辑变量的默认值就标了
|
|
2632
|
-
// 不标类型,服务端就认为是用户自定义枚举,然后 import 一个奇怪的文件,就挂了
|
|
2633
|
-
// Enum1.prop,怎么想 prop 也不应该标 Enum1 类型啊,现在就得是 prop、Enum1、Enum1.prop 都标成 Enum1 类型……
|
|
2634
|
-
const fixEnumDefValTypesInEntity = (app) => {
|
|
2635
|
-
app.dataSources.forEach(ds => ds.entities.forEach(ett => {
|
|
2636
|
-
ett.properties.forEach(prop => {
|
|
2637
|
-
// @ts-ignore
|
|
2638
|
-
if (isSysEnum(prop.defaultValue?.expression?.object?.namespace)) {
|
|
2639
|
-
const ty = prop.typeAnnotation;
|
|
2640
|
-
const memExp = prop.defaultValue.expression;
|
|
2641
|
-
memExp.__TypeAnnotation = ty;
|
|
2642
|
-
memExp.object.__TypeAnnotation = ty;
|
|
2643
|
-
memExp.property.__TypeAnnotation = ty;
|
|
2644
|
-
}
|
|
2645
|
-
});
|
|
2646
|
-
}));
|
|
2647
|
-
};
|
|
2648
|
-
fixEnumDefValTypesInEntity(naslNode);
|
|
2649
|
-
}
|
|
2625
|
+
// 重置优化统计信息
|
|
2626
|
+
(0, memory_optimization_1.resetOptimizationStats)();
|
|
2650
2627
|
const timeZoneArgumentIndexMap = new Map([
|
|
2651
2628
|
['ToString', 1],
|
|
2652
2629
|
['CurrDateTime', 0],
|
|
@@ -2695,8 +2672,8 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
2695
2672
|
// Do not write redundant type annotation for TypeAnnotation concept.
|
|
2696
2673
|
return;
|
|
2697
2674
|
}
|
|
2698
|
-
//
|
|
2699
|
-
|
|
2675
|
+
// 集成内存优化:在标注过程中直接优化JSON,减少内存使用和处理时间
|
|
2676
|
+
(0, memory_optimization_1.optimizeJsonDuringAnnotation)(newJson);
|
|
2700
2677
|
let tyAnn = tyAnnToJSON(this.semEnv.getType(oldNd));
|
|
2701
2678
|
if ((oldNd.concept === 'Variable' || oldNd.concept === 'Return' || oldNd.concept === 'Param')
|
|
2702
2679
|
&& !oldNd.typeAnnotation
|
|
@@ -2818,10 +2795,15 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
2818
2795
|
};
|
|
2819
2796
|
const json = NaslServer_1.toRaw(naslNode)._toJSON(doWork, preWork, postWork);
|
|
2820
2797
|
this.logger.timeEnd('app to AnnotatedJSON');
|
|
2821
|
-
//
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2798
|
+
// 输出内存优化统计信息
|
|
2799
|
+
const stats = (0, memory_optimization_1.getOptimizationStats)();
|
|
2800
|
+
console.log('内存优化统计', {
|
|
2801
|
+
节点处理数量: stats.totalCalls,
|
|
2802
|
+
删除的属性: stats.propertiesRemoved,
|
|
2803
|
+
删除的空数组: stats.emptyArraysRemoved,
|
|
2804
|
+
删除的undefined值: stats.undefinedValuesRemoved,
|
|
2805
|
+
总优化项: stats.propertiesRemoved + stats.emptyArraysRemoved + stats.undefinedValuesRemoved
|
|
2806
|
+
});
|
|
2825
2807
|
return json;
|
|
2826
2808
|
}
|
|
2827
2809
|
/**
|
|
@@ -3449,26 +3431,6 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
3449
3431
|
}
|
|
3450
3432
|
}
|
|
3451
3433
|
}
|
|
3452
|
-
/**
|
|
3453
|
-
* 获取节点引用
|
|
3454
|
-
*
|
|
3455
|
-
* @param {SyntaxNode} node 查询的节点
|
|
3456
|
-
* @param {SyntaxNode} [fileNode] 节点所属的文件节点,外部输入可以省去计算
|
|
3457
|
-
*/
|
|
3458
|
-
getReferences(node, fileNode = (0, service_1.getFileNode)(node)) {
|
|
3459
|
-
const refList = this.semEnv.refMgr.getReferences(this.semEnv, node)
|
|
3460
|
-
.map((item) => ({ node: item, fileNode: (0, service_1.getFileNode)(item) })) // 我搞不定了,再说吧……
|
|
3461
|
-
.filter((item) => item.fileNode && !item.fileNode.nodePath.includes('[-1]'));
|
|
3462
|
-
const fileNodeRefList = this.semEnv.refMgr.getReferences(this.semEnv, fileNode)
|
|
3463
|
-
.map((item) => ({ node: item, fileNode: (0, service_1.getFileNode)(item) })) // 我搞不定了,再说吧……
|
|
3464
|
-
.filter((item) => item.fileNode && !item.fileNode.nodePath.includes('[-1]'));
|
|
3465
|
-
// 引用要包含自身
|
|
3466
|
-
refList.push({ node: node, fileNode });
|
|
3467
|
-
return [
|
|
3468
|
-
...refList,
|
|
3469
|
-
...fileNodeRefList,
|
|
3470
|
-
];
|
|
3471
|
-
}
|
|
3472
3434
|
/**
|
|
3473
3435
|
* 获取节点引用,不包括自己
|
|
3474
3436
|
*
|
|
@@ -3622,12 +3584,15 @@ let NaslServer = NaslServer_1 = class NaslServer {
|
|
|
3622
3584
|
uniqueViewLikes.forEach((viewLike) => {
|
|
3623
3585
|
// 删除时,这些节点可能已经不在了,先用个 ?.
|
|
3624
3586
|
viewLike?.getElementLogicRoot();
|
|
3587
|
+
viewLike.concept === 'View' && viewLike?.getSubLogics();
|
|
3625
3588
|
});
|
|
3626
3589
|
uniqueLogicLikes.forEach((ctxLogic) => {
|
|
3627
3590
|
ctxLogic?.getSubLogics();
|
|
3628
3591
|
});
|
|
3629
3592
|
uniqueProcessV2s.forEach((ctxProcessV2) => {
|
|
3630
3593
|
ctxProcessV2?.getVariablesRoot();
|
|
3594
|
+
ctxProcessV2?.getElementLogicRoot();
|
|
3595
|
+
ctxProcessV2?.getSubLogics();
|
|
3631
3596
|
});
|
|
3632
3597
|
}
|
|
3633
3598
|
};
|