arkanalyzer 1.0.90 → 1.0.91

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 (122) hide show
  1. package/config/arkanalyzer.json +0 -1
  2. package/lib/Config.d.ts +3 -0
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Scene.d.ts +99 -0
  5. package/lib/Scene.d.ts.map +1 -1
  6. package/lib/Scene.js +229 -13
  7. package/lib/callgraph/common/Statistics.js +2 -2
  8. package/lib/callgraph/model/CallGraph.d.ts +2 -2
  9. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  10. package/lib/callgraph/model/CallGraph.js +6 -6
  11. package/lib/callgraph/model/CallSite.d.ts +1 -1
  12. package/lib/callgraph/model/CallSite.d.ts.map +1 -1
  13. package/lib/callgraph/model/CallSite.js +2 -2
  14. package/lib/core/base/Ref.d.ts.map +1 -1
  15. package/lib/core/base/Ref.js +6 -1
  16. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  17. package/lib/core/common/ArkIRTransformer.js +5 -0
  18. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  19. package/lib/core/common/ArkValueTransformer.js +2 -1
  20. package/lib/core/common/Const.d.ts +3 -0
  21. package/lib/core/common/Const.d.ts.map +1 -1
  22. package/lib/core/common/Const.js +5 -1
  23. package/lib/core/common/DummyMainCreater.d.ts +25 -12
  24. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  25. package/lib/core/common/DummyMainCreater.js +90 -76
  26. package/lib/core/common/EtsConst.d.ts +2 -0
  27. package/lib/core/common/EtsConst.d.ts.map +1 -1
  28. package/lib/core/common/EtsConst.js +133 -125
  29. package/lib/core/common/SdkUtils.d.ts +1 -0
  30. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  31. package/lib/core/common/SdkUtils.js +29 -0
  32. package/lib/core/graph/BaseExplicitGraph.d.ts +2 -0
  33. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  34. package/lib/core/graph/BaseExplicitGraph.js +12 -1
  35. package/lib/core/graph/BaseImplicitGraph.d.ts +16 -0
  36. package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -1
  37. package/lib/core/graph/BaseImplicitGraph.js +21 -0
  38. package/lib/core/graph/FileDepGraph.d.ts +75 -0
  39. package/lib/core/graph/FileDepGraph.d.ts.map +1 -0
  40. package/lib/core/graph/FileDepGraph.js +170 -0
  41. package/lib/core/graph/GraphTraits.d.ts +2 -0
  42. package/lib/core/graph/GraphTraits.d.ts.map +1 -1
  43. package/lib/core/graph/GraphTraits.js +1 -1
  44. package/lib/core/graph/ModuleDepGraph.d.ts +175 -0
  45. package/lib/core/graph/ModuleDepGraph.d.ts.map +1 -0
  46. package/lib/core/graph/ModuleDepGraph.js +421 -0
  47. package/lib/core/graph/Scc.d.ts +1 -3
  48. package/lib/core/graph/Scc.d.ts.map +1 -1
  49. package/lib/core/graph/Scc.js +6 -19
  50. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  51. package/lib/core/graph/builder/CfgBuilder.js +7 -1
  52. package/lib/core/graph/builder/TrapBuilder.d.ts +1 -0
  53. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  54. package/lib/core/graph/builder/TrapBuilder.js +27 -7
  55. package/lib/core/model/ArkBody.d.ts +1 -0
  56. package/lib/core/model/ArkBody.d.ts.map +1 -1
  57. package/lib/core/model/ArkBody.js +7 -0
  58. package/lib/core/model/ArkClass.d.ts +1 -0
  59. package/lib/core/model/ArkClass.d.ts.map +1 -1
  60. package/lib/core/model/ArkClass.js +37 -0
  61. package/lib/core/model/ArkExport.d.ts +1 -0
  62. package/lib/core/model/ArkExport.d.ts.map +1 -1
  63. package/lib/core/model/ArkExport.js +6 -0
  64. package/lib/core/model/ArkField.d.ts +1 -0
  65. package/lib/core/model/ArkField.d.ts.map +1 -1
  66. package/lib/core/model/ArkField.js +5 -0
  67. package/lib/core/model/ArkFile.d.ts +5 -0
  68. package/lib/core/model/ArkFile.d.ts.map +1 -1
  69. package/lib/core/model/ArkFile.js +30 -0
  70. package/lib/core/model/ArkImport.d.ts +1 -0
  71. package/lib/core/model/ArkImport.d.ts.map +1 -1
  72. package/lib/core/model/ArkImport.js +5 -0
  73. package/lib/core/model/ArkMethod.d.ts +8 -0
  74. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  75. package/lib/core/model/ArkMethod.js +22 -0
  76. package/lib/core/model/ArkModule.d.ts +136 -0
  77. package/lib/core/model/ArkModule.d.ts.map +1 -0
  78. package/lib/core/model/ArkModule.js +250 -0
  79. package/lib/core/model/ArkNamespace.d.ts +1 -0
  80. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  81. package/lib/core/model/ArkNamespace.js +18 -0
  82. package/lib/core/model/builder/ArkFileBuilder.d.ts +19 -0
  83. package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
  84. package/lib/core/model/builder/ArkFileBuilder.js +155 -51
  85. package/lib/frontend/FrontendBuilder.d.ts +116 -0
  86. package/lib/frontend/FrontendBuilder.d.ts.map +1 -1
  87. package/lib/frontend/FrontendBuilder.js +256 -0
  88. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts +11 -0
  89. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts.map +1 -1
  90. package/lib/frontend/arktsFrontend/ArktsFrontend.js +15 -0
  91. package/lib/frontend/common/MemoryMonitor.d.ts +62 -0
  92. package/lib/frontend/common/MemoryMonitor.d.ts.map +1 -0
  93. package/lib/frontend/common/MemoryMonitor.js +108 -0
  94. package/lib/frontend/common/ModuleAnalysisConfig.d.ts +92 -0
  95. package/lib/frontend/common/ModuleAnalysisConfig.d.ts.map +1 -0
  96. package/lib/frontend/common/ModuleAnalysisConfig.js +144 -0
  97. package/lib/frontend/common/ModuleBuilder.d.ts +497 -0
  98. package/lib/frontend/common/ModuleBuilder.d.ts.map +1 -0
  99. package/lib/frontend/common/ModuleBuilder.js +1458 -0
  100. package/lib/frontend/common/ModuleCache.d.ts +119 -0
  101. package/lib/frontend/common/ModuleCache.d.ts.map +1 -0
  102. package/lib/frontend/common/ModuleCache.js +197 -0
  103. package/lib/frontend/common/ModuleDepth.d.ts +28 -0
  104. package/lib/frontend/common/ModuleDepth.d.ts.map +1 -0
  105. package/lib/frontend/common/ModuleDepth.js +45 -0
  106. package/lib/frontend/cppFrontend/CppFrontend.d.ts +5 -0
  107. package/lib/frontend/cppFrontend/CppFrontend.d.ts.map +1 -1
  108. package/lib/frontend/cppFrontend/CppFrontend.js +11 -1
  109. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +8 -0
  110. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -1
  111. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +105 -2
  112. package/lib/index.d.ts +9 -1
  113. package/lib/index.d.ts.map +1 -1
  114. package/lib/index.js +22 -3
  115. package/lib/utils/Canonicalizer.d.ts +105 -0
  116. package/lib/utils/Canonicalizer.d.ts.map +1 -0
  117. package/lib/utils/Canonicalizer.js +520 -0
  118. package/lib/utils/ModuleUtils.js +4 -2
  119. package/lib/utils/entryMethodUtils.d.ts +23 -0
  120. package/lib/utils/entryMethodUtils.d.ts.map +1 -1
  121. package/lib/utils/entryMethodUtils.js +53 -1
  122. package/package.json +1 -1
