@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.
Files changed (167) hide show
  1. package/out/module/graph.d.ts +16 -5
  2. package/out/module/graph.d.ts.map +1 -1
  3. package/out/module/graph.js +152 -23
  4. package/out/module/graph.js.map +1 -1
  5. package/out/module/index.d.ts +1 -0
  6. package/out/module/index.d.ts.map +1 -1
  7. package/out/module/index.js +1 -0
  8. package/out/module/index.js.map +1 -1
  9. package/out/module/module.d.ts +15 -6
  10. package/out/module/module.d.ts.map +1 -1
  11. package/out/module/module.js +53 -8
  12. package/out/module/module.js.map +1 -1
  13. package/out/module/types.d.ts +11 -0
  14. package/out/module/types.d.ts.map +1 -0
  15. package/out/module/types.js +6 -0
  16. package/out/module/types.js.map +1 -0
  17. package/out/symbol/traverse/concepts/connection/connection.d.ts +7 -0
  18. package/out/symbol/traverse/concepts/connection/connection.d.ts.map +1 -0
  19. package/out/symbol/traverse/concepts/connection/connection.js +11 -0
  20. package/out/symbol/traverse/concepts/connection/connection.js.map +1 -0
  21. package/out/symbol/traverse/concepts/connection/connector-trigger.d.ts +7 -0
  22. package/out/symbol/traverse/concepts/connection/connector-trigger.d.ts.map +1 -0
  23. package/out/symbol/traverse/concepts/connection/connector-trigger.js +26 -0
  24. package/out/symbol/traverse/concepts/connection/connector-trigger.js.map +1 -0
  25. package/out/symbol/traverse/concepts/connection/index.d.ts +3 -0
  26. package/out/symbol/traverse/concepts/connection/index.d.ts.map +1 -0
  27. package/out/symbol/traverse/concepts/connection/index.js +19 -0
  28. package/out/symbol/traverse/concepts/connection/index.js.map +1 -0
  29. package/out/symbol/traverse/concepts/data-source/entity.d.ts.map +1 -1
  30. package/out/symbol/traverse/concepts/data-source/entity.js +4 -0
  31. package/out/symbol/traverse/concepts/data-source/entity.js.map +1 -1
  32. package/out/symbol/traverse/concepts/frontend/bind-attr.d.ts.map +1 -1
  33. package/out/symbol/traverse/concepts/frontend/bind-attr.js +11 -8
  34. package/out/symbol/traverse/concepts/frontend/bind-attr.js.map +1 -1
  35. package/out/symbol/traverse/concepts/frontend/business-components.d.ts.map +1 -1
  36. package/out/symbol/traverse/concepts/frontend/business-components.js +5 -4
  37. package/out/symbol/traverse/concepts/frontend/business-components.js.map +1 -1
  38. package/out/symbol/traverse/concepts/frontend/frontend-type.d.ts +2 -0
  39. package/out/symbol/traverse/concepts/frontend/frontend-type.d.ts.map +1 -1
  40. package/out/symbol/traverse/concepts/frontend/frontend-type.js +11 -6
  41. package/out/symbol/traverse/concepts/frontend/frontend-type.js.map +1 -1
  42. package/out/symbol/traverse/concepts/frontend/frontend.d.ts +2 -0
  43. package/out/symbol/traverse/concepts/frontend/frontend.d.ts.map +1 -1
  44. package/out/symbol/traverse/concepts/frontend/frontend.js +7 -5
  45. package/out/symbol/traverse/concepts/frontend/frontend.js.map +1 -1
  46. package/out/symbol/traverse/concepts/frontend/index.d.ts +1 -3
  47. package/out/symbol/traverse/concepts/frontend/index.d.ts.map +1 -1
  48. package/out/symbol/traverse/concepts/frontend/index.js +1 -3
  49. package/out/symbol/traverse/concepts/frontend/index.js.map +1 -1
  50. package/out/symbol/traverse/concepts/frontend/validation-rule.d.ts +7 -0
  51. package/out/symbol/traverse/concepts/frontend/validation-rule.d.ts.map +1 -0
  52. package/out/symbol/traverse/concepts/frontend/validation-rule.js +17 -0
  53. package/out/symbol/traverse/concepts/frontend/validation-rule.js.map +1 -0
  54. package/out/symbol/traverse/concepts/frontend/view-element.d.ts.map +1 -1
  55. package/out/symbol/traverse/concepts/frontend/view-element.js +2 -4
  56. package/out/symbol/traverse/concepts/frontend/view-element.js.map +1 -1
  57. package/out/symbol/traverse/concepts/frontend/view.d.ts +1 -1
  58. package/out/symbol/traverse/concepts/frontend/view.d.ts.map +1 -1
  59. package/out/symbol/traverse/concepts/frontend/view.js +5 -1
  60. package/out/symbol/traverse/concepts/frontend/view.js.map +1 -1
  61. package/out/symbol/traverse/concepts/index.d.ts +1 -1
  62. package/out/symbol/traverse/concepts/index.d.ts.map +1 -1
  63. package/out/symbol/traverse/concepts/{frontend → logic/expression}/anchor.d.ts +1 -1
  64. package/out/symbol/traverse/concepts/logic/expression/anchor.d.ts.map +1 -0
  65. package/out/symbol/traverse/concepts/{frontend → logic/expression}/anchor.js +2 -2
  66. package/out/symbol/traverse/concepts/logic/expression/anchor.js.map +1 -0
  67. package/out/symbol/traverse/concepts/logic/expression/call-connector.d.ts.map +1 -1
  68. package/out/symbol/traverse/concepts/logic/expression/call-connector.js +4 -1
  69. package/out/symbol/traverse/concepts/logic/expression/call-connector.js.map +1 -1
  70. package/out/symbol/traverse/concepts/logic/expression/call-interface.d.ts +3 -3
  71. package/out/symbol/traverse/concepts/logic/expression/call-interface.d.ts.map +1 -1
  72. package/out/symbol/traverse/concepts/logic/expression/call-interface.js +4 -1
  73. package/out/symbol/traverse/concepts/logic/expression/call-interface.js.map +1 -1
  74. package/out/symbol/traverse/concepts/logic/expression/call-logic.d.ts.map +1 -1
  75. package/out/symbol/traverse/concepts/logic/expression/call-logic.js +1 -0
  76. package/out/symbol/traverse/concepts/logic/expression/call-logic.js.map +1 -1
  77. package/out/symbol/traverse/concepts/logic/expression/call-query-component.d.ts +29 -1
  78. package/out/symbol/traverse/concepts/logic/expression/call-query-component.d.ts.map +1 -1
  79. package/out/symbol/traverse/concepts/logic/expression/call-query-component.js +124 -3
  80. package/out/symbol/traverse/concepts/logic/expression/call-query-component.js.map +1 -1
  81. package/out/symbol/traverse/concepts/logic/expression/default-value.d.ts.map +1 -1
  82. package/out/symbol/traverse/concepts/logic/expression/default-value.js +4 -0
  83. package/out/symbol/traverse/concepts/logic/expression/default-value.js.map +1 -1
  84. package/out/symbol/traverse/concepts/{frontend → logic/expression}/destination.d.ts +1 -1
  85. package/out/symbol/traverse/concepts/logic/expression/destination.d.ts.map +1 -0
  86. package/out/symbol/traverse/concepts/{frontend → logic/expression}/destination.js +1 -1
  87. package/out/symbol/traverse/concepts/logic/expression/destination.js.map +1 -0
  88. package/out/symbol/traverse/concepts/logic/expression/expression.d.ts.map +1 -1
  89. package/out/symbol/traverse/concepts/logic/expression/expression.js +67 -3
  90. package/out/symbol/traverse/concepts/logic/expression/expression.js.map +1 -1
  91. package/out/symbol/traverse/concepts/{frontend → logic/expression}/external-destination.d.ts +1 -1
  92. package/out/symbol/traverse/concepts/logic/expression/external-destination.d.ts.map +1 -0
  93. package/out/symbol/traverse/concepts/{frontend → logic/expression}/external-destination.js +2 -2
  94. package/out/symbol/traverse/concepts/logic/expression/external-destination.js.map +1 -0
  95. package/out/symbol/traverse/concepts/logic/expression/function.d.ts +7 -0
  96. package/out/symbol/traverse/concepts/logic/expression/function.d.ts.map +1 -0
  97. package/out/symbol/traverse/concepts/logic/expression/function.js +22 -0
  98. package/out/symbol/traverse/concepts/logic/expression/function.js.map +1 -0
  99. package/out/symbol/traverse/concepts/logic/expression/index.d.ts +8 -0
  100. package/out/symbol/traverse/concepts/logic/expression/index.d.ts.map +1 -1
  101. package/out/symbol/traverse/concepts/logic/expression/index.js +8 -0
  102. package/out/symbol/traverse/concepts/logic/expression/index.js.map +1 -1
  103. package/out/symbol/traverse/concepts/logic/{statement/match-statement.d.ts → expression/match.d.ts} +1 -1
  104. package/out/symbol/traverse/concepts/logic/expression/match.d.ts.map +1 -0
  105. package/out/symbol/traverse/concepts/logic/{statement/match-statement.js → expression/match.js} +2 -2
  106. package/out/symbol/traverse/concepts/logic/expression/match.js.map +1 -0
  107. package/out/symbol/traverse/concepts/logic/expression/new-structure.d.ts +7 -0
  108. package/out/symbol/traverse/concepts/logic/expression/new-structure.d.ts.map +1 -0
  109. package/out/symbol/traverse/concepts/logic/expression/new-structure.js +18 -0
  110. package/out/symbol/traverse/concepts/logic/expression/new-structure.js.map +1 -0
  111. package/out/symbol/traverse/concepts/logic/interface.d.ts.map +1 -1
  112. package/out/symbol/traverse/concepts/logic/interface.js.map +1 -1
  113. package/out/symbol/traverse/concepts/logic/statement/index.d.ts +0 -1
  114. package/out/symbol/traverse/concepts/logic/statement/index.d.ts.map +1 -1
  115. package/out/symbol/traverse/concepts/logic/statement/index.js +0 -1
  116. package/out/symbol/traverse/concepts/logic/statement/index.js.map +1 -1
  117. package/out/symbol/traverse/concepts/logic/statement/statement.d.ts.map +1 -1
  118. package/out/symbol/traverse/concepts/logic/statement/statement.js +0 -5
  119. package/out/symbol/traverse/concepts/logic/statement/statement.js.map +1 -1
  120. package/out/symbol/traverse/concepts/logic/variable.d.ts +2 -2
  121. package/out/symbol/traverse/concepts/logic/variable.d.ts.map +1 -1
  122. package/out/symbol/traverse/concepts/logic/variable.js +4 -0
  123. package/out/symbol/traverse/concepts/logic/variable.js.map +1 -1
  124. package/out/symbol/traverse/concepts/other/app.d.ts +3 -3
  125. package/out/symbol/traverse/concepts/other/app.d.ts.map +1 -1
  126. package/out/symbol/traverse/concepts/other/app.js +41 -17
  127. package/out/symbol/traverse/concepts/other/app.js.map +1 -1
  128. package/out/symbol/traverse/concepts/other/connector.d.ts +15 -0
  129. package/out/symbol/traverse/concepts/other/connector.d.ts.map +1 -0
  130. package/out/symbol/traverse/concepts/other/connector.js +62 -0
  131. package/out/symbol/traverse/concepts/other/connector.js.map +1 -0
  132. package/out/symbol/traverse/concepts/other/module.d.ts.map +1 -1
  133. package/out/symbol/traverse/concepts/other/module.js +7 -0
  134. package/out/symbol/traverse/concepts/other/module.js.map +1 -1
  135. package/out/symbol/traverse/concepts/other/namespace.d.ts.map +1 -1
  136. package/out/symbol/traverse/concepts/other/namespace.js +18 -0
  137. package/out/symbol/traverse/concepts/other/namespace.js.map +1 -1
  138. package/out/symbol/traverse/concepts/process/index.d.ts +3 -0
  139. package/out/symbol/traverse/concepts/process/index.d.ts.map +1 -0
  140. package/out/symbol/traverse/concepts/process/index.js +19 -0
  141. package/out/symbol/traverse/concepts/process/index.js.map +1 -0
  142. package/out/symbol/traverse/concepts/process/process-element.d.ts +9 -0
  143. package/out/symbol/traverse/concepts/process/process-element.d.ts.map +1 -0
  144. package/out/symbol/traverse/concepts/process/process-element.js +63 -0
  145. package/out/symbol/traverse/concepts/process/process-element.js.map +1 -0
  146. package/out/symbol/traverse/concepts/process/process.d.ts +9 -0
  147. package/out/symbol/traverse/concepts/process/process.d.ts.map +1 -0
  148. package/out/symbol/traverse/concepts/process/process.js +63 -0
  149. package/out/symbol/traverse/concepts/process/process.js.map +1 -0
  150. package/out/symbol/traverse/concepts/structure/structure.d.ts.map +1 -1
  151. package/out/symbol/traverse/concepts/structure/structure.js.map +1 -1
  152. package/out/symbol/traverse/traverse.d.ts.map +1 -1
  153. package/out/symbol/traverse/traverse.js +12 -1
  154. package/out/symbol/traverse/traverse.js.map +1 -1
  155. package/out/utils/array.d.ts +7 -0
  156. package/out/utils/array.d.ts.map +1 -0
  157. package/out/utils/array.js +17 -0
  158. package/out/utils/array.js.map +1 -0
  159. package/package.json +7 -7
  160. package/out/symbol/traverse/concepts/frontend/anchor.d.ts.map +0 -1
  161. package/out/symbol/traverse/concepts/frontend/anchor.js.map +0 -1
  162. package/out/symbol/traverse/concepts/frontend/destination.d.ts.map +0 -1
  163. package/out/symbol/traverse/concepts/frontend/destination.js.map +0 -1
  164. package/out/symbol/traverse/concepts/frontend/external-destination.d.ts.map +0 -1
  165. package/out/symbol/traverse/concepts/frontend/external-destination.js.map +0 -1
  166. package/out/symbol/traverse/concepts/logic/statement/match-statement.d.ts.map +0 -1
  167. package/out/symbol/traverse/concepts/logic/statement/match-statement.js.map +0 -1
