arkanalyzer 1.0.19 → 1.0.21

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 (290) hide show
  1. package/lib/Config.d.ts +70 -70
  2. package/lib/Config.js +198 -198
  3. package/lib/Scene.d.ts +316 -310
  4. package/lib/Scene.d.ts.map +1 -1
  5. package/lib/Scene.js +1316 -1271
  6. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -28
  7. package/lib/callgraph/algorithm/AbstractAnalysis.js +144 -144
  8. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +10 -10
  9. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +69 -69
  10. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +15 -15
  11. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +146 -146
  12. package/lib/callgraph/common/Statistics.d.ts +57 -57
  13. package/lib/callgraph/common/Statistics.js +228 -228
  14. package/lib/callgraph/model/CallGraph.d.ts +96 -96
  15. package/lib/callgraph/model/CallGraph.js +354 -354
  16. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +15 -15
  17. package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -106
  18. package/lib/callgraph/pointerAnalysis/Context.d.ts +37 -37
  19. package/lib/callgraph/pointerAnalysis/Context.js +155 -155
  20. package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +22 -22
  21. package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -104
  22. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +5 -5
  23. package/lib/callgraph/pointerAnalysis/PTAUtils.js +46 -46
  24. package/lib/callgraph/pointerAnalysis/Pag.d.ts +261 -261
  25. package/lib/callgraph/pointerAnalysis/Pag.js +930 -930
  26. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +157 -157
  27. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  28. package/lib/callgraph/pointerAnalysis/PagBuilder.js +1399 -1397
  29. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +72 -72
  30. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +573 -573
  31. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +15 -15
  32. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +81 -81
  33. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +80 -80
  34. package/lib/callgraph/pointerAnalysis/PtsDS.js +308 -308
  35. package/lib/core/base/Constant.d.ts +48 -48
  36. package/lib/core/base/Constant.js +103 -103
  37. package/lib/core/base/Decorator.d.ts +15 -15
  38. package/lib/core/base/Decorator.js +46 -46
  39. package/lib/core/base/DefUseChain.d.ts +8 -8
  40. package/lib/core/base/DefUseChain.js +25 -25
  41. package/lib/core/base/Expr.d.ts +340 -340
  42. package/lib/core/base/Expr.js +917 -917
  43. package/lib/core/base/Local.d.ts +104 -104
  44. package/lib/core/base/Local.js +176 -176
  45. package/lib/core/base/Position.d.ts +30 -30
  46. package/lib/core/base/Position.js +147 -147
  47. package/lib/core/base/Ref.d.ts +173 -173
  48. package/lib/core/base/Ref.js +374 -374
  49. package/lib/core/base/Stmt.d.ts +237 -237
  50. package/lib/core/base/Stmt.js +525 -525
  51. package/lib/core/base/Trap.d.ts +8 -8
  52. package/lib/core/base/Trap.js +30 -30
  53. package/lib/core/base/Type.d.ts +308 -308
  54. package/lib/core/base/Type.js +639 -639
  55. package/lib/core/base/TypeExpr.d.ts +71 -71
  56. package/lib/core/base/TypeExpr.js +155 -155
  57. package/lib/core/base/Value.d.ts +32 -32
  58. package/lib/core/base/Value.js +16 -16
  59. package/lib/core/common/ArkError.d.ts +14 -14
  60. package/lib/core/common/ArkError.js +28 -28
  61. package/lib/core/common/ArkIRTransformer.d.ts +67 -67
  62. package/lib/core/common/ArkIRTransformer.js +690 -690
  63. package/lib/core/common/ArkValueTransformer.d.ts +89 -89
  64. package/lib/core/common/ArkValueTransformer.js +1478 -1478
  65. package/lib/core/common/Builtin.d.ts +36 -36
  66. package/lib/core/common/Builtin.js +81 -81
  67. package/lib/core/common/Const.d.ts +21 -21
  68. package/lib/core/common/Const.js +43 -43
  69. package/lib/core/common/DummyMainCreater.d.ts +46 -42
  70. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  71. package/lib/core/common/DummyMainCreater.js +319 -300
  72. package/lib/core/common/EtsConst.d.ts +73 -73
  73. package/lib/core/common/EtsConst.js +1021 -1021
  74. package/lib/core/common/ExprUseReplacer.d.ts +21 -21
  75. package/lib/core/common/ExprUseReplacer.js +124 -124
  76. package/lib/core/common/IRInference.d.ts +36 -36
  77. package/lib/core/common/IRInference.d.ts.map +1 -1
  78. package/lib/core/common/IRInference.js +651 -648
  79. package/lib/core/common/IRUtils.d.ts +18 -18
  80. package/lib/core/common/IRUtils.js +141 -141
  81. package/lib/core/common/ModelUtils.d.ts +70 -70
  82. package/lib/core/common/ModelUtils.js +712 -712
  83. package/lib/core/common/RefUseReplacer.d.ts +13 -13
  84. package/lib/core/common/RefUseReplacer.js +52 -52
  85. package/lib/core/common/SdkUtils.d.ts +8 -8
  86. package/lib/core/common/SdkUtils.js +105 -105
  87. package/lib/core/common/StmtDefReplacer.d.ts +12 -12
  88. package/lib/core/common/StmtDefReplacer.js +41 -41
  89. package/lib/core/common/StmtUseReplacer.d.ts +16 -16
  90. package/lib/core/common/StmtUseReplacer.js +108 -108
  91. package/lib/core/common/TSConst.d.ts +18 -18
  92. package/lib/core/common/TSConst.js +36 -36
  93. package/lib/core/common/TypeInference.d.ts +102 -102
  94. package/lib/core/common/TypeInference.js +748 -748
  95. package/lib/core/common/ValueUtil.d.ts +12 -12
  96. package/lib/core/common/ValueUtil.js +54 -54
  97. package/lib/core/common/VisibleValue.d.ts +36 -36
  98. package/lib/core/common/VisibleValue.js +212 -212
  99. package/lib/core/dataflow/DataflowProblem.d.ts +20 -20
  100. package/lib/core/dataflow/DataflowProblem.js +20 -20
  101. package/lib/core/dataflow/DataflowResult.d.ts +7 -7
  102. package/lib/core/dataflow/DataflowResult.js +26 -26
  103. package/lib/core/dataflow/DataflowSolver.d.ts +43 -43
  104. package/lib/core/dataflow/DataflowSolver.js +307 -307
  105. package/lib/core/dataflow/Edge.d.ts +11 -11
  106. package/lib/core/dataflow/Edge.js +31 -31
  107. package/lib/core/dataflow/Fact.d.ts +6 -6
  108. package/lib/core/dataflow/Fact.js +24 -24
  109. package/lib/core/dataflow/GenericDataFlow.d.ts +143 -0
  110. package/lib/core/dataflow/GenericDataFlow.d.ts.map +1 -0
  111. package/lib/core/dataflow/GenericDataFlow.js +109 -0
  112. package/lib/core/dataflow/ReachingDef.d.ts +63 -0
  113. package/lib/core/dataflow/ReachingDef.d.ts.map +1 -0
  114. package/lib/core/dataflow/ReachingDef.js +168 -0
  115. package/lib/core/dataflow/UndefinedVariable.d.ts +45 -45
  116. package/lib/core/dataflow/UndefinedVariable.js +288 -288
  117. package/lib/core/dataflow/Util.d.ts +9 -9
  118. package/lib/core/dataflow/Util.js +64 -64
  119. package/lib/core/graph/BaseExplicitGraph.d.ts +58 -63
  120. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  121. package/lib/core/graph/BaseExplicitGraph.js +157 -157
  122. package/lib/core/graph/BaseImplicitGraph.d.ts +78 -0
  123. package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -0
  124. package/lib/core/graph/BaseImplicitGraph.js +78 -0
  125. package/lib/core/graph/BasicBlock.d.ts +104 -104
  126. package/lib/core/graph/BasicBlock.js +280 -280
  127. package/lib/core/graph/Cfg.d.ts +59 -59
  128. package/lib/core/graph/Cfg.js +282 -282
  129. package/lib/core/graph/DependsGraph.d.ts +35 -35
  130. package/lib/core/graph/DependsGraph.js +87 -87
  131. package/lib/core/graph/DominanceFinder.d.ts +15 -15
  132. package/lib/core/graph/DominanceFinder.js +121 -121
  133. package/lib/core/graph/DominanceTree.d.ts +12 -12
  134. package/lib/core/graph/DominanceTree.js +70 -70
  135. package/lib/core/graph/GraphTraits.d.ts +8 -0
  136. package/lib/core/graph/GraphTraits.d.ts.map +1 -0
  137. package/lib/core/graph/GraphTraits.js +16 -0
  138. package/lib/core/graph/Scc.d.ts +61 -60
  139. package/lib/core/graph/Scc.d.ts.map +1 -1
  140. package/lib/core/graph/Scc.js +222 -222
  141. package/lib/core/graph/ViewTree.d.ts +114 -114
  142. package/lib/core/graph/ViewTree.js +16 -16
  143. package/lib/core/graph/builder/CfgBuilder.d.ts +176 -176
  144. package/lib/core/graph/builder/CfgBuilder.js +1139 -1139
  145. package/lib/core/graph/builder/ConditionBuilder.d.ts +15 -15
  146. package/lib/core/graph/builder/ConditionBuilder.js +252 -252
  147. package/lib/core/graph/builder/LoopBuilder.d.ts +20 -20
  148. package/lib/core/graph/builder/LoopBuilder.js +251 -251
  149. package/lib/core/graph/builder/SwitchBuilder.d.ts +11 -11
  150. package/lib/core/graph/builder/SwitchBuilder.js +152 -152
  151. package/lib/core/graph/builder/TrapBuilder.d.ts +16 -16
  152. package/lib/core/graph/builder/TrapBuilder.js +272 -272
  153. package/lib/core/graph/builder/ViewTreeBuilder.d.ts +203 -203
  154. package/lib/core/graph/builder/ViewTreeBuilder.js +1055 -1055
  155. package/lib/core/model/ArkBaseModel.d.ts +59 -59
  156. package/lib/core/model/ArkBaseModel.js +274 -274
  157. package/lib/core/model/ArkBody.d.ts +24 -24
  158. package/lib/core/model/ArkBody.js +65 -65
  159. package/lib/core/model/ArkClass.d.ts +206 -206
  160. package/lib/core/model/ArkClass.js +439 -439
  161. package/lib/core/model/ArkExport.d.ts +72 -72
  162. package/lib/core/model/ArkExport.js +147 -147
  163. package/lib/core/model/ArkField.d.ts +62 -62
  164. package/lib/core/model/ArkField.js +113 -113
  165. package/lib/core/model/ArkFile.d.ts +131 -131
  166. package/lib/core/model/ArkFile.js +267 -267
  167. package/lib/core/model/ArkImport.d.ts +44 -44
  168. package/lib/core/model/ArkImport.js +108 -108
  169. package/lib/core/model/ArkMetadata.d.ts +31 -31
  170. package/lib/core/model/ArkMetadata.js +55 -55
  171. package/lib/core/model/ArkMethod.d.ts +261 -261
  172. package/lib/core/model/ArkMethod.js +592 -592
  173. package/lib/core/model/ArkNamespace.d.ts +66 -66
  174. package/lib/core/model/ArkNamespace.js +209 -209
  175. package/lib/core/model/ArkSignature.d.ts +162 -162
  176. package/lib/core/model/ArkSignature.js +379 -379
  177. package/lib/core/model/builder/ArkClassBuilder.d.ts +12 -12
  178. package/lib/core/model/builder/ArkClassBuilder.js +454 -454
  179. package/lib/core/model/builder/ArkExportBuilder.d.ts +24 -24
  180. package/lib/core/model/builder/ArkExportBuilder.js +210 -210
  181. package/lib/core/model/builder/ArkFieldBuilder.d.ts +8 -8
  182. package/lib/core/model/builder/ArkFieldBuilder.js +193 -193
  183. package/lib/core/model/builder/ArkFileBuilder.d.ts +9 -9
  184. package/lib/core/model/builder/ArkFileBuilder.js +165 -165
  185. package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -4
  186. package/lib/core/model/builder/ArkImportBuilder.js +128 -128
  187. package/lib/core/model/builder/ArkMethodBuilder.d.ts +63 -63
  188. package/lib/core/model/builder/ArkMethodBuilder.js +486 -486
  189. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -5
  190. package/lib/core/model/builder/ArkNamespaceBuilder.js +205 -205
  191. package/lib/core/model/builder/ArkSignatureBuilder.d.ts +8 -8
  192. package/lib/core/model/builder/ArkSignatureBuilder.js +40 -40
  193. package/lib/core/model/builder/BodyBuilder.d.ts +55 -30
  194. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  195. package/lib/core/model/builder/BodyBuilder.js +542 -371
  196. package/lib/core/model/builder/builderUtils.d.ts +18 -18
  197. package/lib/core/model/builder/builderUtils.js +558 -558
  198. package/lib/index.d.ts +82 -80
  199. package/lib/index.d.ts.map +1 -1
  200. package/lib/index.js +201 -196
  201. package/lib/save/ArkStream.d.ts +23 -23
  202. package/lib/save/ArkStream.js +83 -83
  203. package/lib/save/DotPrinter.d.ts +43 -43
  204. package/lib/save/DotPrinter.js +170 -170
  205. package/lib/save/GraphPrinter.d.ts +16 -15
  206. package/lib/save/GraphPrinter.d.ts.map +1 -1
  207. package/lib/save/GraphPrinter.js +134 -134
  208. package/lib/save/JsonPrinter.d.ts +30 -30
  209. package/lib/save/JsonPrinter.js +580 -580
  210. package/lib/save/Printer.d.ts +12 -12
  211. package/lib/save/Printer.js +27 -27
  212. package/lib/save/PrinterBuilder.d.ts +53 -53
  213. package/lib/save/PrinterBuilder.js +145 -145
  214. package/lib/save/ViewTreePrinter.d.ts +14 -14
  215. package/lib/save/ViewTreePrinter.js +123 -123
  216. package/lib/save/arkir/ArkIRClassPrinter.d.ts +13 -13
  217. package/lib/save/arkir/ArkIRClassPrinter.js +92 -92
  218. package/lib/save/arkir/ArkIRFieldPrinter.d.ts +11 -11
  219. package/lib/save/arkir/ArkIRFieldPrinter.js +64 -64
  220. package/lib/save/arkir/ArkIRFilePrinter.d.ts +12 -12
  221. package/lib/save/arkir/ArkIRFilePrinter.js +54 -54
  222. package/lib/save/arkir/ArkIRMethodPrinter.d.ts +16 -16
  223. package/lib/save/arkir/ArkIRMethodPrinter.js +159 -159
  224. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +11 -11
  225. package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -66
  226. package/lib/save/base/BasePrinter.d.ts +23 -23
  227. package/lib/save/base/BasePrinter.js +70 -70
  228. package/lib/save/base/ExportPrinter.d.ts +8 -8
  229. package/lib/save/base/ExportPrinter.js +67 -67
  230. package/lib/save/base/ImportPrinter.d.ts +9 -9
  231. package/lib/save/base/ImportPrinter.js +92 -92
  232. package/lib/save/base/PrinterUtils.d.ts +24 -24
  233. package/lib/save/base/PrinterUtils.js +208 -208
  234. package/lib/save/serializeArkIR.d.ts +8 -8
  235. package/lib/save/serializeArkIR.js +294 -294
  236. package/lib/save/source/SourceBase.d.ts +22 -22
  237. package/lib/save/source/SourceBase.js +64 -64
  238. package/lib/save/source/SourceBody.d.ts +58 -58
  239. package/lib/save/source/SourceBody.js +296 -296
  240. package/lib/save/source/SourceClass.d.ts +25 -25
  241. package/lib/save/source/SourceClass.js +187 -187
  242. package/lib/save/source/SourceField.d.ts +13 -13
  243. package/lib/save/source/SourceField.js +73 -73
  244. package/lib/save/source/SourceFilePrinter.d.ts +12 -12
  245. package/lib/save/source/SourceFilePrinter.js +69 -69
  246. package/lib/save/source/SourceMethod.d.ts +22 -22
  247. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  248. package/lib/save/source/SourceMethod.js +196 -193
  249. package/lib/save/source/SourceNamespace.d.ts +11 -11
  250. package/lib/save/source/SourceNamespace.js +83 -83
  251. package/lib/save/source/SourceStmt.d.ts +178 -178
  252. package/lib/save/source/SourceStmt.js +838 -838
  253. package/lib/save/source/SourceTransformer.d.ts +46 -46
  254. package/lib/save/source/SourceTransformer.js +446 -446
  255. package/lib/transformer/FunctionTransformer.d.ts +2 -2
  256. package/lib/transformer/FunctionTransformer.js +17 -17
  257. package/lib/transformer/SceneTransformer.d.ts +2 -2
  258. package/lib/transformer/SceneTransformer.js +17 -17
  259. package/lib/transformer/StaticSingleAssignmentFormer.d.ts +12 -12
  260. package/lib/transformer/StaticSingleAssignmentFormer.js +259 -259
  261. package/lib/transformer/Transformer.d.ts +6 -6
  262. package/lib/transformer/Transformer.js +22 -22
  263. package/lib/utils/AstTreeUtils.d.ts +4 -4
  264. package/lib/utils/AstTreeUtils.js +26 -26
  265. package/lib/utils/CfgStructualAnalysis.d.ts +110 -110
  266. package/lib/utils/CfgStructualAnalysis.js +1277 -1277
  267. package/lib/utils/FileUtils.d.ts +18 -18
  268. package/lib/utils/FileUtils.js +135 -135
  269. package/lib/utils/SparseBitVector.d.ts +100 -100
  270. package/lib/utils/SparseBitVector.d.ts.map +1 -1
  271. package/lib/utils/SparseBitVector.js +445 -444
  272. package/lib/utils/callGraphUtils.d.ts +30 -30
  273. package/lib/utils/callGraphUtils.js +205 -205
  274. package/lib/utils/crypto_utils.d.ts +5 -5
  275. package/lib/utils/crypto_utils.js +57 -57
  276. package/lib/utils/entryMethodUtils.d.ts +13 -13
  277. package/lib/utils/entryMethodUtils.js +110 -110
  278. package/lib/utils/getAllFiles.d.ts +9 -9
  279. package/lib/utils/getAllFiles.js +90 -90
  280. package/lib/utils/json5parser.d.ts +6 -6
  281. package/lib/utils/json5parser.js +146 -146
  282. package/lib/utils/logger.d.ts +18 -18
  283. package/lib/utils/logger.d.ts.map +1 -1
  284. package/lib/utils/logger.js +97 -90
  285. package/lib/utils/pathTransfer.d.ts +1 -1
  286. package/lib/utils/pathTransfer.js +25 -25
  287. package/node_modules/json5/lib/cli.js +0 -0
  288. package/node_modules/ohos-typescript/bin/tsc +0 -0
  289. package/node_modules/ohos-typescript/bin/tsserver +0 -0
  290. package/package.json +3 -2