@@ -0,0 +1,421 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2026 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.ModuleDepGraph = exports.DependencyType = void 0;
18
+ const BaseImplicitGraph_1 = require("./BaseImplicitGraph");
19
+ const Scc_1 = require("./Scc");
20
+ /**
21
+ * Dependency type enum, indicating the source of a dependency edge.
22
+ * Used during SCC post-processing to remove edges by priority when splitting oversized module groups.
23
+ *
24
+ * Priority (removal priority; higher value = removed first):
25
+ * - DEV_DEPENDENCIES (devDependencies): only needed during development, removed first
26
+ * - DYNAMIC (dynamicDependencies): runtime dynamic loading, removed next
27
+ * - DEPENDENCIES (dependencies): core dependency, removed last
28
+ */
29
+ var DependencyType;
30
+ (function (DependencyType) {
31
+ DependencyType[DependencyType["DEPENDENCIES"] = 0] = "DEPENDENCIES";
32
+ DependencyType[DependencyType["DYNAMIC"] = 1] = "DYNAMIC";
33
+ DependencyType[DependencyType["DEV_DEPENDENCIES"] = 2] = "DEV_DEPENDENCIES";
34
+ })(DependencyType = exports.DependencyType || (exports.DependencyType = {}));
35
+ /**
36
+ * Module dependency graph, based on BaseImplicitGraph.
37
+ * The node type is ArkModule, and edges represent dependency relationships between modules.
38
+ *
39
+ * Differences from DependsGraph (BaseExplicitGraph):
40
+ * - No BaseNode/BaseEdge objects needed; the node is the ArkModule itself
41
+ * - Edge information is implicitly stored via succMap/predMap (Map<NodeID, NodeID[]>)
42
+ * - Works with Canonicalizer<ArkModule> to provide bidirectional ArkModule <-> NodeID mapping
43
+ *
44
+ * SCCDetection has been generalized to accept any graph implementing GraphTraits<any>,
45
+ * i.e. one providing nodesItor(), getNode(id), getNodeID(node), succ(id) methods.
46
+ * ModuleDepGraph satisfies these methods by inheriting from BaseImplicitGraph,
47
+ * without requiring nodes to have BaseNode methods like getID() or getOutgoingEdges().
48
+ */
49
+ class ModuleDepGraph extends BaseImplicitGraph_1.BaseImplicitGraph {
50
+ constructor(moduleCanonicalizer) {
51
+ super();
52
+ /**
53
+ * Edge type map, key is `${srcId}->${dstId}`, value is the dependency type.
54
+ * Used during SCC post-processing to remove edges by dependency type priority.
55
+ */
56
+ this.edgeTypeMap = new Map();
57
+ /**
58
+ * Topological order of nodes after SCC refinement, populated by refineSCCGroups.
59
+ * Depended-on modules appear before their dependents.
60
+ */
61
+ this.topoOrder = [];
62
+ /**
63
+ * SCC groups: NodeID -> all NodeIDs in the same SCC group.
64
+ * Populated by refineSCCGroups and retained for later queries.
65
+ */
66
+ this.sccGroups = new Map();
67
+ /**
68
+ * SCC post-processing threshold: the maximum allowed number of modules in a group; SCCs
69
+ * exceeding this size are split. Default 3; set to Number.MAX_SAFE_INTEGER to disable.
70
+ */
71
+ this.maxSCCGroupSize = 3;
72
+ this.moduleCanonicalizer = moduleCanonicalizer;
73
+ this.nodeToIdMap = new Map();
74
+ this.idToNodeMap = new Map();
75
+ this.succMap = new Map();
76
+ this.predMap = new Map();
77
+ this.edgeTypeMap = new Map();
78
+ }
79
+ getGraphName() {
80
+ return 'ModuleDepGraph';
81
+ }
82
+ /**
83
+ * Add a module node to the graph.
84
+ * The node's NodeID directly uses the ModuleID assigned by the Canonicalizer.
85
+ */
86
+ addModule(module) {
87
+ const id = this.moduleCanonicalizer.getId(module);
88
+ this.nodeToIdMap.set(module, id);
89
+ this.idToNodeMap.set(id, module);
90
+ // Ensure the node has corresponding entries in succMap and predMap (empty arrays)
91
+ if (!this.succMap.has(id)) {
92
+ this.succMap.set(id, []);
93
+ }
94
+ if (!this.predMap.has(id)) {
95
+ this.predMap.set(id, []);
96
+ }
97
+ }
98
+ /**
99
+ * Add a dependency edge: src depends on dst (src -> dst).
100
+ * succMap stores successors (dependency targets), predMap stores predecessors (dependents).
101
+ * @param type Dependency type, used for edge removal priority during SCC post-processing.
102
+ * When the same edge is added twice, the type with the lower removal priority is kept (i.e. the more core dependency).
103
+ */
104
+ addDependencyEdge(srcId, dstId, type = DependencyType.DEPENDENCIES) {
105
+ // Add successor
106
+ let succs = this.succMap.get(srcId);
107
+ if (!succs) {
108
+ succs = [];
109
+ this.succMap.set(srcId, succs);
110
+ }
111
+ if (!succs.includes(dstId)) {
112
+ succs.push(dstId);
113
+ }
114
+ // Add predecessor
115
+ let preds = this.predMap.get(dstId);
116
+ if (!preds) {
117
+ preds = [];
118
+ this.predMap.set(dstId, preds);
119
+ }
120
+ if (!preds.includes(srcId)) {
121
+ preds.push(srcId);
122
+ }
123
+ // Record edge type: when the same edge is added twice, keep the type with the lower removal priority (smaller value = more core)
124
+ const edgeKey = `${srcId}->${dstId}`;
125
+ const existingType = this.edgeTypeMap.get(edgeKey);
126
+ if (existingType === undefined || type < existingType) {
127
+ this.edgeTypeMap.set(edgeKey, type);
128
+ }
129
+ }
130
+ /**
131
+ * Remove a dependency edge.
132
+ */
133
+ removeDependencyEdge(srcId, dstId) {
134
+ this.removeFromAdjacencyList(this.succMap, srcId, dstId);
135
+ this.removeFromAdjacencyList(this.predMap, dstId, srcId);
136
+ this.edgeTypeMap.delete(`${srcId}->${dstId}`);
137
+ }
138
+ /**
139
+ * Remove a node ID from an adjacency list entry.
140
+ */
141
+ removeFromAdjacencyList(adjMap, key, value) {
142
+ const list = adjMap.get(key);
143
+ if (!list) {
144
+ return;
145
+ }
146
+ const idx = list.indexOf(value);
147
+ if (idx >= 0) {
148
+ list.splice(idx, 1);
149
+ }
150
+ }
151
+ /**
152
+ * Get the dependency type of a specific edge.
153
+ * @returns The dependency type, or undefined if the edge does not exist.
154
+ */
155
+ getEdgeType(srcId, dstId) {
156
+ return this.edgeTypeMap.get(`${srcId}->${dstId}`);
157
+ }
158
+ /**
159
+ * Get all successor (dependency target) module IDs of the specified module.
160
+ */
161
+ getSuccModuleIds(moduleId) {
162
+ var _a;
163
+ return (_a = this.succMap.get(moduleId)) !== null && _a !== void 0 ? _a : [];
164
+ }
165
+ /**
166
+ * Get all predecessor (dependent) module IDs of the specified module.
167
+ */
168
+ getPredModuleIds(moduleId) {
169
+ var _a;
170
+ return (_a = this.predMap.get(moduleId)) !== null && _a !== void 0 ? _a : [];
171
+ }
172
+ /**
173
+ * Check whether a dependency edge exists between two modules.
174
+ */
175
+ hasDependencyEdge(srcId, dstId) {
176
+ const succs = this.succMap.get(srcId);
177
+ return succs !== undefined && succs.includes(dstId);
178
+ }
179
+ /**
180
+ * Get the total number of edges in the graph.
181
+ */
182
+ getEdgeCount() {
183
+ let count = 0;
184
+ for (const succs of this.succMap.values()) {
185
+ count += succs.length;
186
+ }
187
+ return count;
188
+ }
189
+ /**
190
+ * Get the topological order produced by the last refineSCCGroups call.
191
+ * Depended-on modules appear before their dependents.
192
+ */
193
+ getTopoOrder() {
194
+ return this.topoOrder;
195
+ }
196
+ /**
197
+ * Get the SCC groups map (NodeID -> all NodeIDs in the same SCC group) produced by the last
198
+ * refineSCCGroups call.
199
+ */
200
+ getSCCGroups() {
201
+ return this.sccGroups;
202
+ }
203
+ /**
204
+ * Set the SCC post-processing threshold. SCCs larger than this size are split.
205
+ * Set to Number.MAX_SAFE_INTEGER to disable post-processing.
206
+ */
207
+ setMaxSCCGroupSize(maxGroupSize) {
208
+ this.maxSCCGroupSize = maxGroupSize;
209
+ }
210
+ /** Current SCC post-processing threshold. */
211
+ getMaxSCCGroupSize() {
212
+ return this.maxSCCGroupSize;
213
+ }
214
+ /**
215
+ * Detect strong bridges in the SCC subgraph.
216
+ * A strong bridge is a directed edge whose removal increases the number of SCCs.
217
+ * For each edge u->v, check if removing it causes u and v to no longer be
218
+ * mutually reachable. If either u cannot reach v or v cannot reach u without
219
+ * the edge, then u->v is a strong bridge.
220
+ * @param members Node IDs in the large SCC
221
+ * @returns Array of strong bridge edges with their dependency types
222
+ */
223
+ findStrongBridges(members) {
224
+ var _a;
225
+ const memberSet = new Set(members);
226
+ const bridges = [];
227
+ // Collect all internal edges
228
+ const edges = [];
229
+ for (const srcId of members) {
230
+ const succs = this.getSuccModuleIds(srcId);
231
+ for (const dstId of succs) {
232
+ if (memberSet.has(dstId)) {
233
+ edges.push({ src: srcId, dst: dstId });
234
+ }
235
+ }
236
+ }
237
+ // For each edge u->v, it is a strong bridge if removing it causes
238
+ // u and v to no longer be in the same SCC.
239
+ for (const edge of edges) {
240
+ const uCanReachV = this.canReachWithoutEdge(edge.src, edge.dst, edge.src, edge.dst, memberSet);
241
+ const vCanReachU = this.canReachWithoutEdge(edge.dst, edge.src, edge.src, edge.dst, memberSet);
242
+ if (!uCanReachV || !vCanReachU) {
243
+ const type = (_a = this.getEdgeType(edge.src, edge.dst)) !== null && _a !== void 0 ? _a : DependencyType.DEPENDENCIES;
244
+ bridges.push({ src: edge.src, dst: edge.dst, type });
245
+ }
246
+ }
247
+ return bridges;
248
+ }
249
+ /**
250
+ * Check if 'from' can reach 'to' in the subgraph, excluding edge excludedSrc->excludedDst.
251
+ * Uses DFS over successor edges within the member set.
252
+ */
253
+ canReachWithoutEdge(from, to, excludedSrc, excludedDst, memberSet) {
254
+ if (from === to) {
255
+ return true;
256
+ }
257
+ const visited = new Set([from]);
258
+ const stack = [from];
259
+ while (stack.length > 0) {
260
+ const u = stack.pop();
261
+ const succs = this.getSuccModuleIds(u);
262
+ for (const v of succs) {
263
+ if (!memberSet.has(v)) {
264
+ continue;
265
+ }
266
+ // Skip the excluded edge
267
+ if (u === excludedSrc && v === excludedDst) {
268
+ continue;
269
+ }
270
+ if (v === to) {
271
+ return true;
272
+ }
273
+ if (!visited.has(v)) {
274
+ visited.add(v);
275
+ stack.push(v);
276
+ }
277
+ }
278
+ }
279
+ return false;
280
+ }
281
+ /**
282
+ * Build a temporary subgraph excluding specified edges, for SCC post-processing.
283
+ * Does not modify the original graph. Edge type labels are preserved from the original graph.
284
+ * @param sccMembers Node IDs in the SCC subgraph
285
+ * @param excludedEdges Set of edge keys ("srcId->dstId") to exclude
286
+ * @returns A new ModuleDepGraph containing only the SCC subgraph without excluded edges
287
+ */
288
+ buildTempGraphWithoutEdges(sccMembers, excludedEdges) {
289
+ var _a;
290
+ const tempGraph = new ModuleDepGraph(this.moduleCanonicalizer);
291
+ const memberSet = new Set(sccMembers);
292
+ for (const memberId of sccMembers) {
293
+ const module = this.moduleCanonicalizer.get(memberId);
294
+ if (module) {
295
+ tempGraph.addModule(module);
296
+ }
297
+ }
298
+ for (const srcId of sccMembers) {
299
+ const succs = this.getSuccModuleIds(srcId);
300
+ for (const dstId of succs) {
301
+ if (memberSet.has(dstId) && !excludedEdges.has(`${srcId}->${dstId}`)) {
302
+ const type = (_a = this.getEdgeType(srcId, dstId)) !== null && _a !== void 0 ? _a : DependencyType.DEPENDENCIES;
303
+ tempGraph.addDependencyEdge(srcId, dstId, type);
304
+ }
305
+ }
306
+ }
307
+ return tempGraph;
308
+ }
309
+ /**
310
+ * Recompute SCC on a temporary subgraph excluding specified edges, returning group results.
311
+ * @param members Node IDs in the SCC
312
+ * @param excludedEdges Set of edge keys to exclude from the temporary subgraph
313
+ * @returns Array of SCC groups, each group is an array of NodeIDs
314
+ */
315
+ recomputeSCC(members, excludedEdges) {
316
+ const tempGraph = this.buildTempGraphWithoutEdges(members, excludedEdges);
317
+ const tempScc = new Scc_1.SCCDetection(tempGraph);
318
+ tempScc.find();
319
+ const tempTopo = tempScc.getTopoAndCollapsedNodeStack();
320
+ const groups = [];
321
+ for (const repId of tempTopo) {
322
+ const groupMembers = Array.from(tempScc.getMySCCNodes(repId));
323
+ groups.push(groupMembers);
324
+ }
325
+ return groups;
326
+ }
327
+ /**
328
+ * Split a single large SCC using strong bridge detection first,
329
+ * then fall back to dependency type priority for remaining edges.
330
+ * Does not modify the original graph.
331
+ * @param members Node IDs in the large SCC
332
+ * @param maxGroupSize Maximum allowed group size after splitting
333
+ * @returns Array of split groups, each group is an array of NodeIDs
334
+ */
335
+ splitLargeSCC(members, maxGroupSize) {
336
+ var _a;
337
+ const excludedEdges = new Set();
338
+ const memberSet = new Set(members);
339
+ // Phase 1: Try removing strong bridges first (precise split)
340
+ const bridges = this.findStrongBridges(members);
341
+ bridges.sort((a, b) => b.type - a.type); // Higher removal priority first
342
+ for (const bridge of bridges) {
343
+ const currentGroups = this.recomputeSCC(members, excludedEdges);
344
+ if (currentGroups.every(g => g.length <= maxGroupSize)) {
345
+ return currentGroups;
346
+ }
347
+ excludedEdges.add(`${bridge.src}->${bridge.dst}`);
348
+ const newGroups = this.recomputeSCC(members, excludedEdges);
349
+ if (newGroups.every(g => g.length <= maxGroupSize)) {
350
+ return newGroups;
351
+ }
352
+ }
353
+ // Phase 2: Fall back to removing remaining edges by dependency type priority
354
+ const edges = [];
355
+ for (const srcId of members) {
356
+ const succs = this.getSuccModuleIds(srcId);
357
+ for (const dstId of succs) {
358
+ if (memberSet.has(dstId) && !excludedEdges.has(`${srcId}->${dstId}`)) {
359
+ const type = (_a = this.getEdgeType(srcId, dstId)) !== null && _a !== void 0 ? _a : DependencyType.DEPENDENCIES;
360
+ edges.push({ src: srcId, dst: dstId, type });
361
+ }
362
+ }
363
+ }
364
+ edges.sort((a, b) => b.type - a.type);
365
+ for (const edge of edges) {
366
+ const currentGroups = this.recomputeSCC(members, excludedEdges);
367
+ if (currentGroups.every(g => g.length <= maxGroupSize)) {
368
+ return currentGroups;
369
+ }
370
+ excludedEdges.add(`${edge.src}->${edge.dst}`);
371
+ const newGroups = this.recomputeSCC(members, excludedEdges);
372
+ if (newGroups.every(g => g.length <= maxGroupSize)) {
373
+ return newGroups;
374
+ }
375
+ }
376
+ return this.recomputeSCC(members, excludedEdges);
377
+ }
378
+ /**
379
+ * Refine SCC groups: split groups exceeding maxGroupSize using strong bridge
380
+ * detection and dependency type priority fallback.
381
+ * Stores the resulting groups in {@link sccGroups} and returns the same map.
382
+ * Also populates the topoOrder field with nodes in dependency order (depended-on first).
383
+ * @param maxGroupSize Maximum allowed group size; Number.MAX_SAFE_INTEGER disables post-processing
384
+ * @returns Map from each member NodeID to its group members array
385
+ */
386
+ refineSCCGroups(maxGroupSize) {
387
+ const scc = new Scc_1.SCCDetection(this);
388
+ scc.find();
389
+ const topoStack = scc.getTopoAndCollapsedNodeStack();
390
+ const sccGroups = new Map();
391
+ this.topoOrder = [];
392
+ const added = new Set();
393
+ for (const repId of topoStack) {
394
+ const members = scc.nodeIsInCycle(repId) ? Array.from(scc.getMySCCNodes(repId)) : [repId];
395
+ const groups = members.length <= maxGroupSize ? [members] : this.splitLargeSCC(members, maxGroupSize);
396
+ if (!scc.nodeIsInCycle(repId)) {
397
+ this.addToTopoAndGroups([repId], [repId], sccGroups, added);
398
+ }
399
+ else {
400
+ for (const group of groups) {
401
+ this.addToTopoAndGroups(group, group, sccGroups, added);
402
+ }
403
+ }
404
+ }
405
+ this.sccGroups = sccGroups;
406
+ return sccGroups;
407
+ }
408
+ /**
409
+ * Add members to topoOrder and sccGroups, skipping already-added members.
410
+ */
411
+ addToTopoAndGroups(members, group, sccGroups, added) {
412
+ for (const memberId of members) {
413
+ if (!added.has(memberId)) {
414
+ added.add(memberId);
415
+ this.topoOrder.push(memberId);
416
+ }
417
+ sccGroups.set(memberId, group);
418
+ }
419
+ }
420
+ }
421
+ exports.ModuleDepGraph = ModuleDepGraph;
@@ -1,4 +1,3 @@
1
- import { BaseNode } from './BaseExplicitGraph';
2
1
  import { NodeID, GraphTraits } from './GraphTraits';