@@ -1,19 +1,30 @@
1
- import type { Module as Type } from '@lcap/nasl-types';
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 from(data: object): ModuleGraph;
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
- private get app();
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
- diffByModuleGraph(old: ModuleGraph): Module[];
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,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAY,KAAK,UAAU,EAAkC,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,YAAW,IAAI,CAAC,WAAW;IAClD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;IAQxB,QAAQ,CAAC,UAAU,SAAc;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAA+B;gBAEpC,WAAW,EAAE,WAAW;IAKpC,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,CAAC,IAAI;IA6BZ,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAezC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgB1C,UAAU;IAIV,iBAAiB,CAAC,GAAG,EAAE,WAAW;IAIlC,MAAM,IAAI,IAAI,CAAC,eAAe;CAc/B"}
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"}
@@ -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 from(data) {
9
- const App = (0, nasl_concepts_1.getConceptConstructor)('App');
10
- const app = new App(data);
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.app;
31
+ return this.symbolGraph?.app;
23
32
  }
24
33
  init() {
25
- const { app, moduleMap } = this;
26
- const moduleConcepts = nasl_concepts_1.service.getFileNodesByNasl(app);
34
+ const { app, moduleMap, moduleNodeMap } = this;
35
+ const moduleConcepts = (0, service_1.getFileNodesByNasl)(app);
27
36
  // 记录所有模块
28
- moduleConcepts.forEach((mod) => moduleMap.set(mod, new module_1.Module(mod)));
29
- // 计算所有模块最后修改时间
30
- moduleConcepts.forEach((modNode => {
31
- const mod = moduleMap.get(modNode);
32
- modNode.traverseStrictChildrenWithPruning((child) => {
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
- diffByModuleGraph(old) {
75
- return [];
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 = {
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAClD,uDAAuF;AACvF,yDAA0D;AAC1D,yDAAiE;AACjE,sCAAgD;AAEhD,qCAAkC;AAClC,0CAA4C;AAE5C,MAAa,WAAW;IACtB,MAAM,CAAC,YAAY,CAAC,IAAkB;QACpC,MAAM,GAAG,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,IAAA,qCAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,oBAAW,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACjD,OAAO,WAAW,CAAC;IACrB,CAAC;IAWD,YAAY,WAAwB;QAT3B,eAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAIjC,cAAc;QACN,cAAS,GAAG,IAAI,GAAuB,CAAC;QAChD,cAAc;QACN,kBAAa,GAAG,IAAI,GAAmB,CAAC;QAG9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,WAAW,EAAE,GAAU,CAAC;IACtC,CAAC;IAEO,IAAI;QACV,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,cAAc,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QAE/C,SAAS;QACT,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;aAC1C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;QAErD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,YAAY;QACZ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,WAAW;QACX,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,WAAW;QACX,MAAM,QAAQ,GAAG,CAAC,IAAiB,EAAE,IAAiB,EAAE,EAAE;YACxD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QACF,YAAY;QACZ,MAAM,oBAAoB,GAAG,CAAC,IAAiB,EAAE,IAAiB,EAAE,EAAE;YACpE,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,SAAS,GAAG,CAAC,GAAW,EAAE,UAAuB;YAC/C,OAAO;YACP,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;gBAEpF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;qBACI,CAAC;oBACJ,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC5C,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC/B,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC1B,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;wBAC/B,IAAA,kBAAU,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,gBAAgB;iBACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,gBAAgB;gBAChB,IAAI,WAAW,EAAE,CAAC;oBAChB,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAC;gBAExC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAErB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC1C,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,eAAe,CAAC,IAAgB;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAC1C,CAAC;YAED,WAAW,GAAG,WAAW,CAAC,UAAW,CAAC;QACxC,CAAC;QAED,eAAe;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAY,CAAC,CAAC;QAE1D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEhD,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBACvC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA+B;QACnD;;;;WAIG;QACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE;;WAEG;QACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,aAAa;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,aAAa;QACb,MAAM,eAAe,GAAG,CAAC,GAAW,EAAsC,EAAE;YAC1E,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,mBAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC;YACrD,CAAC;iBACI,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO,mBAAI,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAC9D,CAAC;iBACI,CAAC;gBACJ,OAAO,mBAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC;YAChE,CAAC;QACH,CAAC,CAAC;QACF,eAAe;QACf,MAAM,aAAa,GAAG,CAAC,OAAiB,EAAE,EAAE;YAC1C,OAAO;YACL,OAAO;YACP,OAAO,CAAC,MAAM,KAAK,CAAC;gBACpB,kBAAkB;gBAClB,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACxD,CAAC;QACJ,CAAC,CAAC;QAEF,YAAY;QACZ,OAAO,qBAAqB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO;YACP,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9E,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAC;gBAChD,OAAO;gBACL,UAAU;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC1C,OAAO;oBACP,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CACzD,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,SAAS;YACT,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9C,oBAAoB;gBACpB,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;qBACpC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACZ,GAAG,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAC1D,CAAC;qBACD,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;qBAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAElC,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,OAAO;YACP,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9G,UAAU;YACV,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7D,OAAO;YACP,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAE1F,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAyB;YACnC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;YAC7B,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAxPD,kCAwPC"}
@@ -1,4 +1,5 @@
1
1
  export * from './dependency';
2
2
  export * from './graph';
3
3
  export * from './module';
4
+ export * from './types';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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
@@ -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"}
@@ -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
- readonly node: SyntaxNode;
5
+ static from(app: App, data: Type.ModuleData): Module;
6
6
  private readonly imported;
7
7
  private readonly dependencyModules;
8
- lastModifyTime: number;
9
- lastSignatureTime: number;
10
- signature: string;
11
- constructor(node: SyntaxNode);
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;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,qBAAa,MAAO,YAAW,IAAI,CAAC,MAAM;IACxC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAE5D,cAAc,SAAM;IAEpB,iBAAiB,SAAM;IAEvB,SAAS,SAAM;gBAEH,IAAI,EAAE,UAAU;IAI5B,IAAI,IAAI,WAEP;IAED,MAAM,IAAI,IAAI,CAAC,UAAU;IAUzB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOvC,WAAW,IAAI,MAAM,EAAE;IAIvB,oBAAoB,IAAI,gBAAgB,EAAE;CAG3C"}
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"}
@@ -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
- constructor(node) {
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.lastModifyTime = -1;
11
- this.lastSignatureTime = -1;
12
- this.signature = '';
13
- this.node = node;
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
- imported: (0, lodash_1.union)(this.imported.map(({ node }) => node.nodePath)),
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();
@@ -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;IAYjB,YAAY,IAAgB;QATX,aAAQ,GAAa,EAAE,CAAC;QACxB,sBAAiB,GAAuB,EAAE,CAAC;QAE5D,mBAAc,GAAG,CAAC,CAAC,CAAC;QAEpB,sBAAiB,GAAG,CAAC,CAAC,CAAC;QAEvB,cAAS,GAAG,EAAE,CAAC;QAGb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YACxB,QAAQ,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/D,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;YAChF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,6BAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YACpE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,WAAW;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;CACF;AA5CD,wBA4CC"}
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,7 @@
1
+ import { type Connection } from '@lcap/nasl-concepts';
2
+ import type { Traverse } from '../../types';
3
+ /**
4
+ * Connection 节点迭代
5
+ */
6
+ export declare const traverseConnection: Traverse<Connection>;
7
+ //# sourceMappingURL=connection.d.ts.map
@@ -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,3 @@
1
+ export * from './connector-trigger';
2
+ export * from './connection';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,CAa3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAY3C,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,oCAA2C;AAE3C;;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;AACH,CAAC,CAAC;AAbW,QAAA,sBAAsB,0BAajC;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"}
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"}