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
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ETS_CODE_PATH = exports.PATH_DELIMITER = exports.ETS_PATH = exports.SCOPE_PREFIX = exports.PATH_BE_OMITTED = exports.DEFAULT_SDK_NUMS = exports.MODULE_PREFIX = exports.OH_MODULES = exports.OHPM = exports.OHOS_BASE_FILE = exports.BUSINESS_ERROR = exports.COMPONENT_EXTEND_DECORATOR = exports.COMMON_METHOD = exports.COMPONENT = exports.BUILD_PROFILE_JSON5 = exports.OH_PACKAGE_JSON5 = exports.ON_OFF = exports.CALL_BACK = exports.COMPONENT_ATTRIBUTE = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.COMPONENT_BEHAVIOR = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.ETS_COMPILER_OPTIONS = void 0;
17
+ exports.ETS_CODE_PATH = exports.PATH_DELIMITER = exports.ETS_PATH = exports.SCOPE_PREFIX = exports.PATH_BE_OMITTED = exports.DEFAULT_SDK_NUMS = exports.MODULE_PREFIX = exports.OH_MODULES = exports.OHPM = exports.OHOS_BASE_FILE = exports.BUSINESS_ERROR = exports.COMPONENT_EXTEND_DECORATOR = exports.COMMON_METHOD = exports.COMPONENT = exports.BUILD_PROFILE_JSON5 = exports.OH_PACKAGE_JSON5 = exports.ON_OFF = exports.CALL_BACK = exports.COMPONENT_ATTRIBUTE = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.addSystemComponent = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.COMPONENT_BEHAVIOR = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.DEFAULT_COMPONENTS = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.ETS_COMPILER_OPTIONS = void 0;
18
18
  exports.ETS_COMPILER_OPTIONS = {
19
19
  ets: {
20
20
  emitDecorators: [
@@ -173,129 +173,7 @@ exports.ETS_COMPILER_OPTIONS = {
173
173
  method: ['build', 'pageTransition'],
174
174
  decorator: ['LocalBuilder', 'Builder'],
175
175
  },
176
- components: [
177
- 'AbilityComponent',
178
- 'AlphabetIndexer',
179
- 'Animator',
180
- 'Badge',
181
- 'Blank',
182
- 'Button',
183
- 'Calendar',
184
- 'CalendarPicker',
185
- 'Camera',
186
- 'Canvas',
187
- 'Checkbox',
188
- 'CheckboxGroup',
189
- 'Circle',
190
- 'ColorPicker',
191
- 'ColorPickerDialog',
192
- 'Column',
193
- 'ColumnSplit',
194
- 'ContentSlot',
195
- 'Counter',
196
- 'DataPanel',
197
- 'DatePicker',
198
- 'Divider',
199
- 'EffectComponent',
200
- 'Ellipse',
201
- 'EmbeddedComponent',
202
- 'Flex',
203
- 'FolderStack',
204
- 'FormComponent',
205
- 'FormLink',
206
- 'Gauge',
207
- 'GeometryView',
208
- 'Grid',
209
- 'GridItem',
210
- 'GridContainer',
211
- 'Hyperlink',
212
- 'Image',
213
- 'ImageAnimator',
214
- 'Line',
215
- 'List',
216
- 'ListItem',
217
- 'ListItemGroup',
218
- 'LoadingProgress',
219
- 'Marquee',
220
- 'MediaCachedImage',
221
- 'Menu',
222
- 'MenuItem',
223
- 'MenuItemGroup',
224
- 'MovingPhotoView',
225
- 'NavDestination',
226
- 'NavRouter',
227
- 'Navigation',
228
- 'Navigator',
229
- 'NodeContainer',
230
- 'Option',
231
- 'PageTransitionEnter',
232
- 'PageTransitionExit',
233
- 'Panel',
234
- 'Particle',
235
- 'Path',
236
- 'PatternLock',
237
- 'Piece',
238
- 'PluginComponent',
239
- 'Polygon',
240
- 'Polyline',
241
- 'Progress',
242
- 'QRCode',
243
- 'Radio',
244
- 'Rating',
245
- 'Rect',
246
- 'Refresh',
247
- 'RelativeContainer',
248
- 'RemoteWindow',
249
- 'RootScene',
250
- 'Row',
251
- 'RowSplit',
252
- 'RichText',
253
- 'Screen',
254
- 'Scroll',
255
- 'ScrollBar',
256
- 'Search',
257
- 'Section',
258
- 'Select',
259
- 'Shape',
260
- 'Sheet',
261
- 'SideBarContainer',
262
- 'Slider',
263
- 'Span',
264
- 'Stack',
265
- 'Stepper',
266
- 'StepperItem',
267
- 'Swiper',
268
- 'SymbolGlyph',
269
- 'SymbolSpan',
270
- 'TabContent',
271
- 'Tabs',
272
- 'Text',
273
- 'TextPicker',
274
- 'TextClock',
275
- 'TextArea',
276
- 'TextInput',
277
- 'TextTimer',
278
- 'TimePicker',
279
- 'Toggle',
280
- 'Video',
281
- 'Web',
282
- 'WindowScene',
283
- 'WithTheme',
284
- 'XComponent',
285
- 'GridRow',
286
- 'GridCol',
287
- 'WaterFlow',
288
- 'FlowItem',
289
- 'ImageSpan',
290
- 'LocationButton',
291
- 'PasteButton',
292
- 'SaveButton',
293
- 'UIExtensionComponent',
294
- 'IsolatedComponent',
295
- 'RichEditor',
296
- 'Component3D',
297
- 'ContainerSpan',
298
- ],
176
+ components: [],
299
177
  extend: {
300
178
  decorator: ['Extend', 'AnimatableExtend'],
301
179
  components: [
@@ -923,7 +801,7 @@ exports.ETS_COMPILER_OPTIONS = {
923
801
  };
924
802
  exports.COMPONENT_FOR_EACH = 'ForEach';
925
803
  exports.COMPONENT_LAZY_FOR_EACH = 'LazyForEach';
926
- exports.BUILDIN_SYSTEM_COMPONENT = new Set([...exports.ETS_COMPILER_OPTIONS.ets.components, exports.COMPONENT_FOR_EACH, exports.COMPONENT_LAZY_FOR_EACH]);
804
+ exports.BUILDIN_SYSTEM_COMPONENT = new Set([exports.COMPONENT_FOR_EACH, exports.COMPONENT_LAZY_FOR_EACH]);
927
805
  exports.BUILDIN_ATOMIC_COMPONENT = new Set([
928
806
  'AbilityComponent',
929
807
  'AlphabetIndexer',
@@ -978,6 +856,129 @@ exports.BUILDIN_ATOMIC_COMPONENT = new Set([
978
856
  'Video',
979
857
  'Web',
980
858
  ]);
859
+ exports.DEFAULT_COMPONENTS = [
860
+ 'AbilityComponent',
861
+ 'AlphabetIndexer',
862
+ 'Animator',
863
+ 'Badge',
864
+ 'Blank',
865
+ 'Button',
866
+ 'Calendar',
867
+ 'CalendarPicker',
868
+ 'Camera',
869
+ 'Canvas',
870
+ 'Checkbox',
871
+ 'CheckboxGroup',
872
+ 'Circle',
873
+ 'ColorPicker',
874
+ 'ColorPickerDialog',
875
+ 'Column',
876
+ 'ColumnSplit',
877
+ 'ContentSlot',
878
+ 'Counter',
879
+ 'DataPanel',
880
+ 'DatePicker',
881
+ 'Divider',
882
+ 'EffectComponent',
883
+ 'Ellipse',
884
+ 'EmbeddedComponent',
885
+ 'Flex',
886
+ 'FolderStack',
887
+ 'FormComponent',
888
+ 'FormLink',
889
+ 'Gauge',
890
+ 'GeometryView',
891
+ 'Grid',
892
+ 'GridItem',
893
+ 'GridContainer',
894
+ 'Hyperlink',
895
+ 'Image',
896
+ 'ImageAnimator',
897
+ 'Line',
898
+ 'List',
899
+ 'ListItem',
900
+ 'ListItemGroup',
901
+ 'LoadingProgress',
902
+ 'Marquee',
903
+ 'MediaCachedImage',
904
+ 'Menu',
905
+ 'MenuItem',
906
+ 'MenuItemGroup',
907
+ 'MovingPhotoView',
908
+ 'NavDestination',
909
+ 'NavRouter',
910
+ 'Navigation',
911
+ 'Navigator',
912
+ 'NodeContainer',
913
+ 'Option',
914
+ 'PageTransitionEnter',
915
+ 'PageTransitionExit',
916
+ 'Panel',
917
+ 'Particle',
918
+ 'Path',
919
+ 'PatternLock',
920
+ 'Piece',
921
+ 'PluginComponent',
922
+ 'Polygon',
923
+ 'Polyline',
924
+ 'Progress',
925
+ 'QRCode',
926
+ 'Radio',
927
+ 'Rating',
928
+ 'Rect',
929
+ 'Refresh',
930
+ 'RelativeContainer',
931
+ 'RemoteWindow',
932
+ 'RootScene',
933
+ 'Row',
934
+ 'RowSplit',
935
+ 'RichText',
936
+ 'Screen',
937
+ 'Scroll',
938
+ 'ScrollBar',
939
+ 'Search',
940
+ 'Section',
941
+ 'Select',
942
+ 'Shape',
943
+ 'Sheet',
944
+ 'SideBarContainer',
945
+ 'Slider',
946
+ 'Span',
947
+ 'Stack',
948
+ 'Stepper',
949
+ 'StepperItem',
950
+ 'Swiper',
951
+ 'SymbolGlyph',
952
+ 'SymbolSpan',
953
+ 'TabContent',
954
+ 'Tabs',
955
+ 'Text',
956
+ 'TextPicker',
957
+ 'TextClock',
958
+ 'TextArea',
959
+ 'TextInput',
960
+ 'TextTimer',
961
+ 'TimePicker',
962
+ 'Toggle',
963
+ 'Video',
964
+ 'Web',
965
+ 'WindowScene',
966
+ 'WithTheme',
967
+ 'XComponent',
968
+ 'GridRow',
969
+ 'GridCol',
970
+ 'WaterFlow',
971
+ 'FlowItem',
972
+ 'ImageSpan',
973
+ 'LocationButton',
974
+ 'PasteButton',
975
+ 'SaveButton',
976
+ 'UIExtensionComponent',
977
+ 'IsolatedComponent',
978
+ 'RichEditor',
979
+ 'Component3D',
980
+ 'ContainerSpan',
981
+ ];
981
982
  exports.COMPONENT_DECORATOR = new Set(['Reusable', 'Component', 'ComponentV2', 'CustomDialog']);
982
983
  exports.ENTRY_DECORATOR = 'Entry';
983
984
  exports.BUILDER_DECORATOR = 'Builder';
@@ -995,6 +996,13 @@ function isEtsContainerComponent(name) {
995
996
  return isEtsSystemComponent(name) && !isEtsAtomicComponent(name);
996
997
  }
997
998
  exports.isEtsContainerComponent = isEtsContainerComponent;
999
+ function addSystemComponent(componentNames) {
1000
+ componentNames.forEach(name => {
1001
+ exports.ETS_COMPILER_OPTIONS.ets.components.push(name);
1002
+ exports.BUILDIN_SYSTEM_COMPONENT.add(name);
1003
+ });
1004
+ }
1005
+ exports.addSystemComponent = addSystemComponent;
998
1006
  exports.COMPONENT_CREATE_FUNCTION = 'create';
999
1007
  exports.COMPONENT_POP_FUNCTION = 'pop';
1000
1008
  exports.COMPONENT_CUSTOMVIEW = 'View';
@@ -29,5 +29,6 @@ export declare class SdkUtils {
29
29
  static copyMembers(from: ArkClass, to: ArkClass): void;
30
30
  static computeGlobalThis(leftOp: AbstractFieldRef, arkMethod: ArkMethod): void;
31
31
  static extendArkUI(scene: Scene): void;
32
+ static loadSystemComponentsFromSdk(sdkPath: string): void;
32
33
  }
33
34
  //# sourceMappingURL=SdkUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoB;IAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAGxB;IAEH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoD;IAC/E,OAAc,aAAa,SAAc;IACzC,OAAO,CAAC,MAAM,CAAC,cAAc,CAG3B;WAEY,YAAY,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;WAQrC,aAAa,IAAI,GAAG;WAoBpB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAW9D,OAAO,CAAC,MAAM,CAAC,QAAQ;WAaT,OAAO,IAAI,IAAI;WAIf,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAStC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIjE,OAAO,CAAC,MAAM,CAAC,YAAY;WAUb,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAqBrE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAiBpF,OAAO,CAAC,MAAM,CAAC,aAAa;WAWd,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;WAY3F,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAgBrF,OAAO,CAAC,MAAM,CAAC,SAAS;IAiBxB,OAAO,CAAC,MAAM,CAAC,eAAe;WA0BhB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;WAqB/C,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;WAWvE,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAWhD"}
1
+ {"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAU3D,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoB;IAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAGxB;IAEH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoD;IAC/E,OAAc,aAAa,SAAc;IACzC,OAAO,CAAC,MAAM,CAAC,cAAc,CAG3B;WAEY,YAAY,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;WAQrC,aAAa,IAAI,GAAG;WAoBpB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAW9D,OAAO,CAAC,MAAM,CAAC,QAAQ;WAaT,OAAO,IAAI,IAAI;WAIf,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAStC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIjE,OAAO,CAAC,MAAM,CAAC,YAAY;WAUb,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAqBrE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAiBpF,OAAO,CAAC,MAAM,CAAC,aAAa;WAWd,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;WAY3F,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAgBrF,OAAO,CAAC,MAAM,CAAC,SAAS;IAiBxB,OAAO,CAAC,MAAM,CAAC,eAAe;WA0BhB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;WAqB/C,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;WAWvE,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;WAgB/B,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAwBnE"}
@@ -294,6 +294,35 @@ class SdkUtils {
294
294
  mtd.setIsGeneratedFlag(true);
295
295
  cls.addMethod(mtd);
296
296
  }
297
+ if (EtsConst_1.BUILDIN_SYSTEM_COMPONENT.size < EtsConst_1.DEFAULT_COMPONENTS.length) {
298
+ (0, EtsConst_1.addSystemComponent)(EtsConst_1.DEFAULT_COMPONENTS);
299
+ logger.error('System component not found, fall back to default component. Please check sdk setting.');
300
+ }
301
+ }
302
+ static loadSystemComponentsFromSdk(sdkPath) {
303
+ const componentsDir = path_1.default.join(sdkPath, 'build-tools', 'ets-loader', 'components');
304
+ if (!fs_1.default.existsSync(componentsDir)) {
305
+ return;
306
+ }
307
+ const componentFiles = fs_1.default.readdirSync(componentsDir)
308
+ .filter(file => file.endsWith('.json'));
309
+ const componentNames = [];
310
+ componentFiles.forEach(file => {
311
+ const filePath = path_1.default.join(componentsDir, file);
312
+ try {
313
+ const content = fs_1.default.readFileSync(filePath, 'utf-8');
314
+ const componentData = JSON.parse(content);
315
+ if (componentData && typeof componentData.name === 'string') {
316
+ componentNames.push(componentData.name);
317
+ }
318
+ }
319
+ catch (error) {
320
+ logger.error(`Failed to parse component file: ${filePath}`, error);
321
+ }
322
+ });
323
+ if (componentNames.length > 0) {
324
+ (0, EtsConst_1.addSystemComponent)(componentNames);
325
+ }
297
326
  }
298
327
  }
299
328
  exports.SdkUtils = SdkUtils;
@@ -50,6 +50,8 @@ export declare abstract class BaseExplicitGraph implements GraphTraits<BaseNode>
50
50
  nodesItor(): IterableIterator<BaseNode>;
51
51
  addNode(n: BaseNode): void;
52
52
  getNode(id: NodeID): BaseNode | undefined;
53
+ getNodeID(node: BaseNode): NodeID;
54
+ succ(id: NodeID): NodeID[];
53
55
  hasNode(id: NodeID): boolean;
54
56
  removeNode(id: NodeID): boolean;
55
57
  hasEdge(src: BaseNode, dst: BaseNode): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseExplicitGraph.d.ts","sourceRoot":"","sources":["../../../src/core/graph/BaseExplicitGraph.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxB,8BAAsB,QAAQ;IAC1B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,GAAG,CAAW;IACtB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;gBAET,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI;IAMtC,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;IAIlB,UAAU,IAAI,QAAQ;IAItB,UAAU,IAAI,QAAQ;IAItB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,YAAY,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAO5C,UAAU,IAAI,MAAM;CAG9B;AAED,8BAAsB,QAAQ;IAC1B,OAAO,CAAC,EAAE,CAAS;IACnB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAgB;gBAErB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI;IAKxB,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,OAAO;IAI3B,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIrC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIrC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAOlC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAOlC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIxC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIxC,eAAe,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI5C,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI7C,UAAU,IAAI,MAAM;aAIX,WAAW,IAAI,MAAM;CACxC;AAED,8BAAsB,iBAAkB,YAAW,WAAW,CAAC,QAAQ,CAAC;IACpE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;;IAO5B,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,SAAS,IAAI,gBAAgB,CAAC,QAAQ,CAAC;IAIvC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAK1B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQ/B,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO;IAc9C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAUvC,YAAY,IAAI,gBAAgB,CAAC,QAAQ,CAAC;aAIjC,YAAY,IAAI,MAAM;CACzC"}
1
+ {"version":3,"file":"BaseExplicitGraph.d.ts","sourceRoot":"","sources":["../../../src/core/graph/BaseExplicitGraph.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxB,8BAAsB,QAAQ;IAC1B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,GAAG,CAAW;IACtB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;gBAET,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI;IAMtC,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;IAIlB,UAAU,IAAI,QAAQ;IAItB,UAAU,IAAI,QAAQ;IAItB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,YAAY,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAO5C,UAAU,IAAI,MAAM;CAG9B;AAED,8BAAsB,QAAQ;IAC1B,OAAO,CAAC,EAAE,CAAS;IACnB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAgB;gBAErB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI;IAKxB,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,OAAO;IAI3B,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIrC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIrC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAOlC,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAOlC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIxC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIxC,eAAe,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI5C,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI7C,UAAU,IAAI,MAAM;aAIX,WAAW,IAAI,MAAM;CACxC;AAED,8BAAsB,iBAAkB,YAAW,WAAW,CAAC,QAAQ,CAAC;IACpE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAK;IAC9B,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;;IAO5B,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,SAAS,IAAI,gBAAgB,CAAC,QAAQ,CAAC;IAIvC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAK1B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQzC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIjC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAS1B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQ/B,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO;IAc9C,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAUvC,YAAY,IAAI,gBAAgB,CAAC,QAAQ,CAAC;aAIjC,YAAY,IAAI,MAAM;CACzC"}
@@ -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
@@ -131,6 +131,17 @@ class BaseExplicitGraph {
131
131
  }
132
132
  return this.idToNodeMap.get(id);
133
133
  }
134
+ getNodeID(node) {
135
+ return node.getID();
136
+ }
137
+ succ(id) {
138
+ const node = this.getNode(id);
139
+ const outgoingEdges = node === null || node === void 0 ? void 0 : node.getOutgoingEdges();
140
+ if (!outgoingEdges) {
141
+ return [];
142
+ }
143
+ return Array.from(outgoingEdges).map(e => e.getDstID());
144
+ }
134
145
  hasNode(id) {
135
146
  return this.idToNodeMap.has(id);
136
147
  }
@@ -44,6 +44,22 @@ export declare abstract class BaseImplicitGraph<Node> implements GraphTraits<Nod
44
44
  * @throws Throws an error if idToNodeMap is not initialized or if the node is not found.
45
45
  */
46
46
  getNode(id: NodeID): Node;
47
+ /**
48
+ * Safely gets the node object corresponding to a given node ID.
49
+ * Unlike {@link getNode}, this method does not throw; it returns undefined when the
50
+ * idToNodeMap is not initialized or the node is not found.
51
+ * @param id The node ID.
52
+ * @returns The corresponding node object, or undefined when not found.
53
+ */
54
+ tryGetNode(id: NodeID): Node | undefined;
55
+ /**
56
+ * Safely gets the node ID corresponding to a given node object.
57
+ * Unlike {@link getNodeID}, this method does not throw; it returns undefined
58
+ * when the node is not found in the nodeToIdMap.
59
+ * @param node The node object.
60
+ * @returns The corresponding NodeID, or undefined when not found.
61
+ */
62
+ tryGetNodeID(node: Node): NodeID | undefined;
47
63
  getNodeID(s: Node): NodeID;
48
64
  /**
49
65
  * Checks whether the graph contains a specific node ID.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseImplicitGraph.d.ts","sourceRoot":"","sources":["../../../src/core/graph/BaseImplicitGraph.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB;;;;GAIG;AACH,8BAAsB,iBAAiB,CAAC,IAAI,CAAE,YAAW,WAAW,CAAC,IAAI,CAAC;IACtE;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,WAAW,EAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE1C;;;OAGG;IACH,OAAO,EAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhC;;;OAGG;IACH,OAAO,EAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;;IAIhC;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYzB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM;IAQjC;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQnC;;;;OAIG;IACI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC;;;;OAIG;IACI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC;;;OAGG;IACI,cAAc,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IAI1C;;;;OAIG;aACa,YAAY,IAAI,MAAM;CACzC"}
1
+ {"version":3,"file":"BaseImplicitGraph.d.ts","sourceRoot":"","sources":["../../../src/core/graph/BaseImplicitGraph.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB;;;;GAIG;AACH,8BAAsB,iBAAiB,CAAC,IAAI,CAAE,YAAW,WAAW,CAAC,IAAI,CAAC;IACtE;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,WAAW,EAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE1C;;;OAGG;IACH,OAAO,EAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhC;;;OAGG;IACH,OAAO,EAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;;IAIhC;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYhC;;;;;;OAMG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAI/C;;;;;;OAMG;IACI,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IAI5C,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM;IAQjC;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQnC;;;;OAIG;IACI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC;;;;OAIG;IACI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC;;;OAGG;IACI,cAAc,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IAI1C;;;;OAIG;aACa,YAAY,IAAI,MAAM;CACzC"}
@@ -37,6 +37,27 @@ class BaseImplicitGraph {
37
37
  }
38
38
  return this.idToNodeMap.get(id);
39
39
  }
40
+ /**
41
+ * Safely gets the node object corresponding to a given node ID.
42
+ * Unlike {@link getNode}, this method does not throw; it returns undefined when the
43
+ * idToNodeMap is not initialized or the node is not found.
44
+ * @param id The node ID.
45
+ * @returns The corresponding node object, or undefined when not found.
46
+ */
47
+ tryGetNode(id) {
48
+ var _a;
49
+ return (_a = this.idToNodeMap) === null || _a === void 0 ? void 0 : _a.get(id);
50
+ }
51
+ /**
52
+ * Safely gets the node ID corresponding to a given node object.
53
+ * Unlike {@link getNodeID}, this method does not throw; it returns undefined
54
+ * when the node is not found in the nodeToIdMap.
55
+ * @param node The node object.
56
+ * @returns The corresponding NodeID, or undefined when not found.
57
+ */
58
+ tryGetNodeID(node) {
59
+ return this.nodeToIdMap.get(node);
60
+ }
40
61
  getNodeID(s) {
41
62
  if (!this.nodeToIdMap.has(s)) {
42
63
  throw new Error(`Can find Node # ${s}`);
@@ -0,0 +1,75 @@
1
+ import { BaseImplicitGraph } from './BaseImplicitGraph';
2
+ import type { NodeID } from './BaseImplicitGraph';
3
+ import type { ArkFile } from '../model/ArkFile';
4
+ import type { Canonicalizer } from '../../utils/Canonicalizer';
5
+ /**
6
+ * File dependency graph, based on BaseImplicitGraph.
7
+ * The node type is ArkFile, and edges represent dependency relationships between files.
8
+ *
9
+ * Similar to ModuleDepGraph but operates at file granularity:
10
+ * - The node is the ArkFile itself, identified by its Canonicalizer-assigned ID
11
+ * - Edge information is implicitly stored via succMap/predMap (Map<NodeID, NodeID[]>)
12
+ * - Works with Canonicalizer<ArkFile> to provide bidirectional ArkFile <-> NodeID mapping
13
+ *
14
+ * SCCDetection is used to compute a topological order of files (depended-on files first).
15
+ */
16
+ export declare class FileDepGraph extends BaseImplicitGraph<ArkFile> {
17
+ /**
18
+ * File Canonicalizer for bidirectional ArkFile <-> NodeID mapping.
19
+ */
20
+ private fileCanonicalizer;
21
+ /**
22
+ * Topological order of nodes after SCC computation, populated by computeTopoOrder.
23
+ * Depended-on files appear before their dependents.
24
+ */
25
+ private topoOrder;
26
+ constructor(fileCanonicalizer: Canonicalizer<ArkFile>);
27
+ getGraphName(): string;
28
+ /**
29
+ * Add a file node to the graph.
30
+ * The node's NodeID directly uses the ID assigned by the Canonicalizer.
31
+ */
32
+ addFile(file: ArkFile): void;
33
+ /**
34
+ * Add a dependency edge: src depends on dst (src -> dst).
35
+ * succMap stores successors (dependency targets), predMap stores predecessors (dependents).
36
+ */
37
+ addDependencyEdge(srcId: NodeID, dstId: NodeID): void;
38
+ /**
39
+ * Remove a dependency edge.
40
+ */
41
+ removeDependencyEdge(srcId: NodeID, dstId: NodeID): void;
42
+ /**
43
+ * Remove a node ID from an adjacency list entry.
44
+ */
45
+ private removeFromAdjacencyList;
46
+ /**
47
+ * Get all successor (dependency target) file IDs of the specified file.
48
+ */
49
+ getSuccFileIds(fileId: NodeID): NodeID[];
50
+ /**
51
+ * Get all predecessor (dependent) file IDs of the specified file.
52
+ */
53
+ getPredFileIds(fileId: NodeID): NodeID[];
54
+ /**
55
+ * Check whether a dependency edge exists between two files.
56
+ */
57
+ hasDependencyEdge(srcId: NodeID, dstId: NodeID): boolean;
58
+ /**
59
+ * Get the total number of edges in the graph.
60
+ */
61
+ getEdgeCount(): number;
62
+ /**
63
+ * Get the topological order produced by the last computeTopoOrder call.
64
+ * Depended-on files appear before their dependents.
65
+ */
66
+ getTopoOrder(): NodeID[];
67
+ /**
68
+ * Compute the topological order of all files using SCCDetection.
69
+ * Each SCC representative in the topological stack is expanded to its members,
70
+ * so every node appears exactly once. The result is stored in topoOrder and returned.
71
+ * Depended-on files appear before their dependents.
72
+ */
73
+ computeTopoOrder(): NodeID[];
74
+ }
75
+ //# sourceMappingURL=FileDepGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDepGraph.d.ts","sourceRoot":"","sources":["../../../src/core/graph/FileDepGraph.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IACxD;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAyB;IAElD;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAgB;gBAErB,iBAAiB,EAAE,aAAa,CAAC,OAAO,CAAC;IAS9C,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAcnC;;;OAGG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAsB5D;;OAEG;IACI,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/D;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/C;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/C;;OAEG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAK/D;;OAEG;IACI,YAAY,IAAI,MAAM;IAQ7B;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B;;;;;OAKG;IACI,gBAAgB,IAAI,MAAM,EAAE;CAoBtC"}