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,419 @@
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
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.addInitInConstructor = exports.buildInitMethod = exports.buildDefaultConstructor = exports.MethodParameter = exports.ArrayBindingPatternParameter = exports.ObjectBindingPatternParameter = exports.buildArkMethodFromArkClass = exports.buildDefaultArkMethodFromArkClass = void 0;
44
+ const Type_1 = require("../../base/Type");
45
+ const BodyBuilder_1 = require("../../common/BodyBuilder");
46
+ const ViewTreeBuilder_1 = require("../../graph/builder/ViewTreeBuilder");
47
+ const ArkClass_1 = require("../ArkClass");
48
+ const ArkMethod_1 = require("../ArkMethod");
49
+ const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
50
+ const builderUtils_1 = require("./builderUtils");
51
+ const logger_1 = __importStar(require("../../../utils/logger"));
52
+ const Ref_1 = require("../../base/Ref");
53
+ const ArkBody_1 = require("../ArkBody");
54
+ const Cfg_1 = require("../../graph/Cfg");
55
+ const Expr_1 = require("../../base/Expr");
56
+ const ArkSignature_1 = require("../ArkSignature");
57
+ const Stmt_1 = require("../../base/Stmt");
58
+ const BasicBlock_1 = require("../../graph/BasicBlock");
59
+ const Local_1 = require("../../base/Local");
60
+ const TSConst_1 = require("../../common/TSConst");
61
+ const Const_1 = require("../../common/Const");
62
+ const ArkSignatureBuilder_1 = require("./ArkSignatureBuilder");
63
+ const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkMethodBuilder');
64
+ function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node) {
65
+ mtd.setDeclaringArkClass(declaringClass);
66
+ const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.DEFAULT_ARK_METHOD_NAME, true);
67
+ const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
68
+ mtd.setSignature(methodSignature);
69
+ const defaultMethodNode = node ? node : sourceFile;
70
+ let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), defaultMethodNode, mtd, sourceFile);
71
+ mtd.setBodyBuilder(bodyBuilder);
72
+ }
73
+ exports.buildDefaultArkMethodFromArkClass = buildDefaultArkMethodFromArkClass;
74
+ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile, declaringMethod) {
75
+ mtd.setDeclaringArkClass(declaringClass);
76
+ if (ohos_typescript_1.default.isFunctionDeclaration(methodNode)) {
77
+ mtd.setAsteriskToken(methodNode.asteriskToken != undefined);
78
+ }
79
+ mtd.setCode(methodNode.getText(sourceFile));
80
+ const { line, character } = ohos_typescript_1.default.getLineAndCharacterOfPosition(sourceFile, methodNode.getStart(sourceFile));
81
+ mtd.setLine(line + 1);
82
+ mtd.setColumn(character + 1);
83
+ (0, builderUtils_1.buildModifiers)(methodNode, sourceFile).forEach((value) => {
84
+ mtd.addModifier(value);
85
+ });
86
+ if (methodNode.typeParameters) {
87
+ mtd.setGenericTypes((0, builderUtils_1.buildTypeParameters)(methodNode.typeParameters, sourceFile, mtd));
88
+ }
89
+ // build MethodSignature
90
+ const methodName = buildMethodName(methodNode, declaringClass, sourceFile, declaringMethod);
91
+ const methodParameters = [];
92
+ (0, builderUtils_1.buildParameters)(methodNode.parameters, mtd, sourceFile).forEach((parameter) => {
93
+ methodParameters.push(parameter);
94
+ });
95
+ let returnType = Type_1.UnknownType.getInstance();
96
+ if (methodNode.type) {
97
+ returnType = (0, builderUtils_1.buildGenericType)((0, builderUtils_1.buildReturnType)(methodNode.type, sourceFile, mtd), mtd);
98
+ }
99
+ const methodSubSignature = new ArkSignature_1.MethodSubSignature(methodName, methodParameters, returnType, mtd.isStatic());
100
+ const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
101
+ mtd.setSignature(methodSignature);
102
+ let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), methodNode, mtd, sourceFile);
103
+ mtd.setBodyBuilder(bodyBuilder);
104
+ if (mtd.hasBuilderDecorator()) {
105
+ mtd.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
106
+ }
107
+ else if (declaringClass.hasComponentDecorator() &&
108
+ mtd.getSubSignature().toString() == 'build()' &&
109
+ !mtd.containsModifier('StaticKeyword')) {
110
+ declaringClass.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
111
+ }
112
+ declaringClass.addMethod(mtd);
113
+ }
114
+ exports.buildArkMethodFromArkClass = buildArkMethodFromArkClass;
115
+ function buildMethodName(node, declaringClass, sourceFile, declaringMethod) {
116
+ let name = '';
117
+ if (ohos_typescript_1.default.isFunctionDeclaration(node) || ohos_typescript_1.default.isFunctionExpression(node)) {
118
+ if (node.name) {
119
+ name = node.name.text;
120
+ }
121
+ else {
122
+ name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
123
+ }
124
+ }
125
+ else if (ohos_typescript_1.default.isFunctionTypeNode(node)) {
126
+ if (node.name) {
127
+ //TODO: check name type
128
+ name = node.name.getText(sourceFile);
129
+ }
130
+ else {
131
+ name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
132
+ }
133
+ }
134
+ else if (ohos_typescript_1.default.isMethodDeclaration(node) || ohos_typescript_1.default.isMethodSignature(node)) {
135
+ if (ohos_typescript_1.default.isIdentifier(node.name)) {
136
+ name = node.name.text;
137
+ }
138
+ else if (ohos_typescript_1.default.isComputedPropertyName(node.name)) {
139
+ if (ohos_typescript_1.default.isIdentifier(node.name.expression)) {
140
+ name = node.name.expression.text;
141
+ }
142
+ else if (ohos_typescript_1.default.isPropertyAccessExpression(node.name.expression)) {
143
+ name = (0, builderUtils_1.handlePropertyAccessExpression)(node.name.expression);
144
+ }
145
+ else {
146
+ logger.warn('Other method ComputedPropertyName found!');
147
+ }
148
+ }
149
+ else {
150
+ logger.warn('Other method declaration type found!');
151
+ }
152
+ }
153
+ //TODO, hard code
154
+ else if (ohos_typescript_1.default.isConstructorDeclaration(node)) {
155
+ name = TSConst_1.CONSTRUCTOR_NAME;
156
+ }
157
+ else if (ohos_typescript_1.default.isConstructSignatureDeclaration(node)) {
158
+ name = 'construct-signature';
159
+ }
160
+ else if (ohos_typescript_1.default.isCallSignatureDeclaration(node)) {
161
+ name = Const_1.CALL_SIGNATURE_NAME;
162
+ }
163
+ else if (ohos_typescript_1.default.isGetAccessor(node) && ohos_typescript_1.default.isIdentifier(node.name)) {
164
+ name = 'Get-' + node.name.text;
165
+ }
166
+ else if (ohos_typescript_1.default.isSetAccessor(node) && ohos_typescript_1.default.isIdentifier(node.name)) {
167
+ name = 'Set-' + node.name.text;
168
+ }
169
+ else if (ohos_typescript_1.default.isArrowFunction(node)) {
170
+ name = buildAnonymousMethodName(node, declaringClass, declaringMethod);
171
+ }
172
+ return name;
173
+ }
174
+ function buildAnonymousMethodName(node, declaringClass, declaringMethod) {
175
+ let declaringMethodName = '';
176
+ if (declaringMethod) {
177
+ declaringMethodName = declaringMethod.getName() + '-';
178
+ }
179
+ const mtdName = 'AnonymousMethod-' + declaringMethodName + declaringClass.getAnonymousMethodNumber();
180
+ return mtdName;
181
+ }
182
+ class ObjectBindingPatternParameter {
183
+ constructor() {
184
+ this.propertyName = '';
185
+ this.name = '';
186
+ this.optional = false;
187
+ }
188
+ getName() {
189
+ return this.name;
190
+ }
191
+ setName(name) {
192
+ this.name = name;
193
+ }
194
+ getPropertyName() {
195
+ return this.propertyName;
196
+ }
197
+ setPropertyName(propertyName) {
198
+ this.propertyName = propertyName;
199
+ }
200
+ isOptional() {
201
+ return this.optional;
202
+ }
203
+ setOptional(optional) {
204
+ this.optional = optional;
205
+ }
206
+ }
207
+ exports.ObjectBindingPatternParameter = ObjectBindingPatternParameter;
208
+ class ArrayBindingPatternParameter {
209
+ constructor() {
210
+ this.propertyName = '';
211
+ this.name = '';
212
+ this.optional = false;
213
+ }
214
+ getName() {
215
+ return this.name;
216
+ }
217
+ setName(name) {
218
+ this.name = name;
219
+ }
220
+ getPropertyName() {
221
+ return this.propertyName;
222
+ }
223
+ setPropertyName(propertyName) {
224
+ this.propertyName = propertyName;
225
+ }
226
+ isOptional() {
227
+ return this.optional;
228
+ }
229
+ setOptional(optional) {
230
+ this.optional = optional;
231
+ }
232
+ }
233
+ exports.ArrayBindingPatternParameter = ArrayBindingPatternParameter;
234
+ class MethodParameter {
235
+ constructor() {
236
+ this.name = '';
237
+ this.optional = false;
238
+ this.dotDotDotToken = false;
239
+ this.objElements = [];
240
+ this.arrayElements = [];
241
+ }
242
+ getName() {
243
+ return this.name;
244
+ }
245
+ setName(name) {
246
+ this.name = name;
247
+ }
248
+ getType() {
249
+ return this.type;
250
+ }
251
+ setType(type) {
252
+ this.type = type;
253
+ }
254
+ isOptional() {
255
+ return this.optional;
256
+ }
257
+ setOptional(optional) {
258
+ this.optional = optional;
259
+ }
260
+ hasDotDotDotToken() {
261
+ return this.dotDotDotToken;
262
+ }
263
+ setDotDotDotToken(dotDotDotToken) {
264
+ this.dotDotDotToken = dotDotDotToken;
265
+ }
266
+ addObjElement(element) {
267
+ this.objElements.push(element);
268
+ }
269
+ getObjElements() {
270
+ return this.objElements;
271
+ }
272
+ setObjElements(objElements) {
273
+ this.objElements = objElements;
274
+ }
275
+ addArrayElement(element) {
276
+ this.arrayElements.push(element);
277
+ }
278
+ getArrayElements() {
279
+ return this.arrayElements;
280
+ }
281
+ setArrayElements(arrayElements) {
282
+ this.arrayElements = arrayElements;
283
+ }
284
+ }
285
+ exports.MethodParameter = MethodParameter;
286
+ function needDefaultConstructorInClass(arkClass) {
287
+ const originClassType = arkClass.getCategory();
288
+ return arkClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME) == null &&
289
+ (originClassType == ArkClass_1.ClassCategory.CLASS || originClassType == ArkClass_1.ClassCategory.OBJECT) &&
290
+ arkClass.getName() != Const_1.DEFAULT_ARK_CLASS_NAME &&
291
+ !arkClass.getModifiers().has(TSConst_1.DECLARE_KEYWORD);
292
+ }
293
+ function buildDefaultConstructor(arkClass) {
294
+ if (!needDefaultConstructorInClass(arkClass)) {
295
+ return false;
296
+ }
297
+ let parentConstructor = null;
298
+ let superClass = arkClass.getSuperClass() || null;
299
+ while (superClass != null) {
300
+ parentConstructor = superClass.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
301
+ if (parentConstructor != null) {
302
+ break;
303
+ }
304
+ superClass = superClass.getSuperClass() || null;
305
+ }
306
+ const defaultConstructor = new ArkMethod_1.ArkMethod();
307
+ defaultConstructor.setDeclaringArkClass(arkClass);
308
+ defaultConstructor.setCode('');
309
+ defaultConstructor.setIsGeneratedFlag(true);
310
+ const thisLocal = new Local_1.Local(TSConst_1.THIS_NAME);
311
+ const locals = new Set([thisLocal]);
312
+ const basicBlock = new BasicBlock_1.BasicBlock();
313
+ let startingStmt = new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(new Type_1.ClassType(arkClass.getSignature())));
314
+ basicBlock.addStmt(startingStmt);
315
+ if (parentConstructor != null) {
316
+ const methodParameters = [];
317
+ parentConstructor.getParameters().forEach(parameter => {
318
+ methodParameters.push(parameter);
319
+ });
320
+ let returnType = parentConstructor.getReturnType();
321
+ const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, methodParameters, returnType, defaultConstructor.isStatic());
322
+ const methodSignature = new ArkSignature_1.MethodSignature(defaultConstructor.getDeclaringArkClass().getSignature(), methodSubSignature);
323
+ defaultConstructor.setSignature(methodSignature);
324
+ const stmts = [];
325
+ let index = 0;
326
+ const parameterLocals = [];
327
+ for (const methodParameter of defaultConstructor.getParameters()) {
328
+ const parameterRef = new Ref_1.ArkParameterRef(index, methodParameter.getType());
329
+ const parameterLocal = new Local_1.Local(methodParameter.getName(), parameterRef.getType());
330
+ locals.add(parameterLocal);
331
+ parameterLocals.push(parameterLocal);
332
+ stmts.push(new Stmt_1.ArkAssignStmt(parameterLocal, parameterRef));
333
+ index++;
334
+ }
335
+ const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parentConstructor.getParameters(), defaultConstructor.getReturnType());
336
+ const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getSignature(), superMethodSubSignature);
337
+ const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterLocals);
338
+ const superInvokeStmt = new Stmt_1.ArkInvokeStmt(superInvokeExpr);
339
+ basicBlock.addStmt(superInvokeStmt);
340
+ const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
341
+ basicBlock.addStmt(returnVoidStmt);
342
+ }
343
+ else {
344
+ const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(TSConst_1.CONSTRUCTOR_NAME);
345
+ const methodSignature = new ArkSignature_1.MethodSignature(defaultConstructor.getDeclaringArkClass().getSignature(), methodSubSignature);
346
+ defaultConstructor.setSignature(methodSignature);
347
+ if (arkClass.getSuperClass()) {
348
+ const superClass = arkClass.getSuperClass();
349
+ const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, [], Type_1.UnknownType.getInstance());
350
+ const superMethodSignature = new ArkSignature_1.MethodSignature(superClass.getSignature(), superMethodSubSignature);
351
+ const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, []);
352
+ const superInvokeStmt = new Stmt_1.ArkInvokeStmt(superInvokeExpr);
353
+ basicBlock.addStmt(superInvokeStmt);
354
+ const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
355
+ basicBlock.addStmt(returnVoidStmt);
356
+ }
357
+ else {
358
+ const returnVoidStmt = new Stmt_1.ArkReturnVoidStmt();
359
+ basicBlock.addStmt(returnVoidStmt);
360
+ }
361
+ }
362
+ const cfg = new Cfg_1.Cfg();
363
+ cfg.addBlock(basicBlock);
364
+ cfg.setStartingStmt(startingStmt);
365
+ cfg.setDeclaringMethod(defaultConstructor);
366
+ cfg.getStmts().forEach(s => s.setCfg(cfg));
367
+ const originalCfg = new Cfg_1.Cfg();
368
+ defaultConstructor.setBody(new ArkBody_1.ArkBody(locals, originalCfg, cfg, new Map(), new Map()));
369
+ arkClass.addMethod(defaultConstructor);
370
+ return true;
371
+ }
372
+ exports.buildDefaultConstructor = buildDefaultConstructor;
373
+ function buildInitMethod(initMethod, stmtMap, thisLocal) {
374
+ const classType = new Type_1.ClassType(initMethod.getDeclaringArkClass().getSignature());
375
+ const assignStmt = new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(classType));
376
+ const block = new BasicBlock_1.BasicBlock();
377
+ block.addStmt(assignStmt);
378
+ const locals = new Set();
379
+ for (const stmt of stmtMap.keys()) {
380
+ block.addStmt(stmt);
381
+ if (stmt.getDef() && stmt.getDef() instanceof Local_1.Local) {
382
+ locals.add(stmt.getDef());
383
+ }
384
+ }
385
+ block.addStmt(new Stmt_1.ArkReturnVoidStmt());
386
+ const cfg = new Cfg_1.Cfg();
387
+ cfg.addBlock(block);
388
+ for (const stmt of block.getStmts()) {
389
+ stmt.setCfg(cfg);
390
+ }
391
+ cfg.setStartingStmt(assignStmt);
392
+ cfg.buildDefUseStmt();
393
+ cfg.setDeclaringMethod(initMethod);
394
+ initMethod.setBody(new ArkBody_1.ArkBody(locals, new Cfg_1.Cfg(), cfg, stmtMap, new Map()));
395
+ }
396
+ exports.buildInitMethod = buildInitMethod;
397
+ function addInitInConstructor(arkClass) {
398
+ var _a, _b;
399
+ for (const method of arkClass.getMethods(true)) {
400
+ if (method.getName() == TSConst_1.CONSTRUCTOR_NAME) {
401
+ const thisLocal = (_a = method.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().get(TSConst_1.THIS_NAME);
402
+ if (!thisLocal) {
403
+ continue;
404
+ }
405
+ const initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, arkClass.getInstanceInitMethod().getSignature(), []));
406
+ const blocks = (_b = method.getCfg()) === null || _b === void 0 ? void 0 : _b.getBlocks();
407
+ if (!blocks) {
408
+ continue;
409
+ }
410
+ const firstBlockStmts = [...blocks][0].getStmts();
411
+ let index = 0;
412
+ if (firstBlockStmts[0].getDef() instanceof Local_1.Local && firstBlockStmts[0].getDef().getName() == TSConst_1.THIS_NAME) {
413
+ index = 1;
414
+ }
415
+ firstBlockStmts.splice(index, 0, initInvokeStmt);
416
+ }
417
+ }
418
+ }
419
+ exports.addInitInConstructor = addInitInConstructor;
@@ -0,0 +1,5 @@
1
+ import { ArkFile } from '../ArkFile';
2
+ import ts from 'ohos-typescript';
3
+ import { ArkNamespace } from '../ArkNamespace';
4
+ export declare function buildArkNamespace(node: ts.ModuleDeclaration, declaringInstance: ArkFile | ArkNamespace, ns: ArkNamespace, sourceFile: ts.SourceFile): void;
5
+ //# sourceMappingURL=ArkNamespaceBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAuDnJ"}
@@ -0,0 +1,171 @@
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
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.buildArkNamespace = void 0;
44
+ const Position_1 = require("../../base/Position");
45
+ const ArkClassBuilder_1 = require("./ArkClassBuilder");
46
+ const ArkFile_1 = require("../ArkFile");
47
+ const ArkMethodBuilder_1 = require("./ArkMethodBuilder");
48
+ const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
49
+ const ArkNamespace_1 = require("../ArkNamespace");
50
+ const builderUtils_1 = require("./builderUtils");
51
+ const logger_1 = __importStar(require("../../../utils/logger"));
52
+ const ArkExportBuilder_1 = require("./ArkExportBuilder");
53
+ const ArkClass_1 = require("../ArkClass");
54
+ const ArkMethod_1 = require("../ArkMethod");
55
+ const ArkSignature_1 = require("../ArkSignature");
56
+ const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkNamespaceBuilder');
57
+ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
58
+ var _a;
59
+ // modifiers
60
+ if (node.modifiers) {
61
+ (0, builderUtils_1.buildModifiers)(node, sourceFile).forEach((modifier) => {
62
+ ns.addModifier(modifier);
63
+ });
64
+ }
65
+ if (declaringInstance instanceof ArkFile_1.ArkFile) {
66
+ ns.setDeclaringArkFile(declaringInstance);
67
+ }
68
+ else {
69
+ ns.setDeclaringArkNamespace(declaringInstance);
70
+ ns.setDeclaringArkFile(declaringInstance.getDeclaringArkFile());
71
+ }
72
+ ns.setDeclaringInstance(declaringInstance);
73
+ const namespaceName = node.name.text;
74
+ const namespaceSignature = new ArkSignature_1.NamespaceSignature(namespaceName, ns.getDeclaringArkFile().getFileSignature(), ((_a = ns.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
75
+ ns.setSignature(namespaceSignature);
76
+ // TODO: whether needed?
77
+ ns.setCode(node.getText(sourceFile));
78
+ // set line and column
79
+ const { line, character } = ohos_typescript_1.default.getLineAndCharacterOfPosition(sourceFile, node.getStart(sourceFile));
80
+ ns.setLine(line + 1);
81
+ ns.setColumn(character + 1);
82
+ genDefaultArkClass(ns, node, sourceFile);
83
+ // build ns member
84
+ if (node.body) {
85
+ if (ohos_typescript_1.default.isModuleBlock(node.body)) {
86
+ buildNamespaceMembers(node.body, ns, sourceFile);
87
+ }
88
+ // NamespaceDeclaration extends ModuleDeclaration
89
+ //TODO: Check
90
+ else if (ohos_typescript_1.default.isModuleDeclaration(node.body)) {
91
+ logger.warn("This ModuleBody is an NamespaceDeclaration.");
92
+ let childNs = new ArkNamespace_1.ArkNamespace();
93
+ buildArkNamespace(node.body, ns, childNs, sourceFile);
94
+ }
95
+ else if (ohos_typescript_1.default.isIdentifier(node.body)) {
96
+ logger.warn("ModuleBody is Identifier.");
97
+ }
98
+ else {
99
+ logger.warn("JSDocNamespaceDeclaration found.");
100
+ }
101
+ }
102
+ else {
103
+ logger.warn("JSDocNamespaceDeclaration found.");
104
+ }
105
+ }
106
+ exports.buildArkNamespace = buildArkNamespace;
107
+ // TODO: check and update
108
+ function buildNamespaceMembers(node, namespace, sourceFile) {
109
+ const statements = node.statements;
110
+ statements.forEach((child) => {
111
+ if (ohos_typescript_1.default.isModuleDeclaration(child)
112
+ //child.kind === ts.SyntaxKind.ModuleDeclaration
113
+ ) {
114
+ let childNs = new ArkNamespace_1.ArkNamespace();
115
+ childNs.setDeclaringArkNamespace(namespace);
116
+ childNs.setDeclaringArkFile(namespace.getDeclaringArkFile());
117
+ buildArkNamespace(child, namespace, childNs, sourceFile);
118
+ namespace.addNamespace(childNs);
119
+ if (childNs.isExported()) {
120
+ namespace.addExportInfo((0, ArkExportBuilder_1.buildExportInfo)(childNs, namespace.getDeclaringArkFile(), Position_1.LineColPosition.buildFromNode(child, sourceFile)));
121
+ }
122
+ }
123
+ else if (ohos_typescript_1.default.isClassDeclaration(child) ||
124
+ ohos_typescript_1.default.isInterfaceDeclaration(child) ||
125
+ ohos_typescript_1.default.isEnumDeclaration(child) ||
126
+ ohos_typescript_1.default.isStructDeclaration(child)) {
127
+ let cls = new ArkClass_1.ArkClass();
128
+ (0, ArkClassBuilder_1.buildNormalArkClassFromArkNamespace)(child, namespace, cls, sourceFile);
129
+ namespace.addArkClass(cls);
130
+ if (cls.isExported()) {
131
+ namespace.addExportInfo((0, ArkExportBuilder_1.buildExportInfo)(cls, namespace.getDeclaringArkFile(), Position_1.LineColPosition.buildFromNode(child, sourceFile)));
132
+ }
133
+ }
134
+ // TODO: Check
135
+ else if (ohos_typescript_1.default.isMethodDeclaration(child)) {
136
+ logger.warn("This is a MethodDeclaration in ArkNamespace.");
137
+ let mthd = new ArkMethod_1.ArkMethod();
138
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, namespace.getDefaultClass(), mthd, sourceFile);
139
+ namespace.getDefaultClass().addMethod(mthd);
140
+ if (mthd.isExported()) {
141
+ namespace.addExportInfo((0, ArkExportBuilder_1.buildExportInfo)(mthd, namespace.getDeclaringArkFile(), Position_1.LineColPosition.buildFromNode(child, sourceFile)));
142
+ }
143
+ }
144
+ else if (ohos_typescript_1.default.isFunctionDeclaration(child)) {
145
+ let mthd = new ArkMethod_1.ArkMethod();
146
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, namespace.getDefaultClass(), mthd, sourceFile);
147
+ namespace.getDefaultClass().addMethod(mthd);
148
+ if (mthd.isExported()) {
149
+ namespace.addExportInfo((0, ArkExportBuilder_1.buildExportInfo)(mthd, namespace.getDeclaringArkFile(), Position_1.LineColPosition.buildFromNode(child, sourceFile)));
150
+ }
151
+ }
152
+ else if (ohos_typescript_1.default.isExportDeclaration(child)) {
153
+ (0, ArkExportBuilder_1.buildExportDeclaration)(child, sourceFile, namespace.getDeclaringArkFile())
154
+ .forEach(item => namespace.addExportInfo(item));
155
+ }
156
+ else if (ohos_typescript_1.default.isExportAssignment(child)) {
157
+ (0, ArkExportBuilder_1.buildExportAssignment)(child, sourceFile, namespace.getDeclaringArkFile())
158
+ .forEach(item => namespace.addExportInfo(item));
159
+ }
160
+ else {
161
+ logger.info('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
162
+ // join default method
163
+ }
164
+ });
165
+ }
166
+ function genDefaultArkClass(ns, node, sourceFile) {
167
+ let defaultClass = new ArkClass_1.ArkClass();
168
+ (0, ArkClassBuilder_1.buildDefaultArkClassFromArkNamespace)(ns, defaultClass, node, sourceFile);
169
+ ns.setDefaultClass(defaultClass);
170
+ ns.addArkClass(defaultClass);
171
+ }
@@ -0,0 +1,9 @@
1
+ import { ClassSignature, FieldSignature, MethodSignature, MethodSubSignature } from '../ArkSignature';
2
+ export declare class ArkSignatureBuilder {
3
+ static buildMethodSignatureFromClassNameAndMethodName(className: string, methodName: string, staticFlag?: boolean): MethodSignature;
4
+ static buildMethodSignatureFromMethodName(methodName: string, staticFlag?: boolean): MethodSignature;
5
+ static buildMethodSubSignatureFromMethodName(methodName: string, staticFlag?: boolean): MethodSubSignature;
6
+ static buildClassSignatureFromClassName(className: string): ClassSignature;
7
+ static buildFieldSignatureFromFieldName(fieldName: string, staticFlag?: boolean): FieldSignature;
8
+ }
9
+ //# sourceMappingURL=ArkSignatureBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArkSignatureBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkSignatureBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAiB,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrH,qBAAa,mBAAmB;WACd,8CAA8C,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EACrC,UAAU,GAAE,OAAe,GAAG,eAAe;WAM5F,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,eAAe;WAKpG,qCAAqC,CAAC,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,OAAe,GAAG,kBAAkB;WAItF,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;WAInE,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,cAAc;CAGjH"}
@@ -0,0 +1,40 @@
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.ArkSignatureBuilder = void 0;
18
+ const ArkSignature_1 = require("../ArkSignature");
19
+ const Type_1 = require("../../base/Type");
20
+ class ArkSignatureBuilder {
21
+ static buildMethodSignatureFromClassNameAndMethodName(className, methodName, staticFlag = false) {
22
+ const classSignature = this.buildClassSignatureFromClassName(className);
23
+ const methodSubSignature = this.buildMethodSubSignatureFromMethodName(methodName, staticFlag);
24
+ return new ArkSignature_1.MethodSignature(classSignature, methodSubSignature);
25
+ }
26
+ static buildMethodSignatureFromMethodName(methodName, staticFlag = false) {
27
+ const methodSubSignature = this.buildMethodSubSignatureFromMethodName(methodName, staticFlag);
28
+ return new ArkSignature_1.MethodSignature(ArkSignature_1.ClassSignature.DEFAULT, methodSubSignature);
29
+ }
30
+ static buildMethodSubSignatureFromMethodName(methodName, staticFlag = false) {
31
+ return new ArkSignature_1.MethodSubSignature(methodName, [], Type_1.UnknownType.getInstance(), staticFlag);
32
+ }
33
+ static buildClassSignatureFromClassName(className) {
34
+ return new ArkSignature_1.ClassSignature(className, ArkSignature_1.FileSignature.DEFAULT);
35
+ }
36
+ static buildFieldSignatureFromFieldName(fieldName, staticFlag = false) {
37
+ return new ArkSignature_1.FieldSignature(fieldName, ArkSignature_1.ClassSignature.DEFAULT, Type_1.UnknownType.getInstance(), staticFlag);
38
+ }
39
+ }
40
+ exports.ArkSignatureBuilder = ArkSignatureBuilder;
@@ -0,0 +1,18 @@
1
+ import ts, { HeritageClause, ParameterDeclaration, TypeNode, TypeParameterDeclaration } from 'ohos-typescript';
2
+ import { GenericType, Type } from '../../base/Type';
3
+ import { ArkField } from '../ArkField';
4
+ import { ArkClass } from '../ArkClass';
5
+ import { ArkMethod } from '../ArkMethod';
6
+ import { Decorator } from '../../base/Decorator';
7
+ import { MethodParameter } from './ArkMethodBuilder';
8
+ export declare function handleQualifiedName(node: ts.QualifiedName): string;
9
+ export declare function handlePropertyAccessExpression(node: ts.PropertyAccessExpression): string;
10
+ export declare function buildModifiers(node: ts.Node, sourceFile: ts.SourceFile): Set<string | Decorator>;
11
+ export declare function buildHeritageClauses(heritageClauses: ts.NodeArray<HeritageClause>): Map<string, string>;
12
+ export declare function buildTypeParameters(typeParameters: ts.NodeArray<TypeParameterDeclaration>, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass): GenericType[];
13
+ export declare function buildParameters(params: ts.NodeArray<ParameterDeclaration>, arkInstance: ArkMethod | ArkField, sourceFile: ts.SourceFile): MethodParameter[];
14
+ export declare function buildGenericType(type: Type, arkInstance: ArkMethod | ArkField): Type;
15
+ export declare function buildReturnType(node: TypeNode, sourceFile: ts.SourceFile, method: ArkMethod): Type;
16
+ export declare function tsNode2Type(typeNode: ts.TypeNode | ts.TypeParameterDeclaration, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass | ArkField): Type;
17
+ export declare function buildTypeFromPreStr(preStr: string): Type;
18
+ //# sourceMappingURL=builderUtils.d.ts.map