@lcap/nasl-language-server-core 3.9.0-beta.1

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 (262) hide show
  1. package/README.md +3 -0
  2. package/out/index.d.ts +3 -0
  3. package/out/index.d.ts.map +1 -0
  4. package/out/index.js +19 -0
  5. package/out/index.js.map +1 -0
  6. package/out/module/dependency.d.ts +9 -0
  7. package/out/module/dependency.d.ts.map +1 -0
  8. package/out/module/dependency.js +17 -0
  9. package/out/module/dependency.js.map +1 -0
  10. package/out/module/graph.d.ts +19 -0
  11. package/out/module/graph.d.ts.map +1 -0
  12. package/out/module/graph.js +99 -0
  13. package/out/module/graph.js.map +1 -0
  14. package/out/module/index.d.ts +4 -0
  15. package/out/module/index.d.ts.map +1 -0
  16. package/out/module/index.js +20 -0
  17. package/out/module/index.js.map +1 -0
  18. package/out/module/module.d.ts +18 -0
  19. package/out/module/module.d.ts.map +1 -0
  20. package/out/module/module.js +41 -0
  21. package/out/module/module.js.map +1 -0
  22. package/out/symbol/graph.d.ts +18 -0
  23. package/out/symbol/graph.d.ts.map +1 -0
  24. package/out/symbol/graph.js +67 -0
  25. package/out/symbol/graph.js.map +1 -0
  26. package/out/symbol/index.d.ts +4 -0
  27. package/out/symbol/index.d.ts.map +1 -0
  28. package/out/symbol/index.js +20 -0
  29. package/out/symbol/index.js.map +1 -0
  30. package/out/symbol/namespace.d.ts +30 -0
  31. package/out/symbol/namespace.d.ts.map +1 -0
  32. package/out/symbol/namespace.js +134 -0
  33. package/out/symbol/namespace.js.map +1 -0
  34. package/out/symbol/symbol.d.ts +18 -0
  35. package/out/symbol/symbol.d.ts.map +1 -0
  36. package/out/symbol/symbol.js +26 -0
  37. package/out/symbol/symbol.js.map +1 -0
  38. package/out/symbol/traverse/concepts/anchor.d.ts +7 -0
  39. package/out/symbol/traverse/concepts/anchor.d.ts.map +1 -0
  40. package/out/symbol/traverse/concepts/anchor.js +14 -0
  41. package/out/symbol/traverse/concepts/anchor.js.map +1 -0
  42. package/out/symbol/traverse/concepts/anonymous-function.d.ts +7 -0
  43. package/out/symbol/traverse/concepts/anonymous-function.d.ts.map +1 -0
  44. package/out/symbol/traverse/concepts/anonymous-function.js +19 -0
  45. package/out/symbol/traverse/concepts/anonymous-function.js.map +1 -0
  46. package/out/symbol/traverse/concepts/app.d.ts +11 -0
  47. package/out/symbol/traverse/concepts/app.d.ts.map +1 -0
  48. package/out/symbol/traverse/concepts/app.js +115 -0
  49. package/out/symbol/traverse/concepts/app.js.map +1 -0
  50. package/out/symbol/traverse/concepts/argument.d.ts +7 -0
  51. package/out/symbol/traverse/concepts/argument.d.ts.map +1 -0
  52. package/out/symbol/traverse/concepts/argument.js +14 -0
  53. package/out/symbol/traverse/concepts/argument.js.map +1 -0
  54. package/out/symbol/traverse/concepts/assignment.d.ts +7 -0
  55. package/out/symbol/traverse/concepts/assignment.d.ts.map +1 -0
  56. package/out/symbol/traverse/concepts/assignment.js +42 -0
  57. package/out/symbol/traverse/concepts/assignment.js.map +1 -0
  58. package/out/symbol/traverse/concepts/auth-logic.d.ts +11 -0
  59. package/out/symbol/traverse/concepts/auth-logic.d.ts.map +1 -0
  60. package/out/symbol/traverse/concepts/auth-logic.js +17 -0
  61. package/out/symbol/traverse/concepts/auth-logic.js.map +1 -0
  62. package/out/symbol/traverse/concepts/backend.d.ts +15 -0
  63. package/out/symbol/traverse/concepts/backend.d.ts.map +1 -0
  64. package/out/symbol/traverse/concepts/backend.js +46 -0
  65. package/out/symbol/traverse/concepts/backend.js.map +1 -0
  66. package/out/symbol/traverse/concepts/batch-assignment.d.ts +7 -0
  67. package/out/symbol/traverse/concepts/batch-assignment.d.ts.map +1 -0
  68. package/out/symbol/traverse/concepts/batch-assignment.js +15 -0
  69. package/out/symbol/traverse/concepts/batch-assignment.js.map +1 -0
  70. package/out/symbol/traverse/concepts/binary-expression.d.ts +7 -0
  71. package/out/symbol/traverse/concepts/binary-expression.d.ts.map +1 -0
  72. package/out/symbol/traverse/concepts/binary-expression.js +13 -0
  73. package/out/symbol/traverse/concepts/binary-expression.js.map +1 -0
  74. package/out/symbol/traverse/concepts/bind-attr.d.ts +7 -0
  75. package/out/symbol/traverse/concepts/bind-attr.d.ts.map +1 -0
  76. package/out/symbol/traverse/concepts/bind-attr.js +26 -0
  77. package/out/symbol/traverse/concepts/bind-attr.js.map +1 -0
  78. package/out/symbol/traverse/concepts/bind-directive.d.ts +7 -0
  79. package/out/symbol/traverse/concepts/bind-directive.d.ts.map +1 -0
  80. package/out/symbol/traverse/concepts/bind-directive.js +14 -0
  81. package/out/symbol/traverse/concepts/bind-directive.js.map +1 -0
  82. package/out/symbol/traverse/concepts/bind-event.d.ts +7 -0
  83. package/out/symbol/traverse/concepts/bind-event.d.ts.map +1 -0
  84. package/out/symbol/traverse/concepts/bind-event.js +14 -0
  85. package/out/symbol/traverse/concepts/bind-event.js.map +1 -0
  86. package/out/symbol/traverse/concepts/bind-style.d.ts +7 -0
  87. package/out/symbol/traverse/concepts/bind-style.d.ts.map +1 -0
  88. package/out/symbol/traverse/concepts/bind-style.js +14 -0
  89. package/out/symbol/traverse/concepts/bind-style.js.map +1 -0
  90. package/out/symbol/traverse/concepts/block.d.ts +7 -0
  91. package/out/symbol/traverse/concepts/block.d.ts.map +1 -0
  92. package/out/symbol/traverse/concepts/block.js +16 -0
  93. package/out/symbol/traverse/concepts/block.js.map +1 -0
  94. package/out/symbol/traverse/concepts/call-connector.d.ts +7 -0
  95. package/out/symbol/traverse/concepts/call-connector.d.ts.map +1 -0
  96. package/out/symbol/traverse/concepts/call-connector.js +11 -0
  97. package/out/symbol/traverse/concepts/call-connector.js.map +1 -0
  98. package/out/symbol/traverse/concepts/call-function.d.ts +7 -0
  99. package/out/symbol/traverse/concepts/call-function.d.ts.map +1 -0
  100. package/out/symbol/traverse/concepts/call-function.js +11 -0
  101. package/out/symbol/traverse/concepts/call-function.js.map +1 -0
  102. package/out/symbol/traverse/concepts/call-interface.d.ts +7 -0
  103. package/out/symbol/traverse/concepts/call-interface.d.ts.map +1 -0
  104. package/out/symbol/traverse/concepts/call-interface.js +13 -0
  105. package/out/symbol/traverse/concepts/call-interface.js.map +1 -0
  106. package/out/symbol/traverse/concepts/call-logic.d.ts +7 -0
  107. package/out/symbol/traverse/concepts/call-logic.d.ts.map +1 -0
  108. package/out/symbol/traverse/concepts/call-logic.js +30 -0
  109. package/out/symbol/traverse/concepts/call-logic.js.map +1 -0
  110. package/out/symbol/traverse/concepts/call-query-component.d.ts +11 -0
  111. package/out/symbol/traverse/concepts/call-query-component.d.ts.map +1 -0
  112. package/out/symbol/traverse/concepts/call-query-component.js +19 -0
  113. package/out/symbol/traverse/concepts/call-query-component.js.map +1 -0
  114. package/out/symbol/traverse/concepts/default-value.d.ts +7 -0
  115. package/out/symbol/traverse/concepts/default-value.d.ts.map +1 -0
  116. package/out/symbol/traverse/concepts/default-value.js +14 -0
  117. package/out/symbol/traverse/concepts/default-value.js.map +1 -0
  118. package/out/symbol/traverse/concepts/destination.d.ts +7 -0
  119. package/out/symbol/traverse/concepts/destination.d.ts.map +1 -0
  120. package/out/symbol/traverse/concepts/destination.js +13 -0
  121. package/out/symbol/traverse/concepts/destination.js.map +1 -0
  122. package/out/symbol/traverse/concepts/entity.d.ts +11 -0
  123. package/out/symbol/traverse/concepts/entity.d.ts.map +1 -0
  124. package/out/symbol/traverse/concepts/entity.js +38 -0
  125. package/out/symbol/traverse/concepts/entity.js.map +1 -0
  126. package/out/symbol/traverse/concepts/enum.d.ts +11 -0
  127. package/out/symbol/traverse/concepts/enum.d.ts.map +1 -0
  128. package/out/symbol/traverse/concepts/enum.js +25 -0
  129. package/out/symbol/traverse/concepts/enum.js.map +1 -0
  130. package/out/symbol/traverse/concepts/expression.d.ts +7 -0
  131. package/out/symbol/traverse/concepts/expression.d.ts.map +1 -0
  132. package/out/symbol/traverse/concepts/expression.js +126 -0
  133. package/out/symbol/traverse/concepts/expression.js.map +1 -0
  134. package/out/symbol/traverse/concepts/external-destination.d.ts +7 -0
  135. package/out/symbol/traverse/concepts/external-destination.d.ts.map +1 -0
  136. package/out/symbol/traverse/concepts/external-destination.js +18 -0
  137. package/out/symbol/traverse/concepts/external-destination.js.map +1 -0
  138. package/out/symbol/traverse/concepts/for-each-statement.d.ts +7 -0
  139. package/out/symbol/traverse/concepts/for-each-statement.d.ts.map +1 -0
  140. package/out/symbol/traverse/concepts/for-each-statement.js +31 -0
  141. package/out/symbol/traverse/concepts/for-each-statement.js.map +1 -0
  142. package/out/symbol/traverse/concepts/frontend-type.d.ts +7 -0
  143. package/out/symbol/traverse/concepts/frontend-type.d.ts.map +1 -0
  144. package/out/symbol/traverse/concepts/frontend-type.js +32 -0
  145. package/out/symbol/traverse/concepts/frontend-type.js.map +1 -0
  146. package/out/symbol/traverse/concepts/frontend.d.ts +7 -0
  147. package/out/symbol/traverse/concepts/frontend.d.ts.map +1 -0
  148. package/out/symbol/traverse/concepts/frontend.js +40 -0
  149. package/out/symbol/traverse/concepts/frontend.js.map +1 -0
  150. package/out/symbol/traverse/concepts/function.d.ts +7 -0
  151. package/out/symbol/traverse/concepts/function.d.ts.map +1 -0
  152. package/out/symbol/traverse/concepts/function.js +29 -0
  153. package/out/symbol/traverse/concepts/function.js.map +1 -0
  154. package/out/symbol/traverse/concepts/identifier.d.ts +7 -0
  155. package/out/symbol/traverse/concepts/identifier.d.ts.map +1 -0
  156. package/out/symbol/traverse/concepts/identifier.js +12 -0
  157. package/out/symbol/traverse/concepts/identifier.js.map +1 -0
  158. package/out/symbol/traverse/concepts/if-statement.d.ts +7 -0
  159. package/out/symbol/traverse/concepts/if-statement.d.ts.map +1 -0
  160. package/out/symbol/traverse/concepts/if-statement.js +19 -0
  161. package/out/symbol/traverse/concepts/if-statement.js.map +1 -0
  162. package/out/symbol/traverse/concepts/index.d.ts +2 -0
  163. package/out/symbol/traverse/concepts/index.d.ts.map +1 -0
  164. package/out/symbol/traverse/concepts/index.js +10 -0
  165. package/out/symbol/traverse/concepts/index.js.map +1 -0
  166. package/out/symbol/traverse/concepts/interface.d.ts +7 -0
  167. package/out/symbol/traverse/concepts/interface.d.ts.map +1 -0
  168. package/out/symbol/traverse/concepts/interface.js +18 -0
  169. package/out/symbol/traverse/concepts/interface.js.map +1 -0
  170. package/out/symbol/traverse/concepts/logic.d.ts +7 -0
  171. package/out/symbol/traverse/concepts/logic.d.ts.map +1 -0
  172. package/out/symbol/traverse/concepts/logic.js +29 -0
  173. package/out/symbol/traverse/concepts/logic.js.map +1 -0
  174. package/out/symbol/traverse/concepts/match-statement.d.ts +7 -0
  175. package/out/symbol/traverse/concepts/match-statement.d.ts.map +1 -0
  176. package/out/symbol/traverse/concepts/match-statement.js +28 -0
  177. package/out/symbol/traverse/concepts/match-statement.js.map +1 -0
  178. package/out/symbol/traverse/concepts/member-expression.d.ts +7 -0
  179. package/out/symbol/traverse/concepts/member-expression.d.ts.map +1 -0
  180. package/out/symbol/traverse/concepts/member-expression.js +12 -0
  181. package/out/symbol/traverse/concepts/member-expression.js.map +1 -0
  182. package/out/symbol/traverse/concepts/module.d.ts +15 -0
  183. package/out/symbol/traverse/concepts/module.d.ts.map +1 -0
  184. package/out/symbol/traverse/concepts/module.js +32 -0
  185. package/out/symbol/traverse/concepts/module.js.map +1 -0
  186. package/out/symbol/traverse/concepts/namespace.d.ts +9 -0
  187. package/out/symbol/traverse/concepts/namespace.d.ts.map +1 -0
  188. package/out/symbol/traverse/concepts/namespace.js +48 -0
  189. package/out/symbol/traverse/concepts/namespace.js.map +1 -0
  190. package/out/symbol/traverse/concepts/new-list.d.ts +7 -0
  191. package/out/symbol/traverse/concepts/new-list.d.ts.map +1 -0
  192. package/out/symbol/traverse/concepts/new-list.js +18 -0
  193. package/out/symbol/traverse/concepts/new-list.js.map +1 -0
  194. package/out/symbol/traverse/concepts/oql-query-component.d.ts +7 -0
  195. package/out/symbol/traverse/concepts/oql-query-component.d.ts.map +1 -0
  196. package/out/symbol/traverse/concepts/oql-query-component.js +33 -0
  197. package/out/symbol/traverse/concepts/oql-query-component.js.map +1 -0
  198. package/out/symbol/traverse/concepts/paginate.d.ts +7 -0
  199. package/out/symbol/traverse/concepts/paginate.d.ts.map +1 -0
  200. package/out/symbol/traverse/concepts/paginate.js +14 -0
  201. package/out/symbol/traverse/concepts/paginate.js.map +1 -0
  202. package/out/symbol/traverse/concepts/select-members.d.ts +7 -0
  203. package/out/symbol/traverse/concepts/select-members.d.ts.map +1 -0
  204. package/out/symbol/traverse/concepts/select-members.js +16 -0
  205. package/out/symbol/traverse/concepts/select-members.js.map +1 -0
  206. package/out/symbol/traverse/concepts/statement.d.ts +7 -0
  207. package/out/symbol/traverse/concepts/statement.d.ts.map +1 -0
  208. package/out/symbol/traverse/concepts/statement.js +66 -0
  209. package/out/symbol/traverse/concepts/statement.js.map +1 -0
  210. package/out/symbol/traverse/concepts/string-interpolation.d.ts +7 -0
  211. package/out/symbol/traverse/concepts/string-interpolation.d.ts.map +1 -0
  212. package/out/symbol/traverse/concepts/string-interpolation.js +14 -0
  213. package/out/symbol/traverse/concepts/string-interpolation.js.map +1 -0
  214. package/out/symbol/traverse/concepts/structure.d.ts +11 -0
  215. package/out/symbol/traverse/concepts/structure.d.ts.map +1 -0
  216. package/out/symbol/traverse/concepts/structure.js +34 -0
  217. package/out/symbol/traverse/concepts/structure.js.map +1 -0
  218. package/out/symbol/traverse/concepts/switch-statement.d.ts +7 -0
  219. package/out/symbol/traverse/concepts/switch-statement.d.ts.map +1 -0
  220. package/out/symbol/traverse/concepts/switch-statement.js +20 -0
  221. package/out/symbol/traverse/concepts/switch-statement.js.map +1 -0
  222. package/out/symbol/traverse/concepts/type-annotation.d.ts +7 -0
  223. package/out/symbol/traverse/concepts/type-annotation.d.ts.map +1 -0
  224. package/out/symbol/traverse/concepts/type-annotation.js +65 -0
  225. package/out/symbol/traverse/concepts/type-annotation.js.map +1 -0
  226. package/out/symbol/traverse/concepts/unary-expression.d.ts +7 -0
  227. package/out/symbol/traverse/concepts/unary-expression.d.ts.map +1 -0
  228. package/out/symbol/traverse/concepts/unary-expression.js +12 -0
  229. package/out/symbol/traverse/concepts/unary-expression.js.map +1 -0
  230. package/out/symbol/traverse/concepts/utils.d.ts +16 -0
  231. package/out/symbol/traverse/concepts/utils.d.ts.map +1 -0
  232. package/out/symbol/traverse/concepts/utils.js +33 -0
  233. package/out/symbol/traverse/concepts/utils.js.map +1 -0
  234. package/out/symbol/traverse/concepts/variable.d.ts +9 -0
  235. package/out/symbol/traverse/concepts/variable.d.ts.map +1 -0
  236. package/out/symbol/traverse/concepts/variable.js +27 -0
  237. package/out/symbol/traverse/concepts/variable.js.map +1 -0
  238. package/out/symbol/traverse/concepts/view-element.d.ts +7 -0
  239. package/out/symbol/traverse/concepts/view-element.d.ts.map +1 -0
  240. package/out/symbol/traverse/concepts/view-element.js +45 -0
  241. package/out/symbol/traverse/concepts/view-element.js.map +1 -0
  242. package/out/symbol/traverse/concepts/view.d.ts +7 -0
  243. package/out/symbol/traverse/concepts/view.d.ts.map +1 -0
  244. package/out/symbol/traverse/concepts/view.js +45 -0
  245. package/out/symbol/traverse/concepts/view.js.map +1 -0
  246. package/out/symbol/traverse/concepts/while-statement.d.ts +7 -0
  247. package/out/symbol/traverse/concepts/while-statement.d.ts.map +1 -0
  248. package/out/symbol/traverse/concepts/while-statement.js +16 -0
  249. package/out/symbol/traverse/concepts/while-statement.js.map +1 -0
  250. package/out/symbol/traverse/index.d.ts +2 -0
  251. package/out/symbol/traverse/index.d.ts.map +1 -0
  252. package/out/symbol/traverse/index.js +6 -0
  253. package/out/symbol/traverse/index.js.map +1 -0
  254. package/out/symbol/traverse/traverse.d.ts +4 -0
  255. package/out/symbol/traverse/traverse.d.ts.map +1 -0
  256. package/out/symbol/traverse/traverse.js +70 -0
  257. package/out/symbol/traverse/traverse.js.map +1 -0
  258. package/out/symbol/traverse/types.d.ts +30 -0
  259. package/out/symbol/traverse/types.d.ts.map +1 -0
  260. package/out/symbol/traverse/types.js +3 -0
  261. package/out/symbol/traverse/types.js.map +1 -0
  262. package/package.json +39 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Nasl Language Server