3
2
  type NodeSet = Set<NodeID>;
4
3
  type NodeStack = NodeID[];
@@ -22,7 +21,7 @@ declare class NodeSCCInfo {
22
21
  * Wave Propagation and Deep Propagation for pointer Analysis
23
22
  * CGO 2009
24
23
  */
25
- export declare class SCCDetection<Graph extends GraphTraits<BaseNode>> {
24
+ export declare class SCCDetection<Graph extends GraphTraits<any>> {
26
25
  private _G;
27
26
  private _I;
28
27
  private _D;
@@ -39,7 +38,6 @@ export declare class SCCDetection<Graph extends GraphTraits<BaseNode>> {
39
38
  private setInSCC;
40
39
  private setRep;
41
40
  private getRep;
42
- private getNode;
43
41
  private visit;
44
42
  private clear;
45
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Scc.d.ts","sourceRoot":"","sources":["../../../src/core/graph/Scc.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpD,KAAK,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK,SAAS,GAAG,MAAM,EAAE,CAAC;AAC1B,KAAK,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAGnD;;GAEG;AACH,cAAM,WAAW;IACb,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAU;;IAO3B,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,EAEhB;IAED,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACJ;AAED;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAC,QAAQ,CAAC;IAEzD,OAAO,CAAC,EAAE,CAAQ;IAElB,OAAO,CAAC,EAAE,CAAS;IAInB,OAAO,CAAC,EAAE,CAAe;IAGzB,OAAO,CAAC,EAAE,CAAqB;IAG/B,OAAO,CAAC,EAAE,CAAY;IAKtB,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAAc;gBAEpB,EAAE,EAAE,KAAK;IAYrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,KAAK;IA0Cb,OAAO,CAAC,KAAK;IAWb;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IASpC;;OAEG;IACI,IAAI,IAAI,IAAI;IAWZ,4BAA4B,IAAI,SAAS;IAIzC,kBAAkB,IAAI,kBAAkB;IAKxC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAqBjC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAMjC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAc/B,WAAW,IAAI,OAAO;CAGhC"}
1
+ {"version":3,"file":"Scc.d.ts","sourceRoot":"","sources":["../../../src/core/graph/Scc.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpD,KAAK,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK,SAAS,GAAG,MAAM,EAAE,CAAC;AAC1B,KAAK,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAGnD;;GAEG;AACH,cAAM,WAAW;IACb,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAU;;IAO3B,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,EAEhB;IAED,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACJ;AAED;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAC,GAAG,CAAC;IAEpD,OAAO,CAAC,EAAE,CAAQ;IAElB,OAAO,CAAC,EAAE,CAAS;IAInB,OAAO,CAAC,EAAE,CAAe;IAGzB,OAAO,CAAC,EAAE,CAAqB;IAG/B,OAAO,CAAC,EAAE,CAAY;IAKtB,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAAc;gBAEpB,EAAE,EAAE,KAAK;IAYrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,KAAK;IAwCb,OAAO,CAAC,KAAK;IAWb;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IASpC;;OAEG;IACI,IAAI,IAAI,IAAI;IAWZ,4BAA4B,IAAI,SAAS;IAIzC,kBAAkB,IAAI,kBAAkB;IAKxC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAiBjC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAMjC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAc/B,WAAW,IAAI,OAAO;CAGhC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
3
+ * Copyright (c) 2024-2026 Huawei Device Co., Ltd.
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
6
6
  * You may obtain a copy of the License at
@@ -93,22 +93,13 @@ class SCCDetection {
93
93
  }
94
94
  return info.rep;
95
95
  }
96
- getNode(id) {
97
- let n = this._G.getNode(id);
98
- if (!n) {
99
- throw new Error('Node is not found');
100
- }
101
- return n;
102
- }
103
96
  visit(v) {
104
97
  var _a;
105
98
  this._I += 1;
106
99
  this._D.set(v, this._I);
107
100
  this.setRep(v, v);
108
101
  this.setVisited(v);
109
- let node = this.getNode(v);
110
- (_a = node.getOutgoingEdges()) === null || _a === void 0 ? void 0 : _a.forEach(e => {
111
- let w = e.getDstID();
102
+ (_a = this._G.succ(v)) === null || _a === void 0 ? void 0 : _a.forEach(w => {
112
103
  if (!this.isVisited(w)) {
113
104
  this.visit(w);
114
105
  }
@@ -170,7 +161,7 @@ class SCCDetection {
170
161
  this.clear();
171
162
  let nodeIt = this._G.nodesItor();
172
163
  for (let node of nodeIt) {
173
- const nodeId = node.getID();
164
+ const nodeId = this._G.getNodeID(node);
174
165
  if (!this.isVisited(nodeId) && !this._D.has(nodeId)) {
175
166
  this.visit(nodeId);
176
167
  }
@@ -191,13 +182,9 @@ class SCCDetection {
191
182
  return true;
192
183
  }
193
184
  // self-cycle: a call a
194
- let repNode = this._G.getNode(rep);
195
- const outgoingEdges = repNode === null || repNode === void 0 ? void 0 : repNode.getOutgoingEdges();
196
- if (!outgoingEdges) {
197
- return false;
198
- }
199
- for (const e of outgoingEdges) {
200
- if (e.getDstID() === rep) {
185
+ const successors = this._G.succ(rep);
186
+ for (const w of successors) {
187
+ if (w === rep) {
201
188
  return true;
202
189
  }
203
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
3
+ * Copyright (c) 2024-2026 Huawei Device Co., Ltd.
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
6
6
  * You may obtain a copy of the License at
@@ -554,6 +554,12 @@ class CfgBuilder {
554
554
  else if (ts.isSwitchStatement(c)) {
555
555
  lastStatement = this.ASTNodeSwitchStatement(c, lastStatement, scope.id);
556
556
  }
557
+ else if (ts.isLabeledStatement(c)) {
558
+ let labelExit = new StatementBuilder('labelExit', '', c, scope.id);
559
+ this.exits.push(labelExit);
560
+ this.walkAST(lastStatement, labelExit, [c.statement]);
561
+ lastStatement = labelExit;
562
+ }
557
563
  else if (ts.isBlock(c)) {
558
564
  let blockExit = new StatementBuilder('blockExit', '', c, scope.id);
559
565
  this.exits.push(blockExit);
@@ -32,5 +32,6 @@ export declare class TrapBuilder {
32
32
  private copyFinallyBlocks;
33
33
  private copyBlocks;
34
34
  private copyStmt;
35
+ private copyOriginPosition;
35
36
  }
36
37
  //# sourceMappingURL=TrapBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAcvC,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAK7E;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACxG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQ3B,UAAU,IAAI,IAAI,EAAE;IAS3B,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,wBAAwB;IAyDhC,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;CAoBnB"}
1
+ {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAcvC,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAK7E;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACxG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQ3B,UAAU,IAAI,IAAI,EAAE;IAS3B,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,wBAAwB;IAyDhC,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,kBAAkB;CAM7B"}
@@ -373,30 +373,50 @@ class TrapBuilder {
373
373
  }
374
374
  copyStmt(sourceStmt) {
375
375
  if (sourceStmt instanceof Stmt_1.ArkAssignStmt) {
376
- return new Stmt_1.ArkAssignStmt(sourceStmt.getLeftOp(), sourceStmt.getRightOp());
376
+ const target = new Stmt_1.ArkAssignStmt(sourceStmt.getLeftOp(), sourceStmt.getRightOp());
377
+ this.copyOriginPosition(sourceStmt, target);
378
+ return target;
377
379
  }
378
380
  else if (sourceStmt instanceof Stmt_1.ArkInvokeStmt) {
379
- return new Stmt_1.ArkInvokeStmt(sourceStmt.getInvokeExpr());
381
+ const target = new Stmt_1.ArkInvokeStmt(sourceStmt.getInvokeExpr());
382
+ this.copyOriginPosition(sourceStmt, target);
383
+ return target;
380
384
  }
381
385
  else if (sourceStmt instanceof Stmt_1.ArkIfStmt) {
382
- return new Stmt_1.ArkIfStmt(sourceStmt.getConditionExpr());
386
+ const target = new Stmt_1.ArkIfStmt(sourceStmt.getConditionExpr());
387
+ this.copyOriginPosition(sourceStmt, target);
388
+ return target;
383
389
  }
384
390
  else if (sourceStmt instanceof Stmt_1.ArkReturnStmt) {
385
- return new Stmt_1.ArkReturnStmt(sourceStmt.getOp());
391
+ const target = new Stmt_1.ArkReturnStmt(sourceStmt.getOp());
392
+ this.copyOriginPosition(sourceStmt, target);
393
+ return target;
386
394
  }
387
395
  else if (sourceStmt instanceof Stmt_1.ArkReturnVoidStmt) {
388
- return new Stmt_1.ArkReturnVoidStmt();
396
+ const target = new Stmt_1.ArkReturnVoidStmt();
397
+ this.copyOriginPosition(sourceStmt, target);
398
+ return target;
389
399
  }
390
400
  else if (sourceStmt instanceof Stmt_1.ArkThrowStmt) {
391
- return new Stmt_1.ArkThrowStmt(sourceStmt.getOp());
401
+ const target = new Stmt_1.ArkThrowStmt(sourceStmt.getOp());
402
+ this.copyOriginPosition(sourceStmt, target);
403
+ return target;
392
404
  }
393
405
  else if (sourceStmt instanceof Stmt_1.ArkAliasTypeDefineStmt) {
394
- return new Stmt_1.ArkAliasTypeDefineStmt(sourceStmt.getAliasType(), sourceStmt.getAliasTypeExpr());
406
+ const target = new Stmt_1.ArkAliasTypeDefineStmt(sourceStmt.getAliasType(), sourceStmt.getAliasTypeExpr());
407
+ this.copyOriginPosition(sourceStmt, target);
408
+ return target;
395
409
  }
396
410
  else {
397
411
  logger.error(`unsupported statement type`);
398
412
  return null;
399
413
  }
400
414
  }
415
+ copyOriginPosition(source, target) {
416
+ const originPos = source.getOriginFullPosition();
417
+ if (originPos) {
418
+ target.setOriginFullPosition(originPos);
419
+ }
420
+ }
401
421
  }
402
422
  exports.TrapBuilder = TrapBuilder;
@@ -22,5 +22,6 @@ export declare class ArkBody {
22
22
  getAliasTypeByName(name: string): AliasType | null;
23
23
  getTraps(): Trap[] | undefined;
24
24
  getExportLocalByName(name: string): Local | null;
25
+ clearAllReferences(): void;
25
26
  }
26
27
  //# sourceMappingURL=ArkBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArkBody.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkBody.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,YAAY,CAAC,CAAmD;IACxE,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;IAQlH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAKnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAI1C,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS;IAIhD,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI;IAIjD,MAAM,IAAI,GAAG;IAIb,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAItB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,GAAG,SAAS;IAI/E,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQlD,QAAQ,IAAI,IAAI,EAAE,GAAG,SAAS;IAI9B,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;CAQ1D"}
1
+ {"version":3,"file":"ArkBody.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkBody.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,YAAY,CAAC,CAAmD;IACxE,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;IAQlH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAKnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAI1C,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS;IAIhD,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI;IAIjD,MAAM,IAAI,GAAG;IAIb,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAItB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,GAAG,SAAS;IAI/E,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQlD,QAAQ,IAAI,IAAI,EAAE,GAAG,SAAS;IAI9B,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAShD,kBAAkB,IAAI,IAAI;CAOpC"}