arkanalyzer 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/LICENSE +201 -0
  2. package/README.en.md +88 -0
  3. package/README.md +98 -0
  4. package/docs/HowToCreatePR.md +55 -0
  5. package/docs/HowToHandleIssues.md +155 -0
  6. package/docs/quickstart.pdf +0 -0
  7. package/lib/Config.d.ts +26 -0
  8. package/lib/Config.d.ts.map +1 -0
  9. package/lib/Config.js +128 -0
  10. package/lib/Scene.d.ts +125 -0
  11. package/lib/Scene.d.ts.map +1 -0
  12. package/lib/Scene.js +762 -0
  13. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -0
  14. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -0
  15. package/lib/callgraph/algorithm/AbstractAnalysis.js +137 -0
  16. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +11 -0
  17. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -0
  18. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +71 -0
  19. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +16 -0
  20. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -0
  21. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +147 -0
  22. package/lib/callgraph/common/Statistics.d.ts +58 -0
  23. package/lib/callgraph/common/Statistics.d.ts.map +1 -0
  24. package/lib/callgraph/common/Statistics.js +203 -0
  25. package/lib/callgraph/model/BaseGraph.d.ts +62 -0
  26. package/lib/callgraph/model/BaseGraph.d.ts.map +1 -0
  27. package/lib/callgraph/model/BaseGraph.js +158 -0
  28. package/lib/callgraph/model/CallGraph.d.ts +94 -0
  29. package/lib/callgraph/model/CallGraph.d.ts.map +1 -0
  30. package/lib/callgraph/model/CallGraph.js +339 -0
  31. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +16 -0
  32. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -0
  33. package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -0
  34. package/lib/callgraph/pointerAnalysis/Context.d.ts +38 -0
  35. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -0
  36. package/lib/callgraph/pointerAnalysis/Context.js +156 -0
  37. package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +23 -0
  38. package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts.map +1 -0
  39. package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -0
  40. package/lib/callgraph/pointerAnalysis/Pag.d.ts +209 -0
  41. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -0
  42. package/lib/callgraph/pointerAnalysis/Pag.js +774 -0
  43. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +88 -0
  44. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -0
  45. package/lib/callgraph/pointerAnalysis/PagBuilder.js +821 -0
  46. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +64 -0
  47. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -0
  48. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +502 -0
  49. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +9 -0
  50. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -0
  51. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +57 -0
  52. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +58 -0
  53. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -0
  54. package/lib/callgraph/pointerAnalysis/PtsDS.js +234 -0
  55. package/lib/core/base/Constant.d.ts +17 -0
  56. package/lib/core/base/Constant.d.ts.map +1 -0
  57. package/lib/core/base/Constant.js +53 -0
  58. package/lib/core/base/Decorator.d.ts +15 -0
  59. package/lib/core/base/Decorator.d.ts.map +1 -0
  60. package/lib/core/base/Decorator.js +43 -0
  61. package/lib/core/base/DefUseChain.d.ts +9 -0
  62. package/lib/core/base/DefUseChain.d.ts.map +1 -0
  63. package/lib/core/base/DefUseChain.js +25 -0
  64. package/lib/core/base/Expr.d.ts +219 -0
  65. package/lib/core/base/Expr.d.ts.map +1 -0
  66. package/lib/core/base/Expr.js +896 -0
  67. package/lib/core/base/Local.d.ts +40 -0
  68. package/lib/core/base/Local.d.ts.map +1 -0
  69. package/lib/core/base/Local.js +101 -0
  70. package/lib/core/base/Position.d.ts +39 -0
  71. package/lib/core/base/Position.d.ts.map +1 -0
  72. package/lib/core/base/Position.js +86 -0
  73. package/lib/core/base/Ref.d.ts +75 -0
  74. package/lib/core/base/Ref.d.ts.map +1 -0
  75. package/lib/core/base/Ref.js +286 -0
  76. package/lib/core/base/Stmt.d.ts +109 -0
  77. package/lib/core/base/Stmt.d.ts.map +1 -0
  78. package/lib/core/base/Stmt.js +374 -0
  79. package/lib/core/base/Type.d.ts +220 -0
  80. package/lib/core/base/Type.d.ts.map +1 -0
  81. package/lib/core/base/Type.js +477 -0
  82. package/lib/core/base/Value.d.ts +11 -0
  83. package/lib/core/base/Value.d.ts.map +1 -0
  84. package/lib/core/base/Value.js +16 -0
  85. package/lib/core/common/ArkIRTransformer.d.ts +101 -0
  86. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -0
  87. package/lib/core/common/ArkIRTransformer.js +1674 -0
  88. package/lib/core/common/BodyBuilder.d.ts +10 -0
  89. package/lib/core/common/BodyBuilder.d.ts.map +1 -0
  90. package/lib/core/common/BodyBuilder.js +34 -0
  91. package/lib/core/common/Builtin.d.ts +35 -0
  92. package/lib/core/common/Builtin.d.ts.map +1 -0
  93. package/lib/core/common/Builtin.js +78 -0
  94. package/lib/core/common/CfgBuilder.d.ts +136 -0
  95. package/lib/core/common/CfgBuilder.d.ts.map +1 -0
  96. package/lib/core/common/CfgBuilder.js +1241 -0
  97. package/lib/core/common/Const.d.ts +15 -0
  98. package/lib/core/common/Const.d.ts.map +1 -0
  99. package/lib/core/common/Const.js +34 -0
  100. package/lib/core/common/DummyMainCreater.d.ts +48 -0
  101. package/lib/core/common/DummyMainCreater.d.ts.map +1 -0
  102. package/lib/core/common/DummyMainCreater.js +433 -0
  103. package/lib/core/common/EtsConst.d.ts +65 -0
  104. package/lib/core/common/EtsConst.d.ts.map +1 -0
  105. package/lib/core/common/EtsConst.js +918 -0
  106. package/lib/core/common/ExprUseReplacer.d.ts +18 -0
  107. package/lib/core/common/ExprUseReplacer.d.ts.map +1 -0
  108. package/lib/core/common/ExprUseReplacer.js +88 -0
  109. package/lib/core/common/IRUtils.d.ts +7 -0
  110. package/lib/core/common/IRUtils.d.ts.map +1 -0
  111. package/lib/core/common/IRUtils.js +39 -0
  112. package/lib/core/common/ModelUtils.d.ts +61 -0
  113. package/lib/core/common/ModelUtils.d.ts.map +1 -0
  114. package/lib/core/common/ModelUtils.js +628 -0
  115. package/lib/core/common/RefUseReplacer.d.ts +14 -0
  116. package/lib/core/common/RefUseReplacer.d.ts.map +1 -0
  117. package/lib/core/common/RefUseReplacer.js +50 -0
  118. package/lib/core/common/StmtUseReplacer.d.ts +16 -0
  119. package/lib/core/common/StmtUseReplacer.d.ts.map +1 -0
  120. package/lib/core/common/StmtUseReplacer.js +88 -0
  121. package/lib/core/common/TSConst.d.ts +11 -0
  122. package/lib/core/common/TSConst.d.ts.map +1 -0
  123. package/lib/core/common/TSConst.js +28 -0
  124. package/lib/core/common/TypeInference.d.ts +44 -0
  125. package/lib/core/common/TypeInference.d.ts.map +1 -0
  126. package/lib/core/common/TypeInference.js +519 -0
  127. package/lib/core/common/ValueUtil.d.ts +17 -0
  128. package/lib/core/common/ValueUtil.d.ts.map +1 -0
  129. package/lib/core/common/ValueUtil.js +71 -0
  130. package/lib/core/common/VisibleValue.d.ts +37 -0
  131. package/lib/core/common/VisibleValue.d.ts.map +1 -0
  132. package/lib/core/common/VisibleValue.js +212 -0
  133. package/lib/core/dataflow/DataflowProblem.d.ts +21 -0
  134. package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -0
  135. package/lib/core/dataflow/DataflowProblem.js +33 -0
  136. package/lib/core/dataflow/DataflowResult.d.ts +8 -0
  137. package/lib/core/dataflow/DataflowResult.d.ts.map +1 -0
  138. package/lib/core/dataflow/DataflowResult.js +26 -0
  139. package/lib/core/dataflow/DataflowSolver.d.ts +40 -0
  140. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -0
  141. package/lib/core/dataflow/DataflowSolver.js +318 -0
  142. package/lib/core/dataflow/Edge.d.ts +16 -0
  143. package/lib/core/dataflow/Edge.d.ts.map +1 -0
  144. package/lib/core/dataflow/Edge.js +40 -0
  145. package/lib/core/dataflow/Fact.d.ts +7 -0
  146. package/lib/core/dataflow/Fact.d.ts.map +1 -0
  147. package/lib/core/dataflow/Fact.js +24 -0
  148. package/lib/core/dataflow/TiantAnalysis.d.ts +37 -0
  149. package/lib/core/dataflow/TiantAnalysis.d.ts.map +1 -0
  150. package/lib/core/dataflow/TiantAnalysis.js +326 -0
  151. package/lib/core/dataflow/UndefinedVariable.d.ts +32 -0
  152. package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -0
  153. package/lib/core/dataflow/UndefinedVariable.js +235 -0
  154. package/lib/core/dataflow/Util.d.ts +8 -0
  155. package/lib/core/dataflow/Util.d.ts.map +1 -0
  156. package/lib/core/dataflow/Util.js +137 -0
  157. package/lib/core/graph/BasicBlock.d.ts +26 -0
  158. package/lib/core/graph/BasicBlock.d.ts.map +1 -0
  159. package/lib/core/graph/BasicBlock.js +92 -0
  160. package/lib/core/graph/Cfg.d.ts +29 -0
  161. package/lib/core/graph/Cfg.d.ts.map +1 -0
  162. package/lib/core/graph/Cfg.js +154 -0
  163. package/lib/core/graph/DominanceFinder.d.ts +16 -0
  164. package/lib/core/graph/DominanceFinder.d.ts.map +1 -0
  165. package/lib/core/graph/DominanceFinder.js +121 -0
  166. package/lib/core/graph/DominanceTree.d.ts +13 -0
  167. package/lib/core/graph/DominanceTree.d.ts.map +1 -0
  168. package/lib/core/graph/DominanceTree.js +70 -0
  169. package/lib/core/graph/ViewTree.d.ts +115 -0
  170. package/lib/core/graph/ViewTree.d.ts.map +1 -0
  171. package/lib/core/graph/ViewTree.js +16 -0
  172. package/lib/core/graph/builder/ViewTreeBuilder.d.ts +204 -0
  173. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -0
  174. package/lib/core/graph/builder/ViewTreeBuilder.js +1046 -0
  175. package/lib/core/model/ArkBody.d.ts +22 -0
  176. package/lib/core/model/ArkBody.d.ts.map +1 -0
  177. package/lib/core/model/ArkBody.js +63 -0
  178. package/lib/core/model/ArkClass.d.ts +110 -0
  179. package/lib/core/model/ArkClass.d.ts.map +1 -0
  180. package/lib/core/model/ArkClass.js +315 -0
  181. package/lib/core/model/ArkExport.d.ts +70 -0
  182. package/lib/core/model/ArkExport.d.ts.map +1 -0
  183. package/lib/core/model/ArkExport.js +143 -0
  184. package/lib/core/model/ArkField.d.ts +60 -0
  185. package/lib/core/model/ArkField.d.ts.map +1 -0
  186. package/lib/core/model/ArkField.js +157 -0
  187. package/lib/core/model/ArkFile.d.ts +62 -0
  188. package/lib/core/model/ArkFile.d.ts.map +1 -0
  189. package/lib/core/model/ArkFile.js +160 -0
  190. package/lib/core/model/ArkImport.d.ts +43 -0
  191. package/lib/core/model/ArkImport.d.ts.map +1 -0
  192. package/lib/core/model/ArkImport.js +109 -0
  193. package/lib/core/model/ArkMethod.d.ts +76 -0
  194. package/lib/core/model/ArkMethod.d.ts.map +1 -0
  195. package/lib/core/model/ArkMethod.js +235 -0
  196. package/lib/core/model/ArkNamespace.d.ts +65 -0
  197. package/lib/core/model/ArkNamespace.d.ts.map +1 -0
  198. package/lib/core/model/ArkNamespace.js +182 -0
  199. package/lib/core/model/ArkSignature.d.ts +98 -0
  200. package/lib/core/model/ArkSignature.d.ts.map +1 -0
  201. package/lib/core/model/ArkSignature.js +281 -0
  202. package/lib/core/model/builder/ArkClassBuilder.d.ts +13 -0
  203. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -0
  204. package/lib/core/model/builder/ArkClassBuilder.js +422 -0
  205. package/lib/core/model/builder/ArkExportBuilder.d.ts +25 -0
  206. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -0
  207. package/lib/core/model/builder/ArkExportBuilder.js +207 -0
  208. package/lib/core/model/builder/ArkFieldBuilder.d.ts +9 -0
  209. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -0
  210. package/lib/core/model/builder/ArkFieldBuilder.js +189 -0
  211. package/lib/core/model/builder/ArkFileBuilder.d.ts +10 -0
  212. package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -0
  213. package/lib/core/model/builder/ArkFileBuilder.js +164 -0
  214. package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -0
  215. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -0
  216. package/lib/core/model/builder/ArkImportBuilder.js +125 -0
  217. package/lib/core/model/builder/ArkMethodBuilder.d.ts +60 -0
  218. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -0
  219. package/lib/core/model/builder/ArkMethodBuilder.js +419 -0
  220. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -0
  221. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -0
  222. package/lib/core/model/builder/ArkNamespaceBuilder.js +171 -0
  223. package/lib/core/model/builder/ArkSignatureBuilder.d.ts +9 -0
  224. package/lib/core/model/builder/ArkSignatureBuilder.d.ts.map +1 -0
  225. package/lib/core/model/builder/ArkSignatureBuilder.js +40 -0
  226. package/lib/core/model/builder/builderUtils.d.ts +18 -0
  227. package/lib/core/model/builder/builderUtils.d.ts.map +1 -0
  228. package/lib/core/model/builder/builderUtils.js +449 -0
  229. package/lib/index.d.ts +77 -0
  230. package/lib/index.d.ts.map +1 -0
  231. package/lib/index.js +190 -0
  232. package/lib/save/ArkStream.d.ts +24 -0
  233. package/lib/save/ArkStream.d.ts.map +1 -0
  234. package/lib/save/ArkStream.js +83 -0
  235. package/lib/save/DotPrinter.d.ts +48 -0
  236. package/lib/save/DotPrinter.d.ts.map +1 -0
  237. package/lib/save/DotPrinter.js +229 -0
  238. package/lib/save/GraphPrinter.d.ts +17 -0
  239. package/lib/save/GraphPrinter.d.ts.map +1 -0
  240. package/lib/save/GraphPrinter.js +135 -0
  241. package/lib/save/JsonPrinter.d.ts +28 -0
  242. package/lib/save/JsonPrinter.d.ts.map +1 -0
  243. package/lib/save/JsonPrinter.js +511 -0
  244. package/lib/save/Printer.d.ts +17 -0
  245. package/lib/save/Printer.d.ts.map +1 -0
  246. package/lib/save/Printer.js +27 -0
  247. package/lib/save/PrinterBuilder.d.ts +38 -0
  248. package/lib/save/PrinterBuilder.d.ts.map +1 -0
  249. package/lib/save/PrinterBuilder.js +102 -0
  250. package/lib/save/serializeArkIR.d.ts +3 -0
  251. package/lib/save/serializeArkIR.d.ts.map +1 -0
  252. package/lib/save/serializeArkIR.js +166 -0
  253. package/lib/save/source/SourceBase.d.ts +32 -0
  254. package/lib/save/source/SourceBase.d.ts.map +1 -0
  255. package/lib/save/source/SourceBase.js +93 -0
  256. package/lib/save/source/SourceBody.d.ts +60 -0
  257. package/lib/save/source/SourceBody.d.ts.map +1 -0
  258. package/lib/save/source/SourceBody.js +292 -0
  259. package/lib/save/source/SourceClass.d.ts +27 -0
  260. package/lib/save/source/SourceClass.d.ts.map +1 -0
  261. package/lib/save/source/SourceClass.js +202 -0
  262. package/lib/save/source/SourceField.d.ts +15 -0
  263. package/lib/save/source/SourceField.d.ts.map +1 -0
  264. package/lib/save/source/SourceField.js +68 -0
  265. package/lib/save/source/SourceFilePrinter.d.ts +14 -0
  266. package/lib/save/source/SourceFilePrinter.d.ts.map +1 -0
  267. package/lib/save/source/SourceFilePrinter.js +73 -0
  268. package/lib/save/source/SourceMethod.d.ts +24 -0
  269. package/lib/save/source/SourceMethod.d.ts.map +1 -0
  270. package/lib/save/source/SourceMethod.js +170 -0
  271. package/lib/save/source/SourceModule.d.ts +18 -0
  272. package/lib/save/source/SourceModule.d.ts.map +1 -0
  273. package/lib/save/source/SourceModule.js +120 -0
  274. package/lib/save/source/SourceNamespace.d.ts +13 -0
  275. package/lib/save/source/SourceNamespace.d.ts.map +1 -0
  276. package/lib/save/source/SourceNamespace.js +80 -0
  277. package/lib/save/source/SourceStmt.d.ts +172 -0
  278. package/lib/save/source/SourceStmt.d.ts.map +1 -0
  279. package/lib/save/source/SourceStmt.js +757 -0
  280. package/lib/save/source/SourceTransformer.d.ts +37 -0
  281. package/lib/save/source/SourceTransformer.d.ts.map +1 -0
  282. package/lib/save/source/SourceTransformer.js +338 -0
  283. package/lib/save/source/SourceUtils.d.ts +25 -0
  284. package/lib/save/source/SourceUtils.d.ts.map +1 -0
  285. package/lib/save/source/SourceUtils.js +201 -0
  286. package/lib/transformer/FunctionTransformer.d.ts +3 -0
  287. package/lib/transformer/FunctionTransformer.d.ts.map +1 -0
  288. package/lib/transformer/FunctionTransformer.js +17 -0
  289. package/lib/transformer/SceneTransformer.d.ts +3 -0
  290. package/lib/transformer/SceneTransformer.d.ts.map +1 -0
  291. package/lib/transformer/SceneTransformer.js +17 -0
  292. package/lib/transformer/StaticSingleAssignmentFormer.d.ts +13 -0
  293. package/lib/transformer/StaticSingleAssignmentFormer.d.ts.map +1 -0
  294. package/lib/transformer/StaticSingleAssignmentFormer.js +259 -0
  295. package/lib/transformer/Transformer.d.ts +7 -0
  296. package/lib/transformer/Transformer.d.ts.map +1 -0
  297. package/lib/transformer/Transformer.js +22 -0
  298. package/lib/utils/CfgStructualAnalysis.d.ts +93 -0
  299. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -0
  300. package/lib/utils/CfgStructualAnalysis.js +955 -0
  301. package/lib/utils/FileUtils.d.ts +18 -0
  302. package/lib/utils/FileUtils.d.ts.map +1 -0
  303. package/lib/utils/FileUtils.js +131 -0
  304. package/lib/utils/callGraphUtils.d.ts +31 -0
  305. package/lib/utils/callGraphUtils.d.ts.map +1 -0
  306. package/lib/utils/callGraphUtils.js +208 -0
  307. package/lib/utils/entryMethodUtils.d.ts +16 -0
  308. package/lib/utils/entryMethodUtils.d.ts.map +1 -0
  309. package/lib/utils/entryMethodUtils.js +139 -0
  310. package/lib/utils/getAllFiles.d.ts +10 -0
  311. package/lib/utils/getAllFiles.d.ts.map +1 -0
  312. package/lib/utils/getAllFiles.js +91 -0
  313. package/lib/utils/json5parser.d.ts +7 -0
  314. package/lib/utils/json5parser.d.ts.map +1 -0
  315. package/lib/utils/json5parser.js +146 -0
  316. package/lib/utils/logger.d.ts +19 -0
  317. package/lib/utils/logger.d.ts.map +1 -0
  318. package/lib/utils/logger.js +90 -0
  319. package/lib/utils/pathTransfer.d.ts +2 -0
  320. package/lib/utils/pathTransfer.d.ts.map +1 -0
  321. package/lib/utils/pathTransfer.js +25 -0
  322. package/package.json +29 -0
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.UndefinedVariableSolver = exports.UndefinedVariableChecker = void 0;
18
+ const DataflowProblem_1 = require("./DataflowProblem");
19
+ const Local_1 = require("../base/Local");
20
+ const Type_1 = require("../base/Type");
21
+ const Stmt_1 = require("../base/Stmt");
22
+ const Constant_1 = require("../base/Constant");
23
+ const Ref_1 = require("../base/Ref");
24
+ const DataflowSolver_1 = require("./DataflowSolver");
25
+ const Expr_1 = require("../base/Expr");
26
+ const DataflowSolver_2 = require("../dataflow/DataflowSolver");
27
+ class UndefinedVariableChecker extends DataflowProblem_1.DataflowProblem {
28
+ constructor(stmt, method) {
29
+ super();
30
+ this.zeroValue = new Constant_1.Constant('undefined', Type_1.UndefinedType.getInstance());
31
+ this.entryPoint = stmt;
32
+ this.entryMethod = method;
33
+ this.scene = method.getDeclaringArkFile().getScene();
34
+ this.classMap = this.scene.getClassMap();
35
+ this.globalVariableMap = this.scene.getGlobalVariableMap();
36
+ }
37
+ getEntryPoint() {
38
+ return this.entryPoint;
39
+ }
40
+ getEntryMethod() {
41
+ return this.entryMethod;
42
+ }
43
+ isUndefined(val) {
44
+ if (val instanceof Constant_1.Constant) {
45
+ let constant = val;
46
+ if (constant.getType() instanceof Type_1.UndefinedType) {
47
+ return true;
48
+ }
49
+ }
50
+ return false;
51
+ }
52
+ getNormalFlowFunction(srcStmt, tgtStmt) {
53
+ let checkerInstance = this;
54
+ return new class {
55
+ getDataFacts(dataFact) {
56
+ let ret = new Set();
57
+ if (checkerInstance.getEntryPoint() == srcStmt && checkerInstance.getZeroValue() == dataFact) {
58
+ let entryMethod = checkerInstance.getEntryMethod();
59
+ const parameters = [...entryMethod.getCfg().getBlocks()][0].getStmts().slice(0, entryMethod.getParameters().length);
60
+ for (let i = 0; i < parameters.length; i++) {
61
+ const para = parameters[i].getDef();
62
+ if (para)
63
+ ret.add(para);
64
+ }
65
+ ret.add(checkerInstance.getZeroValue());
66
+ // 加入所有的全局变量和静态属性(may analysis)
67
+ const staticFields = entryMethod.getDeclaringArkClass().getStaticFields(checkerInstance.classMap);
68
+ for (const field of staticFields) {
69
+ const initializer = field.getInitializer();
70
+ if (initializer.length == 1 && initializer[0] instanceof Stmt_1.ArkAssignStmt && initializer[0].getRightOp() == undefined) {
71
+ ret.add(new Ref_1.ArkStaticFieldRef(field.getSignature()));
72
+ }
73
+ }
74
+ for (const local of entryMethod.getDeclaringArkClass().getGlobalVariable(checkerInstance.globalVariableMap)) {
75
+ ret.add(local);
76
+ }
77
+ return ret;
78
+ }
79
+ if (!(0, DataflowSolver_2.factEqual)(srcStmt.getDef(), dataFact)) {
80
+ if (!(dataFact instanceof Local_1.Local && dataFact.getName() == srcStmt.getDef().toString()))
81
+ ret.add(dataFact);
82
+ }
83
+ if (srcStmt instanceof Stmt_1.ArkAssignStmt) {
84
+ let ass = srcStmt;
85
+ let assigned = ass.getLeftOp();
86
+ let rightOp = ass.getRightOp();
87
+ if (checkerInstance.getZeroValue() == dataFact) {
88
+ if (checkerInstance.isUndefined(rightOp)) {
89
+ ret.add(assigned);
90
+ }
91
+ }
92
+ else if ((0, DataflowSolver_2.factEqual)(rightOp, dataFact) || rightOp.getType() instanceof Type_1.UndefinedType) {
93
+ ret.add(assigned);
94
+ }
95
+ else if (rightOp instanceof Ref_1.ArkInstanceFieldRef) {
96
+ const base = rightOp.getBase();
97
+ if (base == dataFact || !base.getDeclaringStmt() && base.getName() == dataFact.toString()) {
98
+ console.log("undefined base");
99
+ console.log(srcStmt.toString());
100
+ console.log(srcStmt.getOriginPositionInfo().toString());
101
+ }
102
+ }
103
+ else if (dataFact instanceof Ref_1.ArkInstanceFieldRef && rightOp == dataFact.getBase()) {
104
+ const field = new Ref_1.ArkInstanceFieldRef(srcStmt.getLeftOp(), dataFact.getFieldSignature());
105
+ ret.add(field);
106
+ }
107
+ }
108
+ return ret;
109
+ }
110
+ };
111
+ }
112
+ getCallFlowFunction(srcStmt, method) {
113
+ let checkerInstance = this;
114
+ return new class {
115
+ getDataFacts(dataFact) {
116
+ const ret = new Set();
117
+ if (checkerInstance.getZeroValue() == dataFact) {
118
+ ret.add(checkerInstance.getZeroValue());
119
+ // 加上调用函数能访问到的所有静态变量,如果不考虑多线程,加上所有变量,考虑则要统计之前已经处理过的变量并排除
120
+ for (const field of method.getDeclaringArkClass().getStaticFields(checkerInstance.classMap)) {
121
+ if (field.getInitializer() == undefined) {
122
+ ret.add(new Ref_1.ArkStaticFieldRef(field.getSignature()));
123
+ }
124
+ }
125
+ for (const local of method.getDeclaringArkClass().getGlobalVariable(checkerInstance.globalVariableMap)) {
126
+ ret.add(local);
127
+ }
128
+ }
129
+ else {
130
+ const callExpr = srcStmt.getExprs()[0];
131
+ if (callExpr instanceof Expr_1.ArkInstanceInvokeExpr && dataFact instanceof Ref_1.ArkInstanceFieldRef && callExpr.getBase().getName() == dataFact.getBase().getName()) {
132
+ // todo:base转this
133
+ const baseType = callExpr.getBase().getType();
134
+ const arkClass = checkerInstance.scene.getClass(baseType.getClassSignature());
135
+ const constructor = arkClass === null || arkClass === void 0 ? void 0 : arkClass.getMethodWithName("constructor");
136
+ const block = [...constructor.getCfg().getBlocks()][0];
137
+ for (const stmt of block.getStmts()) {
138
+ const def = stmt.getDef();
139
+ if (def && def instanceof Ref_1.ArkInstanceFieldRef && def.getBase().getName() == "this" && def.getFieldName() == dataFact.getFieldName()) {
140
+ ret.add(def);
141
+ break;
142
+ }
143
+ }
144
+ }
145
+ else if (callExpr instanceof Expr_1.ArkStaticInvokeExpr && dataFact instanceof Ref_1.ArkStaticFieldRef && callExpr.getMethodSignature().getDeclaringClassSignature() == dataFact.getFieldSignature().getDeclaringSignature()) {
146
+ ret.add(dataFact);
147
+ }
148
+ }
149
+ const callStmt = srcStmt;
150
+ const args = callStmt.getInvokeExpr().getArgs();
151
+ for (let i = 0; i < args.length; i++) {
152
+ if (args[i] == dataFact || checkerInstance.isUndefined(args[i]) && checkerInstance.getZeroValue() == dataFact) {
153
+ const realParameter = [...method.getCfg().getBlocks()][0].getStmts()[i].getDef();
154
+ if (realParameter)
155
+ ret.add(realParameter);
156
+ }
157
+ else if (dataFact instanceof Ref_1.ArkInstanceFieldRef && dataFact.getBase().getName() == args[i].toString()) {
158
+ const realParameter = [...method.getCfg().getBlocks()][0].getStmts()[i].getDef();
159
+ if (realParameter) {
160
+ const retRef = new Ref_1.ArkInstanceFieldRef(realParameter, dataFact.getFieldSignature());
161
+ ret.add(retRef);
162
+ }
163
+ }
164
+ }
165
+ return ret;
166
+ }
167
+ };
168
+ }
169
+ getExitToReturnFlowFunction(srcStmt, tgtStmt, callStmt) {
170
+ let checkerInstance = this;
171
+ return new class {
172
+ getDataFacts(dataFact) {
173
+ let ret = new Set();
174
+ if (dataFact == checkerInstance.getZeroValue()) {
175
+ ret.add(checkerInstance.getZeroValue());
176
+ }
177
+ if (dataFact instanceof Ref_1.ArkInstanceFieldRef && dataFact.getBase().getName() == "this") {
178
+ // todo:this转base。
179
+ const expr = callStmt.getExprs()[0];
180
+ if (expr instanceof Expr_1.ArkInstanceInvokeExpr) {
181
+ const fieldRef = new Ref_1.ArkInstanceFieldRef(expr.getBase(), dataFact.getFieldSignature());
182
+ ret.add(fieldRef);
183
+ }
184
+ }
185
+ if (!(callStmt instanceof Stmt_1.ArkAssignStmt)) {
186
+ return ret;
187
+ }
188
+ if (srcStmt instanceof Stmt_1.ArkReturnStmt) {
189
+ let ass = callStmt;
190
+ let leftOp = ass.getLeftOp();
191
+ let retVal = srcStmt.getOp();
192
+ if (dataFact == checkerInstance.getZeroValue()) {
193
+ ret.add(checkerInstance.getZeroValue());
194
+ if (checkerInstance.isUndefined(retVal)) {
195
+ ret.add(leftOp);
196
+ }
197
+ }
198
+ else if (retVal == dataFact) {
199
+ ret.add(leftOp);
200
+ }
201
+ }
202
+ return ret;
203
+ }
204
+ };
205
+ }
206
+ getCallToReturnFlowFunction(srcStmt, tgtStmt) {
207
+ let checkerInstance = this;
208
+ return new class {
209
+ getDataFacts(dataFact) {
210
+ const ret = new Set();
211
+ if (checkerInstance.getZeroValue() == dataFact) {
212
+ ret.add(checkerInstance.getZeroValue());
213
+ }
214
+ const defValue = srcStmt.getDef();
215
+ if (!(defValue && defValue == dataFact)) {
216
+ ret.add(dataFact);
217
+ }
218
+ return ret;
219
+ }
220
+ };
221
+ }
222
+ createZeroValue() {
223
+ return this.zeroValue;
224
+ }
225
+ getZeroValue() {
226
+ return this.zeroValue;
227
+ }
228
+ }
229
+ exports.UndefinedVariableChecker = UndefinedVariableChecker;
230
+ class UndefinedVariableSolver extends DataflowSolver_1.DataflowSolver {
231
+ constructor(problem, scene) {
232
+ super(problem, scene);
233
+ }
234
+ }
235
+ exports.UndefinedVariableSolver = UndefinedVariableSolver;
@@ -0,0 +1,8 @@
1
+ import { ArkInvokeStmt } from "../base/Stmt";
2
+ import { ArkMethod } from "../model/ArkMethod";
3
+ import { Scene } from "../../Scene";
4
+ export declare const INTERNAL_PARAMETER_SOURCE: string[];
5
+ export declare const INTERNAL_SINK_METHOD: string[];
6
+ export declare function Json2ArkMethod(str: string, scene: Scene): ArkMethod | null;
7
+ export declare function getRecallMethodInParam(stmt: ArkInvokeStmt): ArkMethod | null;
8
+ //# sourceMappingURL=Util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../../src/core/dataflow/Util.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,eAAO,MAAM,yBAAyB,EAAE,MAAM,EAE7C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAMxC,CAAA;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAsF1E;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAW5E"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getRecallMethodInParam = exports.Json2ArkMethod = exports.INTERNAL_SINK_METHOD = exports.INTERNAL_PARAMETER_SOURCE = void 0;
18
+ const Type_1 = require("../base/Type");
19
+ exports.INTERNAL_PARAMETER_SOURCE = [
20
+ '@ohos.app.ability.Want.d.ts: Want'
21
+ ];
22
+ exports.INTERNAL_SINK_METHOD = [
23
+ 'console.<@_UnknownProjectName/_UnknownFileName: .log()>',
24
+ 'console.<@_UnknownProjectName/_UnknownFileName: .error()>',
25
+ 'console.<@_UnknownProjectName/_UnknownFileName: .info()>',
26
+ 'console.<@_UnknownProjectName/_UnknownFileName: .warn()>',
27
+ 'console.<@_UnknownProjectName/_UnknownFileName: .assert()>'
28
+ ];
29
+ const filenamePrefix = '@etsSdk/api/';
30
+ function Json2ArkMethod(str, scene) {
31
+ const mes = str.split(': ');
32
+ const fileName = filenamePrefix + mes[0] + ': ';
33
+ const otherMes = mes.slice(1).join(': ').split('.');
34
+ if (otherMes.length < 3) {
35
+ return null;
36
+ }
37
+ const namespaceName = otherMes[0], className = otherMes[1], methodName = otherMes[2].split('(')[0];
38
+ let paramNames = [];
39
+ if (otherMes[2]) {
40
+ if (!otherMes[2].match(/\((.*?)\)/)) {
41
+ return null;
42
+ }
43
+ paramNames = otherMes[2].match(/\((.*?)\)/)[1].split(',').map((item) => item.replace(/\s/g, '')).filter((item) => item !== '');
44
+ }
45
+ const file = scene.getSdkArkFilesMap().get(fileName);
46
+ if (!file) {
47
+ // console.log("no file: " + fileName);
48
+ return null;
49
+ }
50
+ let arkClass = null;
51
+ if (namespaceName == "_") {
52
+ if (className == '_') {
53
+ arkClass = file.getDefaultClass();
54
+ }
55
+ else {
56
+ for (const clas of file.getClasses()) {
57
+ if (clas.getName() == className) {
58
+ arkClass = clas;
59
+ break;
60
+ }
61
+ }
62
+ }
63
+ }
64
+ else {
65
+ let arkNamespace = null;
66
+ for (const ns of file.getNamespaces()) {
67
+ if (ns.getName() == namespaceName) {
68
+ arkNamespace = ns;
69
+ break;
70
+ }
71
+ }
72
+ if (arkNamespace) {
73
+ if (className == '_') {
74
+ arkClass = arkNamespace.getDefaultClass();
75
+ }
76
+ else {
77
+ for (const clas of arkNamespace.getClasses()) {
78
+ if (clas.getName() == className) {
79
+ arkClass = clas;
80
+ break;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ // console.log("no namespace: " + namespaceName);
87
+ return null;
88
+ }
89
+ }
90
+ if (!arkClass) {
91
+ // console.log("no class: " + className);
92
+ return null;
93
+ }
94
+ else {
95
+ let arkMethod = null;
96
+ for (const method of arkClass.getMethods()) {
97
+ if (method.getName() == methodName) {
98
+ arkMethod = method;
99
+ break;
100
+ }
101
+ }
102
+ if (arkMethod && arkMethod.getParameters().length == paramNames.length) {
103
+ let paramEqual = true;
104
+ for (let i = 0; i < arkMethod.getParameters().length; i++) {
105
+ const param = arkMethod.getParameters()[i];
106
+ if (param.getName() + ':' + param.getType().toString() != paramNames[i]) {
107
+ paramEqual = false;
108
+ break;
109
+ }
110
+ }
111
+ if (paramEqual) {
112
+ return arkMethod;
113
+ }
114
+ }
115
+ else {
116
+ // console.log("no method: " + methodName);
117
+ return null;
118
+ }
119
+ }
120
+ return null;
121
+ }
122
+ exports.Json2ArkMethod = Json2ArkMethod;
123
+ // 如果调用回调函数的函数是项目内函数就不用管,会进函数内部执行,只有是sdk函数才需要分析
124
+ function getRecallMethodInParam(stmt) {
125
+ var _a;
126
+ for (const param of stmt.getInvokeExpr().getArgs()) {
127
+ if (param.getType() instanceof Type_1.FunctionType) {
128
+ const methodSignature = param.getType().getMethodSignature();
129
+ const method = (_a = stmt.getCfg()) === null || _a === void 0 ? void 0 : _a.getDeclaringMethod().getDeclaringArkClass().getMethod(methodSignature);
130
+ if (method) {
131
+ return method;
132
+ }
133
+ }
134
+ }
135
+ return null;
136
+ }
137
+ exports.getRecallMethodInParam = getRecallMethodInParam;
@@ -0,0 +1,26 @@
1
+ import { Stmt } from '../base/Stmt';
2
+ /**
3
+ * @category core/graph
4
+ */
5
+ export declare class BasicBlock {
6
+ private id;
7
+ private stmts;
8
+ private predecessorBlocks;
9
+ private successorBlocks;
10
+ constructor();
11
+ getId(): number;
12
+ setId(id: number): void;
13
+ getStmts(): Stmt[];
14
+ addStmt(stmt: Stmt): void;
15
+ getHead(): Stmt | null;
16
+ getTail(): Stmt | null;
17
+ getSuccessors(): BasicBlock[];
18
+ getPredecessors(): BasicBlock[];
19
+ addPredecessorBlock(block: BasicBlock): void;
20
+ setPredecessorBlock(idx: number, block: BasicBlock): boolean;
21
+ setSuccessorBlock(idx: number, block: BasicBlock): boolean;
22
+ addStmtToFirst(stmt: Stmt): void;
23
+ addSuccessorBlock(block: BasicBlock): void;
24
+ toString(): string;
25
+ }
26
+ //# sourceMappingURL=BasicBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicBlock.d.ts","sourceRoot":"","sources":["../../../src/core/graph/BasicBlock.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAoB;;IAKpC,KAAK,IAAI,MAAM;IAIf,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvB,QAAQ,IAAI,IAAI,EAAE;IAIlB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,OAAO,IAAI,IAAI,GAAG,IAAI;IAOtB,OAAO,IAAI,IAAI,GAAG,IAAI;IAQtB,aAAa,IAAI,UAAU,EAAE;IAI7B,eAAe,IAAI,UAAU,EAAE;IAI/B,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI5C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAQ5D,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAS1D,cAAc,CAAC,IAAI,EAAE,IAAI;IAKzB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI1C,QAAQ,IAAI,MAAM;CAO5B"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BasicBlock = void 0;
18
+ /**
19
+ * @category core/graph
20
+ */
21
+ class BasicBlock {
22
+ constructor() {
23
+ this.id = -1;
24
+ this.stmts = [];
25
+ this.predecessorBlocks = [];
26
+ this.successorBlocks = [];
27
+ }
28
+ getId() {
29
+ return this.id;
30
+ }
31
+ setId(id) {
32
+ this.id = id;
33
+ }
34
+ getStmts() {
35
+ return this.stmts;
36
+ }
37
+ addStmt(stmt) {
38
+ this.stmts.push(stmt);
39
+ }
40
+ getHead() {
41
+ if (this.stmts.length == 0) {
42
+ return null;
43
+ }
44
+ return this.stmts[0];
45
+ }
46
+ getTail() {
47
+ let size = this.stmts.length;
48
+ if (size == 0) {
49
+ return null;
50
+ }
51
+ return this.stmts[size - 1];
52
+ }
53
+ getSuccessors() {
54
+ return this.successorBlocks;
55
+ }
56
+ getPredecessors() {
57
+ return this.predecessorBlocks;
58
+ }
59
+ addPredecessorBlock(block) {
60
+ this.predecessorBlocks.push(block);
61
+ }
62
+ setPredecessorBlock(idx, block) {
63
+ if (idx < this.predecessorBlocks.length) {
64
+ this.predecessorBlocks[idx] = block;
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ setSuccessorBlock(idx, block) {
70
+ if (idx < this.successorBlocks.length) {
71
+ this.successorBlocks[idx] = block;
72
+ return true;
73
+ }
74
+ return false;
75
+ }
76
+ // Temp just for SSA
77
+ addStmtToFirst(stmt) {
78
+ this.stmts.splice(0, 0, stmt);
79
+ }
80
+ // Temp just for SSA
81
+ addSuccessorBlock(block) {
82
+ this.successorBlocks.push(block);
83
+ }
84
+ toString() {
85
+ let strs = [];
86
+ for (const stmt of this.stmts) {
87
+ strs.push(stmt.toString() + '\n');
88
+ }
89
+ return strs.join('');
90
+ }
91
+ }
92
+ exports.BasicBlock = BasicBlock;
@@ -0,0 +1,29 @@
1
+ import { DefUseChain } from '../base/DefUseChain';
2
+ import { Stmt } from '../base/Stmt';
3
+ import { ArkMethod } from '../model/ArkMethod';
4
+ import { BasicBlock } from './BasicBlock';
5
+ /**
6
+ * @category core/graph
7
+ */
8
+ export declare class Cfg {
9
+ private blocks;
10
+ private stmtToBlock;
11
+ private startingStmt;
12
+ private defUseChains;
13
+ private declaringMethod;
14
+ constructor();
15
+ getStmts(): Stmt[];
16
+ insertBefore(beforeStmt: Stmt, newStmt: Stmt): void;
17
+ addBlock(block: BasicBlock): void;
18
+ getBlocks(): Set<BasicBlock>;
19
+ getStartingBlock(): BasicBlock | undefined;
20
+ getStartingStmt(): Stmt;
21
+ setStartingStmt(newStartingStmt: Stmt): void;
22
+ getDeclaringMethod(): ArkMethod;
23
+ setDeclaringMethod(method: ArkMethod): void;
24
+ getDefUseChains(): DefUseChain[];
25
+ toString(): string;
26
+ buildDefUseStmt(): void;
27
+ buildDefUseChain(): void;
28
+ }
29
+ //# sourceMappingURL=Cfg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cfg.d.ts","sourceRoot":"","sources":["../../../src/core/graph/Cfg.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAgB,IAAI,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C;;GAEG;AACH,qBAAa,GAAG;IACZ,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAuD;IAE3E,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAA8B;;IAM9C,QAAQ,IAAI,IAAI,EAAE;IASlB,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAQnD,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASjC,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC;IAK5B,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAI1C,eAAe,IAAI,IAAI;IAIvB,eAAe,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI;IAI5C,kBAAkB,IAAI,SAAS;IAI/B,kBAAkB,CAAC,MAAM,EAAE,SAAS;IAIpC,eAAe,IAAI,WAAW,EAAE;IAKhC,QAAQ,IAAI,MAAM;IAIlB,eAAe;IAiBf,gBAAgB;CAyD1B"}