2
+
3
+ Nasl 语言服务
package/out/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './module';
2
+ export * from './symbol';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
package/out/index.js ADDED
@@ -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("./module"), exports);
18
+ __exportStar(require("./symbol"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"}
@@ -0,0 +1,9 @@
1
+ import type { Module as Type } from '@lcap/nasl-types';
2
+ import type { Module } from './module';
3
+ export declare class ModuleDependency implements Type.ModuleDependency {
4
+ readonly module: Module;
5
+ readonly dependency: Module;
6
+ constructor(module: Module, dependency: Module);
7
+ toData(): Type.ModuleDependencyData;
8
+ }
9
+ //# sourceMappingURL=dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../src/module/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,gBAAiB,YAAW,IAAI,CAAC,gBAAgB;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK9C,MAAM,IAAI,IAAI,CAAC,oBAAoB;CAMpC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleDependency = void 0;
4
+ class ModuleDependency {
5
+ constructor(module, dependency) {
6
+ this.module = module;
7
+ this.dependency = dependency;
8
+ }
9
+ toData() {
10
+ return {
11
+ module: this.module.node.nodePath,
12
+ dependency: this.dependency.node.nodePath,
13
+ };
14
+ }
15
+ }
16
+ exports.ModuleDependency = ModuleDependency;
17
+ //# sourceMappingURL=dependency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../src/module/dependency.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAI3B,YAAY,MAAc,EAAE,UAAkB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;SAC1C,CAAC;IACJ,CAAC;CACF;AAfD,4CAeC"}
@@ -0,0 +1,19 @@
1
+ import type { Module as Type } from '@lcap/nasl-types';
2
+ import { type SyntaxNode } from '@lcap/nasl-concepts';
3
+ import { SymbolGraph, Symbol } from '../symbol';
4
+ import { Module } from './module';
5
+ export declare class ModuleGraph implements Type.ModuleGraph {
6
+ static from(data: object): ModuleGraph;
7
+ readonly createTime: number;
8
+ private symbolGraph;
9
+ private moduleMap;
10
+ constructor(symbolGraph: SymbolGraph);
11
+ private get app();
12
+ private init;
13
+ getModuleByNode(node: SyntaxNode): Module;
14
+ getModuleMapBySymbol(symbol: Symbol): void;
15
+ getModules(): Module[];
16
+ diffByModuleGraph(old: ModuleGraph): Module[];
17
+ toData(): Type.ModuleGraphData;
18
+ }
19
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +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,EAAO,KAAK,UAAU,EAAW,MAAM,qBAAqB,CAAC;AACpE,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;IAOxB,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;IAuCZ,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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleGraph = void 0;
4
+ const nasl_concepts_1 = require("@lcap/nasl-concepts");
5
+ const symbol_1 = require("../symbol");
6
+ const module_1 = require("./module");
7
+ class ModuleGraph {
8
+ static from(data) {
9
+ const app = new nasl_concepts_1.App(data);
10
+ const symbolGraph = new symbol_1.SymbolGraph(app);
11
+ const moduleGraph = new ModuleGraph(symbolGraph);
12
+ return moduleGraph;
13
+ }
14
+ constructor(symbolGraph) {
15
+ this.createTime = Date.now();
16
+ this.moduleMap = new Map;
17
+ this.symbolGraph = symbolGraph;
18
+ this.init();
19
+ }
20
+ get app() {
21
+ return this.symbolGraph.app;
22
+ }
23
+ init() {
24
+ const { app, moduleMap } = this;
25
+ const moduleConcepts = nasl_concepts_1.service.getFileNodesByNasl(app);
26
+ const cacheMap = new Map();
27
+ // 记录所有模块
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 (child !== modNode && moduleMap.has(child)) {
35
+ return true;
36
+ }
37
+ if (cacheMap.has(child)) {
38
+ cacheMap.set(child, cacheMap.get(child) + 1);
39
+ }
40
+ else {
41
+ cacheMap.set(child, 0);
42
+ }
43
+ if (child.changedTime && child.changedTime > mod.lastModifyTime) {
44
+ mod.lastModifyTime = child.changedTime;
45
+ }
46
+ });
47
+ }));
48
+ // debugger;
49
+ // TODO: 模块图暂时忽略
50
+ // const symbols = this.symbolGraph.getSymbols()
51
+ // .filter((item) => item.isUsed && item.declaration);
52
+ // for (const symbol of symbols) {
53
+ // this.getModuleMapBySymbol(symbol);
54
+ // }
55
+ }
56
+ getModuleByNode(node) {
57
+ let currentNode = node;
58
+ while (currentNode.parentNode) {
59
+ if (this.moduleMap.has(currentNode)) {
60
+ return this.moduleMap.get(currentNode);
61
+ }
62
+ currentNode = currentNode.parentNode;
63
+ }
64
+ // 兜底返回 App 的模块
65
+ return this.moduleMap.get(node.app);
66
+ }
67
+ getModuleMapBySymbol(symbol) {
68
+ if (!symbol.declaration) {
69
+ throw new Error(`未找到此符号的声明语句: ${symbol.name}`);
70
+ }
71
+ const current = this.getModuleByNode(symbol.declaration);
72
+ for (const refNode of symbol.references) {
73
+ const refModule = this.getModuleByNode(refNode);
74
+ if (refModule !== current) {
75
+ refModule.addDependency(current);
76
+ }
77
+ }
78
+ }
79
+ getModules() {
80
+ return Array.from(this.moduleMap.values());
81
+ }
82
+ diffByModuleGraph(old) {
83
+ return [];
84
+ }
85
+ toData() {
86
+ const result = {
87
+ appId: this.symbolGraph.appId,
88
+ createdTime: this.createTime,
89
+ modules: {},
90
+ };
91
+ const modules = this.getModules().map((mod) => mod.toData());
92
+ for (const { node, ...module } of modules) {
93
+ result.modules[node] = module;
94
+ }
95
+ return result;
96
+ }
97
+ }
98
+ exports.ModuleGraph = ModuleGraph;
99
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/module/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './dependency';
2
+ export * from './graph';
3
+ export * from './module';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,20 @@
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("./dependency"), exports);
18
+ __exportStar(require("./graph"), exports);
19
+ __exportStar(require("./module"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0CAAwB;AACxB,2CAAyB"}
@@ -0,0 +1,18 @@
1
+ import type { Module as Type } from '@lcap/nasl-types';
2
+ import type { SyntaxNode } from '@lcap/nasl-concepts';
3
+ import { ModuleDependency } from './dependency';
4
+ export declare class Module implements Type.Module {
5
+ readonly node: SyntaxNode;
6
+ private readonly imported;
7
+ private readonly dependencyModules;
8
+ lastModifyTime: number;
9
+ lastSignatureTime: number;
10
+ signature: string;
11
+ constructor(node: SyntaxNode);
12
+ get name(): string;
13
+ toData(): Type.ModuleData;
14
+ addDependency(dependency: Module): void;
15
+ getImported(): Module[];
16
+ getDependencyModules(): ModuleDependency[];
17
+ }
18
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +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,SAAK;IAEnB,iBAAiB,SAAK;IAEtB,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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Module = void 0;
4
+ const dependency_1 = require("./dependency");
5
+ const lodash_1 = require("lodash");
6
+ class Module {
7
+ constructor(node) {
8
+ this.imported = [];
9
+ this.dependencyModules = [];
10
+ this.lastModifyTime = 0;
11
+ this.lastSignatureTime = 0;
12
+ this.signature = '';
13
+ this.node = node;
14
+ }
15
+ get name() {
16
+ return this.node.nodePath;
17
+ }
18
+ toData() {
19
+ return {
20
+ node: this.node.nodePath,
21
+ imported: (0, lodash_1.union)(this.imported.map(({ node }) => node.nodePath)),
22
+ lastModifyTime: this.lastModifyTime,
23
+ lastSignatureTime: this.lastSignatureTime,
24
+ signature: this.signature,
25
+ };
26
+ }
27
+ addDependency(dependency) {
28
+ if (this.dependencyModules.every(({ dependency: item }) => dependency !== item)) {
29
+ this.dependencyModules.push(new dependency_1.ModuleDependency(this, dependency));
30
+ dependency.imported.push(this);
31
+ }
32
+ }
33
+ getImported() {
34
+ return [];
35
+ }
36
+ getDependencyModules() {
37
+ return this.dependencyModules.slice();
38
+ }
39
+ }
40
+ exports.Module = Module;
41
+ //# sourceMappingURL=module.js.map
@@ -0,0 +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;QAEnB,sBAAiB,GAAG,CAAC,CAAC;QAEtB,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"}
@@ -0,0 +1,18 @@
1
+ import type { Symbol as Type } from '@lcap/nasl-types';
2
+ import { Symbol } from './symbol';
3
+ import { Namespace } from './namespace';
4
+ import { SyntaxNode } from '@lcap/nasl-concepts';
5
+ export declare class SymbolGraph implements Type.SymbolGraph {
6
+ constructor(app: SyntaxNode);
7
+ /** Nasl AST */
8
+ readonly app: SyntaxNode;
9
+ /** 作用域数据 */
10
+ private readonly namespaces;
11
+ get appId(): string;
12
+ addNamespace(...namespaces: Namespace[]): void;
13
+ getSymbols(): Symbol[];
14
+ getNamespaces(): Namespace[];
15
+ getNamespaceByNode(node: SyntaxNode): Namespace | undefined;
16
+ getSymbolByNode(node: SyntaxNode, namespaces?: Namespace): Symbol | undefined;
17
+ }
18
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/symbol/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,WAAY,YAAW,IAAI,CAAC,WAAW;gBACtC,GAAG,EAAE,UAAU;IAK3B,eAAe;IACf,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IAEzB,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAE9C,IAAI,KAAK,WAER;IAED,YAAY,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE;IAQvC,UAAU;IAKV,aAAa;IAIb,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS;IAkC3D,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;CAe9E"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SymbolGraph = void 0;
4
+ class SymbolGraph {
5
+ constructor(app) {
6
+ /** 作用域数据 */
7
+ this.namespaces = [];
8
+ this.app = app;
9
+ // traverse(app, this);
10
+ }
11
+ get appId() {
12
+ return this.app.id;
13
+ }
14
+ addNamespace(...namespaces) {
15
+ for (const item of namespaces) {
16
+ if (this.namespaces.every((it) => it.node !== item.node || it.parent !== item.parent)) {
17
+ this.namespaces.push(item);
18
+ }
19
+ }
20
+ }
21
+ getSymbols() {
22
+ return this.getNamespaces()
23
+ .reduce(((ans, item) => ans.concat(Array.from(item.getStrictLocalSymbols().values()))), []);
24
+ }
25
+ getNamespaces() {
26
+ return this.namespaces.slice();
27
+ }
28
+ getNamespaceByNode(node) {
29
+ if (!node) {
30
+ return;
31
+ }
32
+ const rootScope = this.namespaces.find((item) => item.isRoot);
33
+ if (node === this.app) {
34
+ return rootScope;
35
+ }
36
+ let maxLen = 0;
37
+ let result = undefined;
38
+ const nodePath = node.nodePath;
39
+ // 搜索接近的作用域
40
+ rootScope.traverse((namespace) => {
41
+ const insidePath = namespace.node.nodePath;
42
+ // 过滤子节点
43
+ if (!nodePath.startsWith(insidePath)) {
44
+ return false;
45
+ }
46
+ if (insidePath.length > maxLen) {
47
+ maxLen = insidePath.length;
48
+ result = namespace;
49
+ }
50
+ });
51
+ return result;
52
+ }
53
+ getSymbolByNode(node, namespaces) {
54
+ if (!node?.name) {
55
+ return;
56
+ }
57
+ if (!namespaces) {
58
+ namespaces = this.getNamespaceByNode(node);
59
+ }
60
+ if (!namespaces) {
61
+ return;
62
+ }
63
+ return namespaces.getSymbolByToken(node.name);
64
+ }
65
+ }
66
+ exports.SymbolGraph = SymbolGraph;
67
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/symbol/graph.ts"],"names":[],"mappings":";;;AAMA,MAAa,WAAW;IACtB,YAAY,GAAe;QAQ3B,YAAY;QACK,eAAU,GAAgB,EAAE,CAAC;QAR5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,uBAAuB;IACzB,CAAC;IAQD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,GAAG,UAAuB;QACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,EAAE;aACxB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAc,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,kBAAkB,CAAC,IAAgB;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;QAE/D,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAA0B,SAAS,CAAC;QAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,WAAW;QACX,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;YAE3C,QAAQ;YACR,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBAC/B,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC3B,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,IAAgB,EAAE,UAAsB;QACtD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAlFD,kCAkFC"}
@@ -0,0 +1,4 @@
1
+ export * from './graph';
2
+ export * from './namespace';
3
+ export * from './symbol';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/symbol/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
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("./graph"), exports);
18
+ __exportStar(require("./namespace"), exports);
19
+ __exportStar(require("./symbol"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/symbol/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB"}
@@ -0,0 +1,30 @@
1
+ import type { Symbol as Type } from '@lcap/nasl-types';
2
+ import type { SyntaxNode } from '@lcap/nasl-concepts';
3
+ import { Symbol } from './symbol';
4
+ import { SymbolGraph } from './graph';
5
+ export declare class Namespace implements Type.Namespace {
6
+ readonly graph: SymbolGraph;
7
+ readonly node: SyntaxNode;
8
+ readonly defaultExport?: Symbol | undefined;
9
+ readonly parent?: Namespace | undefined;
10
+ readonly isExport: boolean;
11
+ readonly children: Namespace[];
12
+ /** 本地符号集合 */
13
+ private readonly localSymbols;
14
+ /** 当前可用符号 */
15
+ private readonly namespaceSymbols;
16
+ constructor(graph: SymbolGraph, node: SyntaxNode, defaultExport?: Symbol | undefined, parent?: Namespace | undefined, isExport?: boolean);
17
+ get isRoot(): boolean;
18
+ get isVirtual(): boolean;
19
+ get root(): Namespace;
20
+ isChild(namespace: Namespace): boolean;
21
+ addSymbol(symbol: Symbol): void;
22
+ getExportTopNamespace(): Namespace;
23
+ getParentNamespace(cb: (namespace: Namespace) => boolean): Namespace | undefined;
24
+ getSymbolByToken(token: string): Symbol | undefined;
25
+ getNamespaceSymbols(): Map<string, Symbol>;
26
+ getLocalSymbols(): Map<string, Symbol>;
27
+ getStrictLocalSymbols(): Map<string, Symbol>;
28
+ traverse(cb: (namespace: Namespace) => boolean | undefined | void): Namespace | undefined;
29
+ }
30
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/symbol/namespace.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,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,SAAU,YAAW,IAAI,CAAC,SAAS;IAQ5C,QAAQ,CAAC,KAAK,EAAE,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU;IACzB,QAAQ,CAAC,aAAa,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC;IAChB,QAAQ,CAAC,QAAQ;IAXnB,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAM;IACpC,aAAa;IACb,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,aAAa;IACb,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;gBAGnD,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,UAAU,EAChB,aAAa,CAAC,oBAAQ,EACtB,MAAM,CAAC,uBAAW,EAClB,QAAQ,UAAO;IAe1B,IAAI,MAAM,YAET;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,IAAI,cAQP;IAED,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAUtC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc/B,qBAAqB,IAAI,SAAS;IAMlC,kBAAkB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,SAAS;IAgBhF,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IA4BnD,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI1C,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBtC,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS;CAkB1F"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Namespace = void 0;
4
+ class Namespace {
5
+ constructor(graph, node, defaultExport, parent, isExport = true) {
6
+ this.graph = graph;
7
+ this.node = node;
8
+ this.defaultExport = defaultExport;
9
+ this.parent = parent;
10
+ this.isExport = isExport;
11
+ this.children = [];
12
+ /** 本地符号集合 */
13
+ this.localSymbols = new Map();
14
+ /** 当前可用符号 */
15
+ this.namespaceSymbols = new Map();
16
+ graph.addNamespace(this);
17
+ if (defaultExport) {
18
+ // @ts-ignore
19
+ this.defaultExport.bindNamespace = this;
20
+ }
21
+ if (parent) {
22
+ parent.children.push(this);
23
+ this.parent = parent;
24
+ }
25
+ }
26
+ get isRoot() {
27
+ return !this.parent && this.node.nodePath === 'app';
28
+ }
29
+ get isVirtual() {
30
+ return !this.node;
31
+ }
32
+ get root() {
33
+ let root = this;
34
+ while (!root.isRoot && root.parent) {
35
+ root = root.parent;
36
+ }
37
+ return root;
38
+ }
39
+ isChild(namespace) {
40
+ let current = this;
41
+ while (current.parent && current !== namespace) {
42
+ current = current.parent;
43
+ }
44
+ return current === namespace;
45
+ }
46
+ addSymbol(symbol) {
47
+ if (this.localSymbols.has(symbol.name)) {
48
+ return;
49
+ }
50
+ this.localSymbols.set(symbol.name, symbol);
51
+ if (!symbol.isExport || !symbol.semanticName) {
52
+ return;
53
+ }
54
+ this.getExportTopNamespace().namespaceSymbols.set(symbol.semanticName, symbol);
55
+ }
56
+ getExportTopNamespace() {
57
+ return this.getParentNamespace((ns) => {
58
+ return !ns.isExport || ns.isRoot;
59
+ });
60
+ }
61
+ getParentNamespace(cb) {
62
+ let current = this;
63
+ while (!current.isRoot) {
64
+ if (cb(current)) {
65
+ return current;
66
+ }
67
+ current = current.parent;
68
+ }
69
+ if (cb(current)) {
70
+ return current;
71
+ }
72
+ }
73
+ getSymbolByToken(token) {
74
+ if (!token) {
75
+ return;
76
+ }
77
+ // 含有`'.'`符号时表示是命名空间引用
78
+ const isNamespaceRef = token.includes('.');
79
+ let result;
80
+ if (isNamespaceRef) {
81
+ return this.getNamespaceSymbols().get(token);
82
+ }
83
+ else {
84
+ result = this.getStrictLocalSymbols().get(token);
85
+ if (result) {
86
+ return result;
87
+ }
88
+ result = this.getLocalSymbols().get(token);
89
+ if (result) {
90
+ return result;
91
+ }
92
+ }
93
+ }
94
+ getNamespaceSymbols() {
95
+ return new Map(this.getExportTopNamespace().namespaceSymbols);
96
+ }
97
+ getLocalSymbols() {
98
+ const result = this.getStrictLocalSymbols();
99
+ const recordSymbol = (space) => {
100
+ for (const [key, val] of current.localSymbols) {
101
+ if (!result.has(key)) {
102
+ result.set(key, val);
103
+ }
104
+ }
105
+ };
106
+ let current = this.parent ?? this;
107
+ while (!current.isRoot) {
108
+ recordSymbol(current);
109
+ current = current.parent;
110
+ }
111
+ recordSymbol(current);
112
+ return result;
113
+ }
114
+ getStrictLocalSymbols() {
115
+ return new Map(this.localSymbols);
116
+ }
117
+ traverse(cb) {
118
+ const resultSelf = cb(this);
119
+ if (resultSelf) {
120
+ return this;
121
+ }
122
+ else if (resultSelf === false) {
123
+ return;
124
+ }
125
+ for (const child of this.children) {
126
+ let result = child.traverse(cb);
127
+ if (result) {
128
+ return result;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ exports.Namespace = Namespace;
134
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/symbol/namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Symbol as SymbolType } from '@lcap/nasl-types';
2
+ import type { SyntaxNode } from '@lcap/nasl-concepts';
3
+ import { Namespace } from './namespace';
4
+ import { SymbolGraph } from './graph';
5
+ export declare class Symbol implements SymbolType.Symbol {
6
+ readonly graph: SymbolGraph;
7
+ readonly name: string;
8
+ readonly namespace: Namespace;
9
+ readonly declaration?: SyntaxNode | undefined;
10
+ readonly isVirtual: boolean;
11
+ readonly isExport: boolean;
12
+ readonly references: SyntaxNode[];
13
+ readonly naslName?: string;
14
+ readonly semanticName?: string;
15
+ constructor(graph: SymbolGraph, name: string, namespace: Namespace, declaration?: SyntaxNode | undefined, isVirtual?: boolean, isExport?: boolean);
16
+ get isUsed(): boolean;
17
+ }
18
+ //# sourceMappingURL=symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../../src/symbol/symbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,MAAO,YAAW,UAAU,CAAC,MAAM;aAM5B,KAAK,EAAE,WAAW;aAClB,IAAI,EAAE,MAAM;aACZ,SAAS,EAAE,SAAS;aACpB,WAAW,CAAC;aACZ,SAAS;aACT,QAAQ;IAV1B,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,CAAM;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAGb,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,wBAAY,EACxB,SAAS,UAAQ,EACjB,QAAQ,UAAO;IAajC,IAAI,MAAM,YAET;CACF"}