package/lib/Scene.d.ts CHANGED
@@ -1,311 +1,317 @@
1
- import { SceneConfig, SceneOptions, Sdk } from './Config';
2
- import { VisibleValue } from './core/common/VisibleValue';
3
- import { ArkClass } from './core/model/ArkClass';
4
- import { ArkFile } from './core/model/ArkFile';
5
- import { ArkMethod } from './core/model/ArkMethod';
6
- import { ArkNamespace } from './core/model/ArkNamespace';
7
- import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } from './core/model/ArkSignature';
8
- import { Local } from './core/base/Local';
9
- import { ArkExport } from './core/model/ArkExport';
10
- import { CallGraph } from './callgraph/model/CallGraph';
11
- declare enum SceneBuildStage {
12
- BUILD_INIT = 0,
13
- CLASS_DONE = 1,
14
- METHOD_DONE = 2,
15
- CLASS_COLLECTED = 3,
16
- METHOD_COLLECTED = 4,
17
- SDK_INFERRED = 5,
18
- TYPE_INFERRED = 6
19
- }
20
- /**
21
- * The Scene class includes everything in the analyzed project.
22
- * We should be able to re-generate the project's code based on this class.
23
- */
24
- export declare class Scene {
25
- private projectName;
26
- private projectFiles;
27
- private realProjectDir;
28
- private moduleScenesMap;
29
- private modulePath2NameMap;
30
- private moduleSdkMap;
31
- private projectSdkMap;
32
- private visibleValue;
33
- private filesMap;
34
- private namespacesMap;
35
- private classesMap;
36
- private methodsMap;
37
- private sdkArkFilesMap;
38
- private sdkGlobalMap;
39
- private ohPkgContentMap;
40
- private ohPkgFilePath;
41
- private ohPkgContent;
42
- private overRides;
43
- private overRideDependencyMap;
44
- private globalModule2PathMapping?;
45
- private baseUrl?;
46
- private buildStage;
47
- private options;
48
- private indexPathArray;
49
- constructor();
50
- getOptions(): SceneOptions;
51
- getOverRides(): Map<string, string>;
52
- getOverRideDependencyMap(): Map<string, unknown>;
53
- clear(): void;
54
- getStage(): SceneBuildStage;
55
- /**
56
- * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
57
- * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
58
- * and the last is to collect project import infomation.
59
- * @param sceneConfig - a sceneConfig object, which is usally defined by user or Json file.
60
- * @example
61
- * 1. Build Scene object from scene config
62
-
63
- ```typescript
64
- // build config
65
- const projectDir = ... ...;
66
- const sceneConfig = new SceneConfig();
67
- sceneConfig.buildFromProjectDir(projectDir);
68
-
69
- // build scene
70
- const scene = new Scene();
71
- scene.buildSceneFromProjectDir(sceneConfig);
72
- ```
73
- */
74
- buildSceneFromProjectDir(sceneConfig: SceneConfig): void;
75
- buildSceneFromFiles(sceneConfig: SceneConfig): void;
76
- /**
77
- * Set the basic information of the scene using a config,
78
- * such as the project's name, real path and files.
79
- * @param sceneConfig - the config used to set the basic information of scene.
80
- */
81
- buildBasicInfo(sceneConfig: SceneConfig): void;
82
- private parseBuildProfile;
83
- private parseOhPackage;
84
- private findTsConfigInfoDeeply;
85
- private addTsConfigInfo;
86
- private addDefaultConstructors;
87
- private buildAllMethodBody;
88
- private genArkFiles;
89
- private getFilesOrderByDependency;
90
- private getDependencyFilesDeeply;
91
- private isRepeatBuildFile;
92
- private addArkFile2ModuleScene;
93
- private findDependencyFiles;
94
- private parseFrom;
95
- private findDependenciesByTsConfig;
96
- private parseTsConfigParms;
97
- private processFuzzyMapping;
98
- private findDependenciesByRule;
99
- private findFilesByPathArray;
100
- private findFilesByExtNameArray;
101
- private findRelativeDependenciesByOhPkg;
102
- private findDependenciesByOhPkg;
103
- private getDependenciesMapping;
104
- private getOriginPath;
105
- private addFileNode2DependencyGrap;
106
- private buildSdk;
107
- /**
108
- * Build the scene for harmony project. It resolves the file path of the project first, and then fetches dependencies from this file.
109
- * Next, build a `ModuleScene` for this project to generate {@link ArkFile}. Finally, it build bodies of all methods, generate extended classes, and add DefaultConstructors.
110
- */
111
- buildScene4HarmonyProject(): void;
112
- private buildOhPkgContentMap;
113
- buildModuleScene(moduleName: string, modulePath: string, supportFileExts: string[]): void;
114
- private processModuleOhPkgContent;
115
- /**
116
- * Get the absolute path of current project.
117
- * @returns The real project's directiory.
118
- * @example
119
- * 1. get real project directory, such as:
120
- ```typescript
121
- let projectDir = projectScene.getRealProjectDir();
122
- ```
123
- */
124
- getRealProjectDir(): string;
125
- /**
126
- * Returns the **string** name of the project.
127
- * @returns The name of the project.
128
- */
129
- getProjectName(): string;
130
- getProjectFiles(): string[];
131
- getSdkGlobal(globalName: string): ArkExport | null;
132
- /**
133
- * Returns the file based on its signature.
134
- * If no file can be found according to the input signature, **null** will be returned.
135
- * A typical {@link ArkFile} contains: file's name (i.e., its relative path), project's name,
136
- * project's dir, file's signature etc.
137
- * @param fileSignature - the signature of file.
138
- * @returns a file defined by ArkAnalyzer. **null** will be returned if no file could be found.
139
- * @example
140
- * 1. get ArkFile based on file signature.
141
-
142
- ```typescript
143
- if (...) {
144
- const fromSignature = new FileSignature();
145
- fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
146
- fromSignature.setFileName(fileName);
147
- return scene.getFile(fromSignature);
148
- }
149
- ```
150
- */
151
- getFile(fileSignature: FileSignature): ArkFile | null;
152
- setFile(file: ArkFile): void;
153
- hasSdkFile(fileSignature: FileSignature): boolean;
154
- /**
155
- * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different class. We need to generate {@link ArkFile} objects from these ets/ts files.
156
- * @returns The array of {@link ArkFile} from `scene.filesMap.values()`.
157
- * @example
158
- * 1. In inferSimpleTypes() to check arkClass and arkMethod.
159
- * ```typescript
160
- * public inferSimpleTypes() {
161
- * for (let arkFile of this.getFiles()) {
162
- * for (let arkClass of arkFile.getClasses()) {
163
- * for (let arkMethod of arkClass.getMethods()) {
164
- * // ... ...;
165
- * }
166
- * }
167
- * }
168
- * }
169
- * ```
170
- * 2. To iterate each method
171
- * ```typescript
172
- * for (const file of this.getFiles()) {
173
- * for (const cls of file.getClasses()) {
174
- * for (const method of cls.getMethods()) {
175
- * // ... ...
176
- * }
177
- * }
178
- * }
179
- *```
180
- */
181
- getFiles(): ArkFile[];
182
- getSdkArkFiles(): ArkFile[];
183
- getModuleSdkMap(): Map<string, Sdk[]>;
184
- getProjectSdkMap(): Map<string, Sdk>;
185
- getNamespace(namespaceSignature: NamespaceSignature): ArkNamespace | null;
186
- private getNamespaceBySignature;
187
- private getNamespacesMap;
188
- getNamespaces(): ArkNamespace[];
189
- /**
190
- * Returns the class according to the input class signature.
191
- * @param classSignature - signature of the class to be obtained.
192
- * @returns A class.
193
- */
194
- getClass(classSignature: ClassSignature): ArkClass | null;
195
- private getClassesMap;
196
- getClasses(): ArkClass[];
197
- getMethod(methodSignature: MethodSignature, refresh?: boolean): ArkMethod | null;
198
- private getMethodsMap;
199
- /**
200
- * Returns the method associated with the method signature.
201
- * If no method is associated with this signature, **null** will be returned.
202
- * An {@link ArkMethod} includes:
203
- * - Name: the **string** name of method.
204
- * - Code: the **string** code of the method.
205
- * - Line: a **number** indicating the line location, initialized as -1.
206
- * - Column: a **number** indicating the column location, initialized as -1.
207
- * - Parameters & Types of parameters: the parameters of method and their types.
208
- * - View tree: the view tree of the method.
209
- * - ...
210
- *
211
- * @param methodSignature - the signature of method.
212
- * @returns The method associated with the method signature.
213
- * @example
214
- * 1. get method from getMethod.
215
-
216
- ```typescript
217
- const methodSignatures = this.CHA.resolveCall(xxx, yyy);
218
- for (const methodSignature of methodSignatures) {
219
- const method = this.scene.getMethod(methodSignature);
220
- ... ...
221
- }
222
- ```
223
- */
224
- getMethods(): ArkMethod[];
225
- addToMethodsMap(method: ArkMethod): void;
226
- removeMethod(method: ArkMethod): boolean;
227
- removeClass(arkClass: ArkClass): boolean;
228
- removeNamespace(namespace: ArkNamespace): boolean;
229
- removeFile(file: ArkFile): boolean;
230
- hasMainMethod(): boolean;
231
- getEntryPoints(): never[];
232
- /** get values that is visible in curr scope */
233
- getVisibleValue(): VisibleValue;
234
- getOhPkgContent(): {
235
- [k: string]: unknown;
236
- };
237
- getOhPkgContentMap(): Map<string, {
238
- [k: string]: unknown;
239
- }>;
240
- getOhPkgFilePath(): string;
241
- makeCallGraphCHA(entryPoints: MethodSignature[]): CallGraph;
242
- makeCallGraphRTA(entryPoints: MethodSignature[]): CallGraph;
243
- /**
244
- * Infer type for each non-default method. It infers the type of each field/local/reference.
245
- * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s = 'hello';`, the type of local `s` is `StringType`. The detailed types are defined in the Type.ts file.
246
- * @example
247
- * 1. Infer the type of each class field and method field.
248
-
249
- ```typescript
250
- const scene = new Scene();
251
- scene.buildSceneFromProjectDir(sceneConfig);
252
- scene.inferTypes();
253
- ```
254
- */
255
- inferTypes(): void;
256
- /**
257
- * Iterate all assignment statements in methods,
258
- * and set the type of left operand based on the type of right operand
259
- * if the left operand is a local variable as well as an unknown.
260
- * @Deprecated
261
- * @example
262
- * 1. Infer simple type when scene building.
263
-
264
- ```typescript
265
- let scene = new Scene();
266
- scene.buildSceneFromProjectDir(config);
267
- scene.inferSimpleTypes();
268
- ```
269
- */
270
- inferSimpleTypes(): void;
271
- getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
272
- getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
273
- getStaticInitMethods(): ArkMethod[];
274
- buildClassDone(): boolean;
275
- getModuleScene(moduleName: string): ModuleScene | undefined;
276
- getModuleSceneMap(): Map<string, ModuleScene>;
277
- getGlobalModule2PathMapping(): {
278
- [k: string]: string[];
279
- } | undefined;
280
- getbaseUrl(): string | undefined;
281
- }
282
- export declare class ModuleScene {
283
- private projectScene;
284
- private moduleName;
285
- private modulePath;
286
- private moduleFileMap;
287
- private moduleOhPkgFilePath;
288
- private ohPkgContent;
289
- constructor(projectScene: Scene);
290
- ModuleSceneBuilder(moduleName: string, modulePath: string, supportFileExts: string[], recursively?: boolean): void;
291
- ModuleScenePartiallyBuilder(moduleName: string, modulePath: string): void;
292
- /**
293
- * get oh-package.json5
294
- */
295
- private getModuleOhPkgFilePath;
296
- /**
297
- * get nodule name
298
- * @returns return module name
299
- */
300
- getModuleName(): string;
301
- getModulePath(): string;
302
- getOhPkgFilePath(): string;
303
- getOhPkgContent(): {
304
- [k: string]: unknown;
305
- };
306
- getModuleFilesMap(): Map<string, ArkFile>;
307
- addArkFile(arkFile: ArkFile): void;
308
- private genArkFiles;
309
- }
310
- export {};
1
+ import { SceneConfig, SceneOptions, Sdk } from './Config';
2
+ import { VisibleValue } from './core/common/VisibleValue';
3
+ import { ArkClass } from './core/model/ArkClass';
4
+ import { ArkFile } from './core/model/ArkFile';
5
+ import { ArkMethod } from './core/model/ArkMethod';
6
+ import { ArkNamespace } from './core/model/ArkNamespace';
7
+ import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } from './core/model/ArkSignature';
8
+ import { Local } from './core/base/Local';
9
+ import { ArkExport } from './core/model/ArkExport';
10
+ import { CallGraph } from './callgraph/model/CallGraph';
11
+ declare enum SceneBuildStage {
12
+ BUILD_INIT = 0,
13
+ CLASS_DONE = 1,
14
+ METHOD_DONE = 2,
15
+ CLASS_COLLECTED = 3,
16
+ METHOD_COLLECTED = 4,
17
+ SDK_INFERRED = 5,
18
+ TYPE_INFERRED = 6
19
+ }
20
+ /**
21
+ * The Scene class includes everything in the analyzed project.
22
+ * We should be able to re-generate the project's code based on this class.
23
+ */
24
+ export declare class Scene {
25
+ private projectName;
26
+ private projectFiles;
27
+ private realProjectDir;
28
+ private moduleScenesMap;
29
+ private modulePath2NameMap;
30
+ private moduleSdkMap;
31
+ private projectSdkMap;
32
+ private visibleValue;
33
+ private filesMap;
34
+ private namespacesMap;
35
+ private classesMap;
36
+ private methodsMap;
37
+ private sdkArkFilesMap;
38
+ private sdkGlobalMap;
39
+ private ohPkgContentMap;
40
+ private ohPkgFilePath;
41
+ private ohPkgContent;
42
+ private overRides;
43
+ private overRideDependencyMap;
44
+ private globalModule2PathMapping?;
45
+ private baseUrl?;
46
+ private buildStage;
47
+ private options;
48
+ private indexPathArray;
49
+ private unhandledFilePaths;
50
+ private unhandledSdkFilePaths;
51
+ constructor();
52
+ getOptions(): SceneOptions;
53
+ getOverRides(): Map<string, string>;
54
+ getOverRideDependencyMap(): Map<string, unknown>;
55
+ clear(): void;
56
+ getStage(): SceneBuildStage;
57
+ /**
58
+ * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
59
+ * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
60
+ * and the last is to collect project import infomation.
61
+ * @param sceneConfig - a sceneConfig object, which is usally defined by user or Json file.
62
+ * @example
63
+ * 1. Build Scene object from scene config
64
+
65
+ ```typescript
66
+ // build config
67
+ const projectDir = ... ...;
68
+ const sceneConfig = new SceneConfig();
69
+ sceneConfig.buildFromProjectDir(projectDir);
70
+
71
+ // build scene
72
+ const scene = new Scene();
73
+ scene.buildSceneFromProjectDir(sceneConfig);
74
+ ```
75
+ */
76
+ buildSceneFromProjectDir(sceneConfig: SceneConfig): void;
77
+ buildSceneFromFiles(sceneConfig: SceneConfig): void;
78
+ /**
79
+ * Set the basic information of the scene using a config,
80
+ * such as the project's name, real path and files.
81
+ * @param sceneConfig - the config used to set the basic information of scene.
82
+ */
83
+ buildBasicInfo(sceneConfig: SceneConfig): void;
84
+ private parseBuildProfile;
85
+ private parseOhPackage;
86
+ private findTsConfigInfoDeeply;
87
+ private addTsConfigInfo;
88
+ private addDefaultConstructors;
89
+ private buildAllMethodBody;
90
+ private genArkFiles;
91
+ private getFilesOrderByDependency;
92
+ private getDependencyFilesDeeply;
93
+ private isRepeatBuildFile;
94
+ private addArkFile2ModuleScene;
95
+ private findDependencyFiles;
96
+ private parseFrom;
97
+ private findDependenciesByTsConfig;
98
+ private parseTsConfigParms;
99
+ private processFuzzyMapping;
100
+ private findDependenciesByRule;
101
+ private findFilesByPathArray;
102
+ private findFilesByExtNameArray;
103
+ private findRelativeDependenciesByOhPkg;
104
+ private findDependenciesByOhPkg;
105
+ private getDependenciesMapping;
106
+ private getOriginPath;
107
+ private addFileNode2DependencyGrap;
108
+ private buildSdk;
109
+ /**
110
+ * Build the scene for harmony project. It resolves the file path of the project first, and then fetches
111
+ * dependencies from this file. Next, build a `ModuleScene` for this project to generate {@link ArkFile}. Finally,
112
+ * it build bodies of all methods, generate extended classes, and add DefaultConstructors.
113
+ */
114
+ buildScene4HarmonyProject(): void;
115
+ private buildOhPkgContentMap;
116
+ buildModuleScene(moduleName: string, modulePath: string, supportFileExts: string[]): void;
117
+ private processModuleOhPkgContent;
118
+ /**
119
+ * Get the absolute path of current project.
120
+ * @returns The real project's directiory.
121
+ * @example
122
+ * 1. get real project directory, such as:
123
+ ```typescript
124
+ let projectDir = projectScene.getRealProjectDir();
125
+ ```
126
+ */
127
+ getRealProjectDir(): string;
128
+ /**
129
+ * Returns the **string** name of the project.
130
+ * @returns The name of the project.
131
+ */
132
+ getProjectName(): string;
133
+ getProjectFiles(): string[];
134
+ getSdkGlobal(globalName: string): ArkExport | null;
135
+ /**
136
+ * Returns the file based on its signature.
137
+ * If no file can be found according to the input signature, **null** will be returned.
138
+ * A typical {@link ArkFile} contains: file's name (i.e., its relative path), project's name,
139
+ * project's dir, file's signature etc.
140
+ * @param fileSignature - the signature of file.
141
+ * @returns a file defined by ArkAnalyzer. **null** will be returned if no file could be found.
142
+ * @example
143
+ * 1. get ArkFile based on file signature.
144
+
145
+ ```typescript
146
+ if (...) {
147
+ const fromSignature = new FileSignature();
148
+ fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
149
+ fromSignature.setFileName(fileName);
150
+ return scene.getFile(fromSignature);
151
+ }
152
+ ```
153
+ */
154
+ getFile(fileSignature: FileSignature): ArkFile | null;
155
+ getUnhandledFilePaths(): string[];
156
+ getUnhandledSdkFilePaths(): string[];
157
+ setFile(file: ArkFile): void;
158
+ hasSdkFile(fileSignature: FileSignature): boolean;
159
+ /**
160
+ * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different
161
+ * class. We need to generate {@link ArkFile} objects from these ets/ts files.
162
+ * @returns The array of {@link ArkFile} from `scene.filesMap.values()`.
163
+ * @example
164
+ * 1. In inferSimpleTypes() to check arkClass and arkMethod.
165
+ * ```typescript
166
+ * public inferSimpleTypes() {
167
+ * for (let arkFile of this.getFiles()) {
168
+ * for (let arkClass of arkFile.getClasses()) {
169
+ * for (let arkMethod of arkClass.getMethods()) {
170
+ * // ... ...;
171
+ * }
172
+ * }
173
+ * }
174
+ * }
175
+ * ```
176
+ * 2. To iterate each method
177
+ * ```typescript
178
+ * for (const file of this.getFiles()) {
179
+ * for (const cls of file.getClasses()) {
180
+ * for (const method of cls.getMethods()) {
181
+ * // ... ...
182
+ * }
183
+ * }
184
+ * }
185
+ *```
186
+ */
187
+ getFiles(): ArkFile[];
188
+ getSdkArkFiles(): ArkFile[];
189
+ getModuleSdkMap(): Map<string, Sdk[]>;
190
+ getProjectSdkMap(): Map<string, Sdk>;
191
+ getNamespace(namespaceSignature: NamespaceSignature): ArkNamespace | null;
192
+ private getNamespaceBySignature;
193
+ private getNamespacesMap;
194
+ getNamespaces(): ArkNamespace[];
195
+ /**
196
+ * Returns the class according to the input class signature.
197
+ * @param classSignature - signature of the class to be obtained.
198
+ * @returns A class.
199
+ */
200
+ getClass(classSignature: ClassSignature): ArkClass | null;
201
+ private getClassesMap;
202
+ getClasses(): ArkClass[];
203
+ getMethod(methodSignature: MethodSignature, refresh?: boolean): ArkMethod | null;
204
+ private getMethodsMap;
205
+ /**
206
+ * Returns the method associated with the method signature.
207
+ * If no method is associated with this signature, **null** will be returned.
208
+ * An {@link ArkMethod} includes:
209
+ * - Name: the **string** name of method.
210
+ * - Code: the **string** code of the method.
211
+ * - Line: a **number** indicating the line location, initialized as -1.
212
+ * - Column: a **number** indicating the column location, initialized as -1.
213
+ * - Parameters & Types of parameters: the parameters of method and their types.
214
+ * - View tree: the view tree of the method.
215
+ * - ...
216
+ *
217
+ * @param methodSignature - the signature of method.
218
+ * @returns The method associated with the method signature.
219
+ * @example
220
+ * 1. get method from getMethod.
221
+
222
+ ```typescript
223
+ const methodSignatures = this.CHA.resolveCall(xxx, yyy);
224
+ for (const methodSignature of methodSignatures) {
225
+ const method = this.scene.getMethod(methodSignature);
226
+ ... ...
227
+ }
228
+ ```
229
+ */
230
+ getMethods(): ArkMethod[];
231
+ addToMethodsMap(method: ArkMethod): void;
232
+ removeMethod(method: ArkMethod): boolean;
233
+ removeClass(arkClass: ArkClass): boolean;
234
+ removeNamespace(namespace: ArkNamespace): boolean;
235
+ removeFile(file: ArkFile): boolean;
236
+ hasMainMethod(): boolean;
237
+ getEntryPoints(): never[];
238
+ /** get values that is visible in curr scope */
239
+ getVisibleValue(): VisibleValue;
240
+ getOhPkgContent(): {
241
+ [k: string]: unknown;
242
+ };
243
+ getOhPkgContentMap(): Map<string, {
244
+ [k: string]: unknown;
245
+ }>;
246
+ getOhPkgFilePath(): string;
247
+ makeCallGraphCHA(entryPoints: MethodSignature[]): CallGraph;
248
+ makeCallGraphRTA(entryPoints: MethodSignature[]): CallGraph;
249
+ /**
250
+ * Infer type for each non-default method. It infers the type of each field/local/reference.
251
+ * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s =
252
+ * 'hello';`, the type of local `s` is `StringType`. The detailed types are defined in the Type.ts file.
253
+ * @example
254
+ * 1. Infer the type of each class field and method field.
255
+ ```typescript
256
+ const scene = new Scene();
257
+ scene.buildSceneFromProjectDir(sceneConfig);
258
+ scene.inferTypes();
259
+ ```
260
+ */
261
+ inferTypes(): void;
262
+ /**
263
+ * Iterate all assignment statements in methods,
264
+ * and set the type of left operand based on the type of right operand
265
+ * if the left operand is a local variable as well as an unknown.
266
+ * @Deprecated
267
+ * @example
268
+ * 1. Infer simple type when scene building.
269
+
270
+ ```typescript
271
+ let scene = new Scene();
272
+ scene.buildSceneFromProjectDir(config);
273
+ scene.inferSimpleTypes();
274
+ ```
275
+ */
276
+ inferSimpleTypes(): void;
277
+ getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
278
+ getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
279
+ getStaticInitMethods(): ArkMethod[];
280
+ buildClassDone(): boolean;
281
+ getModuleScene(moduleName: string): ModuleScene | undefined;
282
+ getModuleSceneMap(): Map<string, ModuleScene>;
283
+ getGlobalModule2PathMapping(): {
284
+ [k: string]: string[];
285
+ } | undefined;
286
+ getbaseUrl(): string | undefined;
287
+ }
288
+ export declare class ModuleScene {
289
+ private projectScene;
290
+ private moduleName;
291
+ private modulePath;
292
+ private moduleFileMap;
293
+ private moduleOhPkgFilePath;
294
+ private ohPkgContent;
295
+ constructor(projectScene: Scene);
296
+ ModuleSceneBuilder(moduleName: string, modulePath: string, supportFileExts: string[], recursively?: boolean): void;
297
+ ModuleScenePartiallyBuilder(moduleName: string, modulePath: string): void;
298
+ /**
299
+ * get oh-package.json5
300
+ */
301
+ private getModuleOhPkgFilePath;
302
+ /**
303
+ * get nodule name
304
+ * @returns return module name
305
+ */
306
+ getModuleName(): string;
307
+ getModulePath(): string;
308
+ getOhPkgFilePath(): string;
309
+ getOhPkgContent(): {
310
+ [k: string]: unknown;
311
+ };
312
+ getModuleFilesMap(): Map<string, ArkFile>;
313
+ addArkFile(arkFile: ArkFile): void;
314
+ private genArkFiles;
315
+ }
316
+ export {};
311
317
  //# sourceMappingURL=Scene.d.ts.map