@lcap/nasl-language-server-core 3.9.0-beta.4 → 3.9.0-beta.40
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/module/graph.d.ts +16 -5
- package/out/module/graph.d.ts.map +1 -1
- package/out/module/graph.js +152 -23
- package/out/module/graph.js.map +1 -1
- package/out/module/index.d.ts +1 -0
- package/out/module/index.d.ts.map +1 -1
- package/out/module/index.js +1 -0
- package/out/module/index.js.map +1 -1
- package/out/module/module.d.ts +15 -6
- package/out/module/module.d.ts.map +1 -1
- package/out/module/module.js +53 -8
- package/out/module/module.js.map +1 -1
- package/out/module/types.d.ts +11 -0
- package/out/module/types.d.ts.map +1 -0
- package/out/module/types.js +6 -0
- package/out/module/types.js.map +1 -0
- package/out/symbol/traverse/concepts/connection/connection.d.ts +7 -0
- package/out/symbol/traverse/concepts/connection/connection.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/connection/connection.js +11 -0
- package/out/symbol/traverse/concepts/connection/connection.js.map +1 -0
- package/out/symbol/traverse/concepts/connection/connector-trigger.d.ts +7 -0
- package/out/symbol/traverse/concepts/connection/connector-trigger.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/connection/connector-trigger.js +26 -0
- package/out/symbol/traverse/concepts/connection/connector-trigger.js.map +1 -0
- package/out/symbol/traverse/concepts/connection/index.d.ts +3 -0
- package/out/symbol/traverse/concepts/connection/index.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/connection/index.js +19 -0
- package/out/symbol/traverse/concepts/connection/index.js.map +1 -0
- package/out/symbol/traverse/concepts/data-source/entity.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/data-source/entity.js +4 -0
- package/out/symbol/traverse/concepts/data-source/entity.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/bind-attr.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/bind-attr.js +11 -8
- package/out/symbol/traverse/concepts/frontend/bind-attr.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/business-components.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/business-components.js +5 -4
- package/out/symbol/traverse/concepts/frontend/business-components.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/frontend-type.d.ts +2 -0
- package/out/symbol/traverse/concepts/frontend/frontend-type.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/frontend-type.js +11 -6
- package/out/symbol/traverse/concepts/frontend/frontend-type.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/frontend.d.ts +2 -0
- package/out/symbol/traverse/concepts/frontend/frontend.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/frontend.js +7 -5
- package/out/symbol/traverse/concepts/frontend/frontend.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/index.d.ts +1 -3
- package/out/symbol/traverse/concepts/frontend/index.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/index.js +1 -3
- package/out/symbol/traverse/concepts/frontend/index.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/validation-rule.d.ts +7 -0
- package/out/symbol/traverse/concepts/frontend/validation-rule.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/frontend/validation-rule.js +17 -0
- package/out/symbol/traverse/concepts/frontend/validation-rule.js.map +1 -0
- package/out/symbol/traverse/concepts/frontend/view-element.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/view-element.js +2 -4
- package/out/symbol/traverse/concepts/frontend/view-element.js.map +1 -1
- package/out/symbol/traverse/concepts/frontend/view.d.ts +1 -1
- package/out/symbol/traverse/concepts/frontend/view.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/frontend/view.js +5 -1
- package/out/symbol/traverse/concepts/frontend/view.js.map +1 -1
- package/out/symbol/traverse/concepts/index.d.ts +1 -1
- package/out/symbol/traverse/concepts/index.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/anchor.d.ts +1 -1
- package/out/symbol/traverse/concepts/logic/expression/anchor.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/anchor.js +2 -2
- package/out/symbol/traverse/concepts/logic/expression/anchor.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/call-connector.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-connector.js +4 -1
- package/out/symbol/traverse/concepts/logic/expression/call-connector.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-interface.d.ts +3 -3
- package/out/symbol/traverse/concepts/logic/expression/call-interface.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-interface.js +4 -1
- package/out/symbol/traverse/concepts/logic/expression/call-interface.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-logic.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-logic.js +1 -0
- package/out/symbol/traverse/concepts/logic/expression/call-logic.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-query-component.d.ts +29 -1
- package/out/symbol/traverse/concepts/logic/expression/call-query-component.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/call-query-component.js +124 -3
- package/out/symbol/traverse/concepts/logic/expression/call-query-component.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/default-value.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/default-value.js +4 -0
- package/out/symbol/traverse/concepts/logic/expression/default-value.js.map +1 -1
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/destination.d.ts +1 -1
- package/out/symbol/traverse/concepts/logic/expression/destination.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/destination.js +1 -1
- package/out/symbol/traverse/concepts/logic/expression/destination.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/expression.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/expression.js +67 -3
- package/out/symbol/traverse/concepts/logic/expression/expression.js.map +1 -1
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/external-destination.d.ts +1 -1
- package/out/symbol/traverse/concepts/logic/expression/external-destination.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/{frontend → logic/expression}/external-destination.js +2 -2
- package/out/symbol/traverse/concepts/logic/expression/external-destination.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/function.d.ts +7 -0
- package/out/symbol/traverse/concepts/logic/expression/function.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/function.js +22 -0
- package/out/symbol/traverse/concepts/logic/expression/function.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/index.d.ts +8 -0
- package/out/symbol/traverse/concepts/logic/expression/index.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/index.js +8 -0
- package/out/symbol/traverse/concepts/logic/expression/index.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/{statement/match-statement.d.ts → expression/match.d.ts} +1 -1
- package/out/symbol/traverse/concepts/logic/expression/match.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/logic/{statement/match-statement.js → expression/match.js} +2 -2
- package/out/symbol/traverse/concepts/logic/expression/match.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/new-structure.d.ts +7 -0
- package/out/symbol/traverse/concepts/logic/expression/new-structure.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/logic/expression/new-structure.js +18 -0
- package/out/symbol/traverse/concepts/logic/expression/new-structure.js.map +1 -0
- package/out/symbol/traverse/concepts/logic/interface.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/interface.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/statement/index.d.ts +0 -1
- package/out/symbol/traverse/concepts/logic/statement/index.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/statement/index.js +0 -1
- package/out/symbol/traverse/concepts/logic/statement/index.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/statement/statement.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/statement/statement.js +0 -5
- package/out/symbol/traverse/concepts/logic/statement/statement.js.map +1 -1
- package/out/symbol/traverse/concepts/logic/variable.d.ts +2 -2
- package/out/symbol/traverse/concepts/logic/variable.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/variable.js +4 -0
- package/out/symbol/traverse/concepts/logic/variable.js.map +1 -1
- package/out/symbol/traverse/concepts/other/app.d.ts +3 -3
- package/out/symbol/traverse/concepts/other/app.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/other/app.js +41 -17
- package/out/symbol/traverse/concepts/other/app.js.map +1 -1
- package/out/symbol/traverse/concepts/other/connector.d.ts +15 -0
- package/out/symbol/traverse/concepts/other/connector.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/other/connector.js +62 -0
- package/out/symbol/traverse/concepts/other/connector.js.map +1 -0
- package/out/symbol/traverse/concepts/other/module.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/other/module.js +7 -0
- package/out/symbol/traverse/concepts/other/module.js.map +1 -1
- package/out/symbol/traverse/concepts/other/namespace.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/other/namespace.js +18 -0
- package/out/symbol/traverse/concepts/other/namespace.js.map +1 -1
- package/out/symbol/traverse/concepts/process/index.d.ts +3 -0
- package/out/symbol/traverse/concepts/process/index.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/process/index.js +19 -0
- package/out/symbol/traverse/concepts/process/index.js.map +1 -0
- package/out/symbol/traverse/concepts/process/process-element.d.ts +9 -0
- package/out/symbol/traverse/concepts/process/process-element.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/process/process-element.js +63 -0
- package/out/symbol/traverse/concepts/process/process-element.js.map +1 -0
- package/out/symbol/traverse/concepts/process/process.d.ts +9 -0
- package/out/symbol/traverse/concepts/process/process.d.ts.map +1 -0
- package/out/symbol/traverse/concepts/process/process.js +63 -0
- package/out/symbol/traverse/concepts/process/process.js.map +1 -0
- package/out/symbol/traverse/concepts/structure/structure.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/structure/structure.js.map +1 -1
- package/out/symbol/traverse/traverse.d.ts.map +1 -1
- package/out/symbol/traverse/traverse.js +12 -1
- package/out/symbol/traverse/traverse.js.map +1 -1
- package/out/utils/array.d.ts +7 -0
- package/out/utils/array.d.ts.map +1 -0
- package/out/utils/array.js +17 -0
- package/out/utils/array.js.map +1 -0
- package/package.json +7 -7
- package/out/symbol/traverse/concepts/frontend/anchor.d.ts.map +0 -1
- package/out/symbol/traverse/concepts/frontend/anchor.js.map +0 -1
- package/out/symbol/traverse/concepts/frontend/destination.d.ts.map +0 -1
- package/out/symbol/traverse/concepts/frontend/destination.js.map +0 -1
- package/out/symbol/traverse/concepts/frontend/external-destination.d.ts.map +0 -1
- package/out/symbol/traverse/concepts/frontend/external-destination.js.map +0 -1
- package/out/symbol/traverse/concepts/logic/statement/match-statement.d.ts.map +0 -1
- package/out/symbol/traverse/concepts/logic/statement/match-statement.js.map +0 -1
package/out/module/graph.d.ts
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { type SyntaxNode } from '@lcap/nasl-concepts';
|
|
1
|
+
import { Module as Type } from '@lcap/nasl-types';
|
|
2
|
+
import { type App, type SyntaxNode } from '@lcap/nasl-concepts';
|
|
3
3
|
import { SymbolGraph, Symbol } from '../symbol';
|
|
4
|
+
import type { TopologicalSortContext } from './types';
|
|
4
5
|
import { Module } from './module';
|
|
5
6
|
export declare class ModuleGraph implements Type.ModuleGraph {
|
|
6
|
-
static
|
|
7
|
+
static fromNaslData(data: object | App): ModuleGraph;
|
|
7
8
|
readonly createTime: number;
|
|
9
|
+
/** 符号表 */
|
|
8
10
|
private symbolGraph;
|
|
11
|
+
/** 节点模块映射表 */
|
|
9
12
|
private moduleMap;
|
|
13
|
+
/** 节点路径映射表 */
|
|
14
|
+
private moduleNodeMap;
|
|
10
15
|
constructor(symbolGraph: SymbolGraph);
|
|
11
|
-
|
|
16
|
+
/** 当前 Nasl 根节点 */
|
|
17
|
+
get app(): App;
|
|
12
18
|
private init;
|
|
19
|
+
/**
|
|
20
|
+
* 获取循环引用
|
|
21
|
+
*/
|
|
22
|
+
private getCircular;
|
|
13
23
|
getModuleByNode(node: SyntaxNode): Module;
|
|
24
|
+
getModuleByNodePath(nodePath: string): Module | undefined;
|
|
14
25
|
getModuleMapBySymbol(symbol: Symbol): void;
|
|
15
26
|
getModules(): Module[];
|
|
16
|
-
|
|
27
|
+
topologicalSort(context: TopologicalSortContext): Promise<Module[]>;
|
|
17
28
|
toData(): Type.ModuleGraphData;
|
|
18
29
|
}
|
|
19
30
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAyB,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,qBAAa,WAAY,YAAW,IAAI,CAAC,WAAW;IAClD,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAStC,QAAQ,CAAC,UAAU,SAAc;IAEjC,UAAU;IACV,OAAO,CAAC,WAAW,CAAc;IACjC,cAAc;IACd,OAAO,CAAC,SAAS,CAA+B;IAChD,cAAc;IACd,OAAO,CAAC,aAAa,CAA2B;gBAEpC,WAAW,EAAE,WAAW;IAKpC,kBAAkB;IAClB,IAAI,GAAG,QAEN;IAED,OAAO,CAAC,IAAI;IAmBZ;;OAEG;IACH,OAAO,CAAC,WAAW;IAsEnB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAezC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgB1C,UAAU;IAIJ,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0EzE,MAAM,IAAI,IAAI,CAAC,eAAe;CAc/B"}
|
package/out/module/graph.js
CHANGED
|
@@ -1,50 +1,114 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModuleGraph = void 0;
|
|
4
|
+
const nasl_types_1 = require("@lcap/nasl-types");
|
|
4
5
|
const nasl_concepts_1 = require("@lcap/nasl-concepts");
|
|
6
|
+
const asserts_1 = require("@lcap/nasl-concepts/asserts");
|
|
7
|
+
const service_1 = require("@lcap/nasl-concepts/service");
|
|
5
8
|
const symbol_1 = require("../symbol");
|
|
6
9
|
const module_1 = require("./module");
|
|
10
|
+
const array_1 = require("../utils/array");
|
|
7
11
|
class ModuleGraph {
|
|
8
|
-
static
|
|
9
|
-
const
|
|
10
|
-
|
|
12
|
+
static fromNaslData(data) {
|
|
13
|
+
const app = (0, asserts_1.isStrictApp)(data)
|
|
14
|
+
? data
|
|
15
|
+
: new ((0, nasl_concepts_1.getConceptConstructor)('App'))(data);
|
|
11
16
|
const symbolGraph = new symbol_1.SymbolGraph(app);
|
|
12
17
|
const moduleGraph = new ModuleGraph(symbolGraph);
|
|
13
18
|
return moduleGraph;
|
|
14
19
|
}
|
|
15
20
|
constructor(symbolGraph) {
|
|
16
21
|
this.createTime = Date.now();
|
|
22
|
+
/** 节点模块映射表 */
|
|
17
23
|
this.moduleMap = new Map;
|
|
24
|
+
/** 节点路径映射表 */
|
|
25
|
+
this.moduleNodeMap = new Map;
|
|
18
26
|
this.symbolGraph = symbolGraph;
|
|
19
27
|
this.init();
|
|
20
28
|
}
|
|
29
|
+
/** 当前 Nasl 根节点 */
|
|
21
30
|
get app() {
|
|
22
|
-
return this.symbolGraph
|
|
31
|
+
return this.symbolGraph?.app;
|
|
23
32
|
}
|
|
24
33
|
init() {
|
|
25
|
-
const { app, moduleMap } = this;
|
|
26
|
-
const moduleConcepts =
|
|
34
|
+
const { app, moduleMap, moduleNodeMap } = this;
|
|
35
|
+
const moduleConcepts = (0, service_1.getFileNodesByNasl)(app);
|
|
27
36
|
// 记录所有模块
|
|
28
|
-
moduleConcepts.forEach((
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// 当前节点是别的模块根节点,则剪枝
|
|
34
|
-
if (moduleMap.has(child)) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
if (child.changedTime && child.changedTime > mod.lastModifyTime) {
|
|
38
|
-
mod.lastModifyTime = child.changedTime;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}));
|
|
37
|
+
moduleConcepts.forEach((node) => {
|
|
38
|
+
const mod = new module_1.Module(node);
|
|
39
|
+
moduleMap.set(node, mod);
|
|
40
|
+
moduleNodeMap.set(node.nodePath, mod);
|
|
41
|
+
});
|
|
42
42
|
const symbols = this.symbolGraph.getSymbols()
|
|
43
43
|
.filter((item) => item.isUsed && item.declaration);
|
|
44
44
|
for (const symbol of symbols) {
|
|
45
45
|
this.getModuleMapBySymbol(symbol);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* 获取循环引用
|
|
50
|
+
*/
|
|
51
|
+
getCircular() {
|
|
52
|
+
/** 未访问模块 */
|
|
53
|
+
const allVisit = new Set(this.moduleMap.values());
|
|
54
|
+
/** 循环引用 */
|
|
55
|
+
const circular = [];
|
|
56
|
+
/** 合并集合 */
|
|
57
|
+
const mergeSet = (set1, set2) => {
|
|
58
|
+
for (const item of set2) {
|
|
59
|
+
set1.add(item);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/** 是否有交集 */
|
|
63
|
+
const checkSetIntersection = (set1, set2) => {
|
|
64
|
+
for (const modInSet1 of set1) {
|
|
65
|
+
if (set2.has(modInSet1)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
};
|
|
71
|
+
function dfs(mod, visitStack) {
|
|
72
|
+
// 循环引用
|
|
73
|
+
if (visitStack.has(mod)) {
|
|
74
|
+
const circularSet = circular.filter((set) => checkSetIntersection(visitStack, set));
|
|
75
|
+
if (circularSet.length === 0) {
|
|
76
|
+
circular.push(visitStack);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const currentCircular = new Set(visitStack);
|
|
80
|
+
circular.push(currentCircular);
|
|
81
|
+
circularSet.forEach((set) => {
|
|
82
|
+
mergeSet(currentCircular, set);
|
|
83
|
+
(0, array_1.removeItem)(circular, set);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// 非循环引用,且已经被访问过
|
|
88
|
+
else if (!allVisit.has(mod)) {
|
|
89
|
+
const circularSet = circular.find((set) => set.has(mod));
|
|
90
|
+
// 是循环引用节点,则合并路径
|
|
91
|
+
if (circularSet) {
|
|
92
|
+
mergeSet(circularSet, visitStack);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const deps = mod.getDependencyModules();
|
|
97
|
+
allVisit.delete(mod);
|
|
98
|
+
if (deps.length > 0) {
|
|
99
|
+
const newVisitStack = new Set(visitStack);
|
|
100
|
+
newVisitStack.add(mod);
|
|
101
|
+
for (const dep of deps) {
|
|
102
|
+
dfs(dep.dependency, newVisitStack);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
while (allVisit.size > 0) {
|
|
108
|
+
dfs(allVisit.values().next().value, new Set());
|
|
109
|
+
}
|
|
110
|
+
return circular;
|
|
111
|
+
}
|
|
48
112
|
getModuleByNode(node) {
|
|
49
113
|
let currentNode = node;
|
|
50
114
|
while (currentNode.parentNode) {
|
|
@@ -56,6 +120,9 @@ class ModuleGraph {
|
|
|
56
120
|
// 兜底返回 App 的模块
|
|
57
121
|
return this.moduleMap.get(node.app);
|
|
58
122
|
}
|
|
123
|
+
getModuleByNodePath(nodePath) {
|
|
124
|
+
return this.moduleNodeMap.get(nodePath);
|
|
125
|
+
}
|
|
59
126
|
getModuleMapBySymbol(symbol) {
|
|
60
127
|
if (!symbol.declaration) {
|
|
61
128
|
throw new Error(`未找到此符号的声明语句: ${symbol.name}`);
|
|
@@ -63,7 +130,7 @@ class ModuleGraph {
|
|
|
63
130
|
const current = this.getModuleByNode(symbol.declaration);
|
|
64
131
|
for (const refNode of symbol.references) {
|
|
65
132
|
const refModule = this.getModuleByNode(refNode);
|
|
66
|
-
if (refModule !== current) {
|
|
133
|
+
if (refModule && refModule !== current) {
|
|
67
134
|
refModule.addDependency(current);
|
|
68
135
|
}
|
|
69
136
|
}
|
|
@@ -71,8 +138,70 @@ class ModuleGraph {
|
|
|
71
138
|
getModules() {
|
|
72
139
|
return Array.from(this.moduleMap.values());
|
|
73
140
|
}
|
|
74
|
-
|
|
75
|
-
|
|
141
|
+
async topologicalSort(context) {
|
|
142
|
+
/**
|
|
143
|
+
* 模块状态表
|
|
144
|
+
*
|
|
145
|
+
* @description 在集合内表示未标注
|
|
146
|
+
*/
|
|
147
|
+
const waitAnnotationModules = new Set(this.moduleMap.values());
|
|
148
|
+
/**
|
|
149
|
+
* 模块是否更新签名
|
|
150
|
+
*/
|
|
151
|
+
const updatedModules = new Set();
|
|
152
|
+
/** 循环引用模块 */
|
|
153
|
+
const circularSets = this.getCircular();
|
|
154
|
+
/** 查询模块状态 */
|
|
155
|
+
const getModuleStatus = (mod) => {
|
|
156
|
+
if (waitAnnotationModules.has(mod)) {
|
|
157
|
+
return nasl_types_1.Module.ModuleStatusInTopologicalSort.NotVisit;
|
|
158
|
+
}
|
|
159
|
+
else if (updatedModules.has(mod)) {
|
|
160
|
+
return nasl_types_1.Module.ModuleStatusInTopologicalSort.VisitedWithModify;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
return nasl_types_1.Module.ModuleStatusInTopologicalSort.VisitedWithNoModify;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
/** 是否可以进行标注 */
|
|
167
|
+
const canAnnotation = (modules) => {
|
|
168
|
+
return (
|
|
169
|
+
// 没有依赖
|
|
170
|
+
modules.length === 0 ||
|
|
171
|
+
// 有依赖但是所有依赖已经标注完成
|
|
172
|
+
modules.every((mod) => !waitAnnotationModules.has(mod)));
|
|
173
|
+
};
|
|
174
|
+
// 循环,直到队列为空
|
|
175
|
+
while (waitAnnotationModules.size > 0) {
|
|
176
|
+
// 普通模块
|
|
177
|
+
const normalModules = Array.from(waitAnnotationModules.values()).filter((mod) => {
|
|
178
|
+
const dependencies = mod.getDependencyModules();
|
|
179
|
+
return (
|
|
180
|
+
// 非循环引用模块
|
|
181
|
+
circularSets.every((set) => !set.has(mod)) &&
|
|
182
|
+
// 允许标注
|
|
183
|
+
canAnnotation(dependencies.map((mod) => mod.dependency)));
|
|
184
|
+
});
|
|
185
|
+
// 循环引用集合
|
|
186
|
+
const circularSet = circularSets.filter((set) => {
|
|
187
|
+
/** 除开循环模块之外的所有依赖 */
|
|
188
|
+
const allDependencies = Array.from(set)
|
|
189
|
+
.map((mod) => (mod.getDependencyModules().map((item) => item.dependency)))
|
|
190
|
+
.reduce((ans, item) => ans.concat(item), [])
|
|
191
|
+
.filter((mod) => !set.has(mod));
|
|
192
|
+
return canAnnotation(allDependencies);
|
|
193
|
+
});
|
|
194
|
+
// 循环模块
|
|
195
|
+
const circularModules = circularSet.map((set) => Array.from(set)).reduce((ans, item) => ans.concat(item), []);
|
|
196
|
+
// 本轮待标注模块
|
|
197
|
+
const currentModules = normalModules.concat(circularModules);
|
|
198
|
+
// 标注模块
|
|
199
|
+
const changedModules = await context.getModulesSignature(currentModules, getModuleStatus);
|
|
200
|
+
circularSet.forEach((set) => (0, array_1.removeItem)(circularSets, set));
|
|
201
|
+
changedModules.forEach((mod) => updatedModules.add(mod));
|
|
202
|
+
currentModules.forEach((mod) => waitAnnotationModules.delete(mod));
|
|
203
|
+
}
|
|
204
|
+
return Array.from(updatedModules);
|
|
76
205
|
}
|
|
77
206
|
toData() {
|
|
78
207
|
const result = {
|
package/out/module/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":"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"}
|
package/out/module/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
package/out/module/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./dependency"), exports);
|
|
18
18
|
__exportStar(require("./graph"), exports);
|
|
19
19
|
__exportStar(require("./module"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/out/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0CAAwB;AACxB,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB"}
|
package/out/module/module.d.ts
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import type { Module as Type } from '@lcap/nasl-types';
|
|
2
|
-
import type { SyntaxNode } from '@lcap/nasl-concepts';
|
|
2
|
+
import type { SyntaxNode, App } from '@lcap/nasl-concepts';
|
|
3
3
|
import { ModuleDependency } from './dependency';
|
|
4
4
|
export declare class Module implements Type.Module {
|
|
5
|
-
|
|
5
|
+
static from(app: App, data: Type.ModuleData): Module;
|
|
6
6
|
private readonly imported;
|
|
7
7
|
private readonly dependencyModules;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
private _node;
|
|
9
|
+
private _count;
|
|
10
|
+
private _signature;
|
|
11
|
+
private _lastModifyTime;
|
|
12
|
+
private _lastSignatureTime;
|
|
13
|
+
constructor(node: SyntaxNode, options?: Partial<Type.ModuleData>);
|
|
12
14
|
get name(): string;
|
|
15
|
+
get count(): number;
|
|
16
|
+
get signature(): string;
|
|
17
|
+
get lastModifyTime(): number;
|
|
18
|
+
get isLastSignature(): boolean;
|
|
19
|
+
get node(): SyntaxNode;
|
|
13
20
|
toData(): Type.ModuleData;
|
|
21
|
+
updateNode(node: SyntaxNode): void;
|
|
22
|
+
updateSignature(signature: string): void;
|
|
14
23
|
addDependency(dependency: Module): void;
|
|
15
24
|
getImported(): Module[];
|
|
16
25
|
getDependencyModules(): ModuleDependency[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,qBAAa,MAAO,YAAW,IAAI,CAAC,MAAM;IACxC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM;IAMpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,kBAAkB,CAAM;gBAEpB,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAchE,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,WAER;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,eAAe,YAElB;IAED,IAAI,IAAI,eAEP;IAED,MAAM,IAAI,IAAI,CAAC,UAAU;IAUzB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYxC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOvC,WAAW,IAAI,MAAM,EAAE;IAIvB,oBAAoB,IAAI,gBAAgB,EAAE;CAG3C"}
|
package/out/module/module.js
CHANGED
|
@@ -1,29 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Module = void 0;
|
|
4
|
+
const asserts_1 = require("@lcap/nasl-concepts/asserts");
|
|
5
|
+
const service_1 = require("@lcap/nasl-concepts/service");
|
|
4
6
|
const dependency_1 = require("./dependency");
|
|
5
7
|
const lodash_1 = require("lodash");
|
|
6
8
|
class Module {
|
|
7
|
-
|
|
9
|
+
static from(app, data) {
|
|
10
|
+
const findNode = app.findNodeByPath(data.node);
|
|
11
|
+
(0, asserts_1.assertBaseNode)(findNode);
|
|
12
|
+
return new Module(findNode, data);
|
|
13
|
+
}
|
|
14
|
+
constructor(node, options) {
|
|
8
15
|
this.imported = [];
|
|
9
16
|
this.dependencyModules = [];
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
17
|
+
this._count = -1;
|
|
18
|
+
this._signature = '';
|
|
19
|
+
this._lastModifyTime = -1;
|
|
20
|
+
this._lastSignatureTime = -1;
|
|
21
|
+
this._node = node;
|
|
22
|
+
this._count = options?.count && options.count > 0 ? options.count : -1;
|
|
23
|
+
this._lastModifyTime = options?.lastModifyTime && options.lastModifyTime > -1 ? options.lastModifyTime : -1;
|
|
24
|
+
this._signature = options?.signature ?? '';
|
|
25
|
+
this._lastSignatureTime = this._signature.length > 0 ? this._lastModifyTime : -1;
|
|
26
|
+
if (this._count === -1 || this._lastModifyTime == -1) {
|
|
27
|
+
const data = (0, service_1.getModuleSubTreeData)(node);
|
|
28
|
+
this._count = data.count,
|
|
29
|
+
this._lastModifyTime = data.lastModifyTime;
|
|
30
|
+
}
|
|
14
31
|
}
|
|
15
32
|
get name() {
|
|
16
33
|
return this.node.nodePath;
|
|
17
34
|
}
|
|
35
|
+
get count() {
|
|
36
|
+
return this._count;
|
|
37
|
+
}
|
|
38
|
+
get signature() {
|
|
39
|
+
return this._signature;
|
|
40
|
+
}
|
|
41
|
+
get lastModifyTime() {
|
|
42
|
+
return this._lastModifyTime;
|
|
43
|
+
}
|
|
44
|
+
get isLastSignature() {
|
|
45
|
+
return this._lastSignatureTime !== -1 && this.lastModifyTime === this._lastSignatureTime;
|
|
46
|
+
}
|
|
47
|
+
get node() {
|
|
48
|
+
return this._node;
|
|
49
|
+
}
|
|
18
50
|
toData() {
|
|
19
51
|
return {
|
|
20
52
|
node: this.node.nodePath,
|
|
21
|
-
|
|
53
|
+
count: this.count,
|
|
54
|
+
dependency: (0, lodash_1.union)(this.dependencyModules.map((dep) => dep.dependency.name)),
|
|
22
55
|
lastModifyTime: this.lastModifyTime,
|
|
23
|
-
lastSignatureTime: this.lastSignatureTime,
|
|
24
56
|
signature: this.signature,
|
|
25
57
|
};
|
|
26
58
|
}
|
|
59
|
+
updateNode(node) {
|
|
60
|
+
this._node = node;
|
|
61
|
+
}
|
|
62
|
+
updateSignature(signature) {
|
|
63
|
+
this._signature = signature;
|
|
64
|
+
if (this.lastModifyTime === -1) {
|
|
65
|
+
this._lastSignatureTime = 0;
|
|
66
|
+
this._lastModifyTime = 0;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this._lastSignatureTime = this._lastModifyTime;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
27
72
|
addDependency(dependency) {
|
|
28
73
|
if (this.dependencyModules.every(({ dependency: item }) => dependency !== item)) {
|
|
29
74
|
this.dependencyModules.push(new dependency_1.ModuleDependency(this, dependency));
|
|
@@ -31,7 +76,7 @@ class Module {
|
|
|
31
76
|
}
|
|
32
77
|
}
|
|
33
78
|
getImported() {
|
|
34
|
-
return
|
|
79
|
+
return this.imported.slice();
|
|
35
80
|
}
|
|
36
81
|
getDependencyModules() {
|
|
37
82
|
return this.dependencyModules.slice();
|
package/out/module/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module/module.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAChD,mCAA+B;AAE/B,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Module } from './module';
|
|
2
|
+
import { Module as Type } from '@lcap/nasl-types';
|
|
3
|
+
export type ModuleData = Type.ModuleData;
|
|
4
|
+
export type ModuleGraphData = Type.ModuleGraphData;
|
|
5
|
+
export type ModuleStatusInTopologicalSort = Type.ModuleStatusInTopologicalSort;
|
|
6
|
+
export declare const ModuleStatusInTopologicalSort: typeof Type.ModuleStatusInTopologicalSort;
|
|
7
|
+
export type GetModuleStatus = (module: Module) => Type.ModuleStatusInTopologicalSort;
|
|
8
|
+
export interface TopologicalSortContext {
|
|
9
|
+
getModulesSignature(modules: Module[], getModuleStatus: GetModuleStatus): Promise<Module[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/module/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACzC,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACnD,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,6BAA6B,CAAC;AAC/E,eAAO,MAAM,6BAA6B,2CAAqC,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,6BAA6B,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleStatusInTopologicalSort = void 0;
|
|
4
|
+
const nasl_types_1 = require("@lcap/nasl-types");
|
|
5
|
+
exports.ModuleStatusInTopologicalSort = nasl_types_1.Module.ModuleStatusInTopologicalSort;
|
|
6
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/module/types.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAKrC,QAAA,6BAA6B,GAAG,mBAAI,CAAC,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAEnD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traverseConnection = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Connection 节点迭代
|
|
6
|
+
*/
|
|
7
|
+
const traverseConnection = (node, context) => {
|
|
8
|
+
// ..
|
|
9
|
+
};
|
|
10
|
+
exports.traverseConnection = traverseConnection;
|
|
11
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/connection.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACI,MAAM,kBAAkB,GAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACxE,KAAK;AACP,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type TriggerLauncherNode } from '@lcap/nasl-concepts';
|
|
2
|
+
import type { Traverse } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* TriggerLauncherNode 节点迭代
|
|
5
|
+
*/
|
|
6
|
+
export declare const traverseTriggerLauncher: Traverse<TriggerLauncherNode>;
|
|
7
|
+
//# sourceMappingURL=connector-trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/connector-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,mBAAmB,CAiBjE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traverseTriggerLauncher = void 0;
|
|
4
|
+
const nasl_concepts_1 = require("@lcap/nasl-concepts");
|
|
5
|
+
const logic_1 = require("../logic");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
/**
|
|
8
|
+
* TriggerLauncherNode 节点迭代
|
|
9
|
+
*/
|
|
10
|
+
const traverseTriggerLauncher = (node, context) => {
|
|
11
|
+
if (node.callBackLogic) {
|
|
12
|
+
(0, utils_1.addSymbolRef)(node.callBackLogicKey, node, context.namespace, '触发器启动器的绑定回调');
|
|
13
|
+
}
|
|
14
|
+
(0, utils_1.addSymbolRef)(`${node.calleeNamespace}.triggers.${node.calleeName}`, node, context.namespace, '触发器启动器的原始连接器触发器');
|
|
15
|
+
if (nasl_concepts_1.asserts.isConnectorTriggerLauncher(node)) {
|
|
16
|
+
// 连接器实例调用
|
|
17
|
+
(0, utils_1.addSymbolRef)(`app.connections.${node.calleeConnectionName}`, node, context.namespace, '触发器启动器的连接器实例');
|
|
18
|
+
if (nasl_concepts_1.asserts.isMsgTriggerLauncher(node)) {
|
|
19
|
+
for (const prop of node.properties ?? []) {
|
|
20
|
+
(0, logic_1.traverseExpression)(prop, context);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.traverseTriggerLauncher = traverseTriggerLauncher;
|
|
26
|
+
//# sourceMappingURL=connector-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-trigger.js","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/connector-trigger.ts"],"names":[],"mappings":";;;AAAA,uDAAwE;AAExE,oCAA8C;AAC9C,oCAAwC;AAExC;;GAEG;AACI,MAAM,uBAAuB,GAAkC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACtF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAA,oBAAY,EAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC9E,CAAC;IAED,IAAA,oBAAY,EAAC,GAAG,IAAI,CAAC,eAAe,aAAa,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAEhH,IAAI,uBAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,UAAU;QACV,IAAA,oBAAY,EAAC,mBAAmB,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEtG,IAAI,uBAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;gBACzC,IAAA,0BAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./connector-trigger"), exports);
|
|
18
|
+
__exportStar(require("./connection"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/connection/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,+CAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/data-source/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/data-source/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,cAAc,CAkB3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAY3C,CAAC"}
|
|
@@ -18,6 +18,10 @@ const traverseEntityProperty = (node, context) => {
|
|
|
18
18
|
if (node.defaultValue) {
|
|
19
19
|
(0, logic_1.traverseExpression)(node.defaultValue, context);
|
|
20
20
|
}
|
|
21
|
+
// 节点关联属性
|
|
22
|
+
if (node.relationEntity && node.relationNamespace) {
|
|
23
|
+
(0, utils_1.addSymbolRef)(`${node.relationNamespace}.${node.relationEntity}`, node, context.namespace, '实体属性关联属性');
|
|
24
|
+
}
|
|
21
25
|
};
|
|
22
26
|
exports.traverseEntityProperty = traverseEntityProperty;
|
|
23
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/data-source/entity.ts"],"names":[],"mappings":";;;AAEA,oCAAqE;AACrE,oCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../../../src/symbol/traverse/concepts/data-source/entity.ts"],"names":[],"mappings":";;;AAEA,oCAAqE;AACrE,oCAA8C;AAC9C,oCAAyD;AAEzD;;GAEG;AACI,MAAM,sBAAsB,GAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAChF,SAAS;IACT,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAE7D,SAAS;IACT,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,IAAA,8BAAsB,EAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,UAAU;IACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,IAAA,0BAAkB,EAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,SAAS;IACT,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClD,IAAA,oBAAY,EAAC,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACxG,CAAC;AACH,CAAC,CAAC;AAlBW,QAAA,sBAAsB,0BAkBjC;AAEF;;GAEG;AACI,MAAM,cAAc,GAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAChE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5B,SAAS;IACT,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAA,8BAAsB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;IACP,IAAA,uBAAe,EAAC,yBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO,CAAC,YAAY,EAAE,CAAC;AACzB,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
|