@idlizer/arktscgen 2.1.7 → 2.1.9-arktscgen-4

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 (354) hide show
  1. package/build/libarkts-copy/generator/options.json5 +34 -0
  2. package/build/libarkts-copy/native/meson.build +128 -75
  3. package/build/libarkts-copy/native/meson_options.txt +6 -0
  4. package/build/libarkts-copy/native/src/bridges.cc +271 -8
  5. package/build/libarkts-copy/native/src/common.cc +166 -45
  6. package/build/libarkts-copy/native/src/common.h +53 -8
  7. package/build/libarkts-copy/native/src/generated/bridges.cc +2654 -319
  8. package/build/libarkts-copy/package.json +31 -17
  9. package/build/libarkts-copy/src/Es2pandaNativeModule.ts +97 -3
  10. package/build/libarkts-copy/src/arkts-api/AbstractVisitor.ts +1 -1
  11. package/build/libarkts-copy/src/arkts-api/ChainExpressionFilter.ts +78 -0
  12. package/build/libarkts-copy/src/arkts-api/CheckedBackFilter.ts +86 -8
  13. package/build/libarkts-copy/src/arkts-api/CompileWithCache.ts +193 -0
  14. package/build/libarkts-copy/src/arkts-api/ImportStorage.ts +78 -0
  15. package/build/libarkts-copy/src/arkts-api/InferVoidReturnType.ts +89 -0
  16. package/build/libarkts-copy/src/arkts-api/ProgramProvider.ts +50 -0
  17. package/build/libarkts-copy/src/arkts-api/SetBaseOverloads.ts +10 -17
  18. package/build/libarkts-copy/src/arkts-api/class-by-peer.ts +2 -3
  19. package/build/libarkts-copy/src/arkts-api/factory/nodeFactory.ts +89 -6
  20. package/build/libarkts-copy/src/arkts-api/index.ts +10 -1
  21. package/build/libarkts-copy/src/arkts-api/node-cache.ts +8 -4
  22. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationDeclaration.ts +32 -0
  23. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationUsage.ts +37 -0
  24. package/build/libarkts-copy/src/arkts-api/node-utilities/ArkTsConfig.ts +26 -0
  25. package/build/libarkts-copy/src/arkts-api/node-utilities/ArrayExpression.ts +1 -1
  26. package/build/libarkts-copy/src/arkts-api/node-utilities/BinaryExpression.ts +37 -0
  27. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockExpression.ts +27 -0
  28. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockStatement.ts +29 -0
  29. package/build/libarkts-copy/src/arkts-api/node-utilities/CallExpression.ts +2 -2
  30. package/build/libarkts-copy/src/arkts-api/node-utilities/ChainExpression.ts +27 -0
  31. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDeclaration.ts +54 -0
  32. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDefinition.ts +1 -1
  33. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassProperty.ts +3 -3
  34. package/build/libarkts-copy/src/arkts-api/node-utilities/ConditionalExpression.ts +36 -0
  35. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSFunctionType.ts +2 -2
  36. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSImportDeclaration.ts +3 -33
  37. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSNewClassInstanceExpression.ts +34 -0
  38. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSParameterExpression.ts +3 -9
  39. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSPrimitiveType.ts +28 -0
  40. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSStructDeclaration.ts +1 -1
  41. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTuple.ts +1 -1
  42. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReference.ts +27 -0
  43. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReferencePart.ts +36 -0
  44. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUndefinedType.ts +24 -0
  45. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUnionType.ts +27 -0
  46. package/build/libarkts-copy/src/arkts-api/node-utilities/Identifier.ts +27 -0
  47. package/build/libarkts-copy/src/arkts-api/node-utilities/ImportSpecifier.ts +31 -0
  48. package/build/libarkts-copy/src/arkts-api/node-utilities/MemberExpression.ts +1 -1
  49. package/build/libarkts-copy/src/arkts-api/node-utilities/MethodDefinition.ts +2 -2
  50. package/build/libarkts-copy/src/arkts-api/node-utilities/NullLiteral.ts +24 -0
  51. package/build/libarkts-copy/src/arkts-api/node-utilities/NumberLiteral.ts +2 -2
  52. package/build/libarkts-copy/src/arkts-api/node-utilities/ObjectExpression.ts +1 -1
  53. package/build/libarkts-copy/src/arkts-api/node-utilities/Program.ts +40 -0
  54. package/build/libarkts-copy/src/arkts-api/node-utilities/ReturnStatement.ts +27 -0
  55. package/build/libarkts-copy/src/arkts-api/node-utilities/StringLiteral.ts +27 -0
  56. package/build/libarkts-copy/src/arkts-api/node-utilities/SuperExpression.ts +24 -0
  57. package/build/libarkts-copy/src/arkts-api/node-utilities/TSAsExpression.ts +36 -0
  58. package/build/libarkts-copy/src/arkts-api/node-utilities/TSClassImplements.ts +31 -0
  59. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceBody.ts +28 -0
  60. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceDeclaration.ts +2 -2
  61. package/build/libarkts-copy/src/arkts-api/node-utilities/TSNonNullExpression.ts +27 -0
  62. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameter.ts +1 -1
  63. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterDeclaration.ts +31 -0
  64. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterInstantiation.ts +30 -0
  65. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeReferencePart.ts +1 -1
  66. package/build/libarkts-copy/src/arkts-api/node-utilities/TemplateLiteral.ts +35 -0
  67. package/build/libarkts-copy/src/arkts-api/node-utilities/ThisExpression.ts +24 -0
  68. package/build/libarkts-copy/src/arkts-api/node-utilities/UndefinedLiteral.ts +24 -0
  69. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclaration.ts +1 -1
  70. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclarator.ts +1 -1
  71. package/build/libarkts-copy/src/arkts-api/peers/ArktsObject.ts +3 -1
  72. package/build/libarkts-copy/src/arkts-api/peers/AstNode.ts +75 -12
  73. package/build/libarkts-copy/src/arkts-api/peers/Config.ts +8 -1
  74. package/build/libarkts-copy/src/arkts-api/peers/Context.ts +71 -4
  75. package/build/libarkts-copy/src/arkts-api/peers/{Program.ts → ExternalSource.ts} +2 -22
  76. package/build/libarkts-copy/src/arkts-api/peers/Options.ts +34 -0
  77. package/build/libarkts-copy/src/arkts-api/plugins.ts +26 -12
  78. package/build/libarkts-copy/src/arkts-api/static/global.ts +7 -4
  79. package/build/libarkts-copy/src/arkts-api/static/profiler.ts +180 -23
  80. package/build/libarkts-copy/src/arkts-api/utilities/private.ts +32 -8
  81. package/build/libarkts-copy/src/arkts-api/utilities/public.ts +54 -12
  82. package/build/libarkts-copy/src/arkts-api/visitor.ts +32 -37
  83. package/build/libarkts-copy/src/arkts-api/wrapper-compat.ts +32 -0
  84. package/build/libarkts-copy/src/checkSdk.ts +25 -0
  85. package/build/libarkts-copy/src/generated/Es2pandaEnums.ts +448 -436
  86. package/build/libarkts-copy/src/generated/Es2pandaNativeModule.ts +778 -63
  87. package/build/libarkts-copy/src/generated/factory.ts +12 -15
  88. package/build/libarkts-copy/src/generated/index.ts +10 -3
  89. package/build/libarkts-copy/src/generated/peers/AnnotatedAstNode.ts +7 -1
  90. package/build/libarkts-copy/src/generated/peers/AnnotatedExpression.ts +7 -1
  91. package/build/libarkts-copy/src/generated/peers/AnnotatedStatement.ts +7 -1
  92. package/build/libarkts-copy/src/generated/peers/AnnotationDeclaration.ts +58 -6
  93. package/build/libarkts-copy/src/generated/peers/AnnotationUsage.ts +10 -4
  94. package/build/libarkts-copy/src/generated/peers/ArkTsConfig.ts +75 -0
  95. package/build/libarkts-copy/src/generated/peers/ArrayExpression.ts +11 -5
  96. package/build/libarkts-copy/src/generated/peers/ArrowFunctionExpression.ts +40 -6
  97. package/build/libarkts-copy/src/generated/peers/AssertStatement.ts +9 -3
  98. package/build/libarkts-copy/src/generated/peers/AssignmentExpression.ts +11 -5
  99. package/build/libarkts-copy/src/generated/peers/AstDumper.ts +7 -1
  100. package/build/libarkts-copy/src/generated/peers/AstVerifier.ts +7 -1
  101. package/build/libarkts-copy/src/generated/peers/AstVisitor.ts +7 -1
  102. package/build/libarkts-copy/src/generated/peers/AwaitExpression.ts +9 -3
  103. package/build/libarkts-copy/src/generated/peers/BigIntLiteral.ts +9 -3
  104. package/build/libarkts-copy/src/generated/peers/BinaryExpression.ts +9 -3
  105. package/build/libarkts-copy/src/generated/peers/BindingProps.ts +7 -1
  106. package/build/libarkts-copy/src/generated/peers/BlockExpression.ts +10 -4
  107. package/build/libarkts-copy/src/generated/peers/BlockStatement.ts +26 -7
  108. package/build/libarkts-copy/src/generated/peers/BooleanLiteral.ts +9 -3
  109. package/build/libarkts-copy/src/generated/peers/BreakStatement.ts +10 -4
  110. package/build/libarkts-copy/src/generated/peers/CallExpression.ts +20 -3
  111. package/build/libarkts-copy/src/generated/peers/CatchClause.ts +10 -4
  112. package/build/libarkts-copy/src/generated/peers/ChainExpression.ts +9 -3
  113. package/build/libarkts-copy/src/generated/peers/CharLiteral.ts +9 -3
  114. package/build/libarkts-copy/src/generated/peers/ClassDeclaration.ts +33 -4
  115. package/build/libarkts-copy/src/generated/peers/ClassDefinition.ts +128 -42
  116. package/build/libarkts-copy/src/generated/peers/ClassElement.ts +28 -4
  117. package/build/libarkts-copy/src/generated/peers/ClassExpression.ts +9 -3
  118. package/build/libarkts-copy/src/generated/peers/ClassProperty.ts +39 -5
  119. package/build/libarkts-copy/src/generated/peers/ClassStaticBlock.ts +9 -3
  120. package/build/libarkts-copy/src/generated/peers/CodeGen.ts +7 -1
  121. package/build/libarkts-copy/src/generated/peers/ConditionalExpression.ts +9 -3
  122. package/build/libarkts-copy/src/generated/peers/ContinueStatement.ts +10 -4
  123. package/build/libarkts-copy/src/generated/peers/DebuggerStatement.ts +9 -3
  124. package/build/libarkts-copy/src/generated/peers/Declaration.ts +7 -1
  125. package/build/libarkts-copy/src/generated/peers/Decorator.ts +9 -3
  126. package/build/libarkts-copy/src/generated/peers/{OverloadInfo.ts → DiagnosticInfo.ts} +8 -2
  127. package/build/libarkts-copy/src/generated/peers/DirectEvalExpression.ts +9 -3
  128. package/build/libarkts-copy/src/generated/peers/DoWhileStatement.ts +9 -3
  129. package/build/libarkts-copy/src/generated/peers/DynamicImportData.ts +7 -1
  130. package/build/libarkts-copy/src/generated/peers/ETSClassLiteral.ts +10 -4
  131. package/build/libarkts-copy/src/generated/peers/ETSFunctionType.ts +10 -4
  132. package/build/libarkts-copy/src/generated/peers/ETSImportDeclaration.ts +16 -5
  133. package/build/libarkts-copy/src/generated/peers/ETSKeyofType.ts +10 -4
  134. package/build/libarkts-copy/src/generated/peers/ETSModule.ts +59 -4
  135. package/build/libarkts-copy/src/generated/peers/ETSNewArrayInstanceExpression.ts +10 -4
  136. package/build/libarkts-copy/src/generated/peers/ETSNewClassInstanceExpression.ts +11 -5
  137. package/build/libarkts-copy/src/generated/peers/ETSNewMultiDimArrayInstanceExpression.ts +11 -5
  138. package/build/libarkts-copy/src/generated/peers/ETSNullType.ts +10 -4
  139. package/build/libarkts-copy/src/generated/peers/ETSPackageDeclaration.ts +10 -4
  140. package/build/libarkts-copy/src/generated/peers/ETSParameterExpression.ts +46 -12
  141. package/build/libarkts-copy/src/generated/peers/ETSPrimitiveType.ts +10 -4
  142. package/build/libarkts-copy/src/generated/peers/ETSReExportDeclaration.ts +7 -1
  143. package/build/libarkts-copy/src/generated/peers/ETSStringLiteralType.ts +10 -4
  144. package/build/libarkts-copy/src/generated/peers/ETSStructDeclaration.ts +10 -4
  145. package/build/libarkts-copy/src/generated/peers/ETSTuple.ts +14 -8
  146. package/build/libarkts-copy/src/generated/peers/ETSTypeReference.ts +10 -4
  147. package/build/libarkts-copy/src/generated/peers/ETSTypeReferencePart.ts +11 -5
  148. package/build/libarkts-copy/src/generated/peers/ETSUndefinedType.ts +10 -4
  149. package/build/libarkts-copy/src/generated/peers/ETSUnionType.ts +15 -4
  150. package/build/libarkts-copy/src/generated/peers/ETSWildcardType.ts +10 -4
  151. package/build/libarkts-copy/src/generated/peers/EmptyStatement.ts +16 -4
  152. package/build/libarkts-copy/src/generated/peers/ErrorLogger.ts +7 -1
  153. package/build/libarkts-copy/src/generated/peers/ExportAllDeclaration.ts +9 -3
  154. package/build/libarkts-copy/src/generated/peers/ExportDefaultDeclaration.ts +9 -3
  155. package/build/libarkts-copy/src/generated/peers/ExportNamedDeclaration.ts +18 -7
  156. package/build/libarkts-copy/src/generated/peers/ExportSpecifier.ts +26 -3
  157. package/build/libarkts-copy/src/generated/peers/Expression.ts +7 -1
  158. package/build/libarkts-copy/src/generated/peers/ExpressionStatement.ts +9 -3
  159. package/build/libarkts-copy/src/generated/peers/ForInStatement.ts +9 -3
  160. package/build/libarkts-copy/src/generated/peers/ForOfStatement.ts +9 -3
  161. package/build/libarkts-copy/src/generated/peers/ForUpdateStatement.ts +8 -2
  162. package/build/libarkts-copy/src/generated/peers/FunctionDecl.ts +7 -1
  163. package/build/libarkts-copy/src/generated/peers/FunctionDeclaration.ts +44 -6
  164. package/build/libarkts-copy/src/generated/peers/FunctionExpression.ts +10 -4
  165. package/build/libarkts-copy/src/generated/peers/FunctionSignature.ts +7 -1
  166. package/build/libarkts-copy/src/generated/peers/IRNode.ts +7 -1
  167. package/build/libarkts-copy/src/generated/peers/Identifier.ts +16 -5
  168. package/build/libarkts-copy/src/generated/peers/IfStatement.ts +14 -3
  169. package/build/libarkts-copy/src/generated/peers/ImportDeclaration.ts +28 -4
  170. package/build/libarkts-copy/src/generated/peers/ImportDefaultSpecifier.ts +9 -3
  171. package/build/libarkts-copy/src/generated/peers/ImportExpression.ts +9 -3
  172. package/build/libarkts-copy/src/generated/peers/ImportNamespaceSpecifier.ts +9 -3
  173. package/build/libarkts-copy/src/generated/peers/ImportSource.ts +7 -1
  174. package/build/libarkts-copy/src/generated/peers/ImportSpecifier.ts +9 -3
  175. package/build/libarkts-copy/src/generated/peers/IndexInfo.ts +7 -1
  176. package/build/libarkts-copy/src/generated/peers/InterfaceDecl.ts +7 -1
  177. package/build/libarkts-copy/src/generated/peers/LabelPair.ts +7 -1
  178. package/build/libarkts-copy/src/generated/peers/LabelledStatement.ts +9 -3
  179. package/build/libarkts-copy/src/generated/peers/Literal.ts +15 -1
  180. package/build/libarkts-copy/src/generated/peers/LoopStatement.ts +7 -1
  181. package/build/libarkts-copy/src/generated/peers/MaybeOptionalExpression.ts +7 -1
  182. package/build/libarkts-copy/src/generated/peers/MemberExpression.ts +9 -3
  183. package/build/libarkts-copy/src/generated/peers/MetaProperty.ts +9 -3
  184. package/build/libarkts-copy/src/generated/peers/MethodDefinition.ts +26 -10
  185. package/build/libarkts-copy/src/generated/peers/NamedType.ts +9 -3
  186. package/build/libarkts-copy/src/generated/peers/NewExpression.ts +9 -3
  187. package/build/libarkts-copy/src/generated/peers/NullLiteral.ts +9 -3
  188. package/build/libarkts-copy/src/generated/peers/NumberLiteral.ts +15 -9
  189. package/build/libarkts-copy/src/generated/peers/ObjectDescriptor.ts +7 -1
  190. package/build/libarkts-copy/src/generated/peers/ObjectExpression.ts +10 -4
  191. package/build/libarkts-copy/src/generated/peers/OmittedExpression.ts +9 -3
  192. package/build/libarkts-copy/src/generated/peers/OpaqueTypeNode.ts +10 -4
  193. package/build/libarkts-copy/src/generated/peers/PrefixAssertionExpression.ts +9 -3
  194. package/build/libarkts-copy/src/generated/peers/Program.ts +194 -0
  195. package/build/libarkts-copy/src/generated/peers/Property.ts +10 -4
  196. package/build/libarkts-copy/src/generated/peers/RegExpLiteral.ts +9 -3
  197. package/build/libarkts-copy/src/generated/peers/ReturnStatement.ts +10 -4
  198. package/build/libarkts-copy/src/generated/peers/ScopeFindResult.ts +7 -1
  199. package/build/libarkts-copy/src/generated/peers/ScriptFunction.ts +77 -10
  200. package/build/libarkts-copy/src/generated/peers/ScriptFunctionData.ts +7 -1
  201. package/build/libarkts-copy/src/generated/peers/SequenceExpression.ts +9 -3
  202. package/build/libarkts-copy/src/generated/peers/SignatureInfo.ts +7 -1
  203. package/build/libarkts-copy/src/generated/peers/SourcePosition.ts +7 -1
  204. package/build/libarkts-copy/src/generated/peers/SourceRange.ts +7 -1
  205. package/build/libarkts-copy/src/generated/peers/SpreadElement.ts +10 -4
  206. package/build/libarkts-copy/src/generated/peers/SrcDumper.ts +46 -9
  207. package/build/libarkts-copy/src/generated/peers/Statement.ts +7 -1
  208. package/build/libarkts-copy/src/generated/peers/StringLiteral.ts +10 -4
  209. package/build/libarkts-copy/src/generated/peers/{ETSDynamicFunctionType.ts → SuggestionInfo.ts} +7 -5
  210. package/build/libarkts-copy/src/generated/peers/SuperExpression.ts +10 -4
  211. package/build/libarkts-copy/src/generated/peers/SwitchCaseStatement.ts +10 -4
  212. package/build/libarkts-copy/src/generated/peers/SwitchStatement.ts +10 -4
  213. package/build/libarkts-copy/src/generated/peers/TSAnyKeyword.ts +10 -4
  214. package/build/libarkts-copy/src/generated/peers/TSArrayType.ts +10 -4
  215. package/build/libarkts-copy/src/generated/peers/TSAsExpression.ts +10 -4
  216. package/build/libarkts-copy/src/generated/peers/TSBigintKeyword.ts +10 -4
  217. package/build/libarkts-copy/src/generated/peers/TSBooleanKeyword.ts +10 -4
  218. package/build/libarkts-copy/src/generated/peers/TSClassImplements.ts +11 -5
  219. package/build/libarkts-copy/src/generated/peers/TSConditionalType.ts +10 -4
  220. package/build/libarkts-copy/src/generated/peers/TSConstructorType.ts +10 -4
  221. package/build/libarkts-copy/src/generated/peers/TSEnumDeclaration.ts +48 -6
  222. package/build/libarkts-copy/src/generated/peers/TSEnumMember.ts +11 -5
  223. package/build/libarkts-copy/src/generated/peers/TSExternalModuleReference.ts +10 -4
  224. package/build/libarkts-copy/src/generated/peers/TSFunctionType.ts +10 -4
  225. package/build/libarkts-copy/src/generated/peers/TSImportEqualsDeclaration.ts +10 -4
  226. package/build/libarkts-copy/src/generated/peers/TSImportType.ts +10 -4
  227. package/build/libarkts-copy/src/generated/peers/TSIndexSignature.ts +10 -4
  228. package/build/libarkts-copy/src/generated/peers/TSIndexedAccessType.ts +10 -4
  229. package/build/libarkts-copy/src/generated/peers/TSInferType.ts +10 -4
  230. package/build/libarkts-copy/src/generated/peers/TSInterfaceBody.ts +10 -4
  231. package/build/libarkts-copy/src/generated/peers/TSInterfaceDeclaration.ts +78 -8
  232. package/build/libarkts-copy/src/generated/peers/TSInterfaceHeritage.ts +10 -4
  233. package/build/libarkts-copy/src/generated/peers/TSIntersectionType.ts +10 -4
  234. package/build/libarkts-copy/src/generated/peers/TSLiteralType.ts +10 -4
  235. package/build/libarkts-copy/src/generated/peers/TSMappedType.ts +10 -4
  236. package/build/libarkts-copy/src/generated/peers/TSMethodSignature.ts +10 -4
  237. package/build/libarkts-copy/src/generated/peers/TSModuleBlock.ts +10 -4
  238. package/build/libarkts-copy/src/generated/peers/TSModuleDeclaration.ts +10 -4
  239. package/build/libarkts-copy/src/generated/peers/TSNamedTupleMember.ts +10 -4
  240. package/build/libarkts-copy/src/generated/peers/TSNeverKeyword.ts +10 -4
  241. package/build/libarkts-copy/src/generated/peers/TSNonNullExpression.ts +10 -4
  242. package/build/libarkts-copy/src/generated/peers/TSNullKeyword.ts +10 -4
  243. package/build/libarkts-copy/src/generated/peers/TSNumberKeyword.ts +10 -4
  244. package/build/libarkts-copy/src/generated/peers/TSObjectKeyword.ts +10 -4
  245. package/build/libarkts-copy/src/generated/peers/TSParameterProperty.ts +10 -4
  246. package/build/libarkts-copy/src/generated/peers/TSParenthesizedType.ts +10 -4
  247. package/build/libarkts-copy/src/generated/peers/TSPropertySignature.ts +10 -4
  248. package/build/libarkts-copy/src/generated/peers/TSQualifiedName.ts +10 -4
  249. package/build/libarkts-copy/src/generated/peers/TSSignatureDeclaration.ts +10 -4
  250. package/build/libarkts-copy/src/generated/peers/TSStringKeyword.ts +10 -4
  251. package/build/libarkts-copy/src/generated/peers/TSThisType.ts +10 -4
  252. package/build/libarkts-copy/src/generated/peers/TSTupleType.ts +10 -4
  253. package/build/libarkts-copy/src/generated/peers/TSTypeAliasDeclaration.ts +53 -6
  254. package/build/libarkts-copy/src/generated/peers/TSTypeAssertion.ts +10 -4
  255. package/build/libarkts-copy/src/generated/peers/TSTypeLiteral.ts +10 -4
  256. package/build/libarkts-copy/src/generated/peers/TSTypeOperator.ts +10 -4
  257. package/build/libarkts-copy/src/generated/peers/TSTypeParameter.ts +41 -7
  258. package/build/libarkts-copy/src/generated/peers/TSTypeParameterDeclaration.ts +15 -4
  259. package/build/libarkts-copy/src/generated/peers/TSTypeParameterInstantiation.ts +10 -4
  260. package/build/libarkts-copy/src/generated/peers/TSTypePredicate.ts +10 -4
  261. package/build/libarkts-copy/src/generated/peers/TSTypeQuery.ts +10 -4
  262. package/build/libarkts-copy/src/generated/peers/TSTypeReference.ts +10 -4
  263. package/build/libarkts-copy/src/generated/peers/TSUndefinedKeyword.ts +10 -4
  264. package/build/libarkts-copy/src/generated/peers/TSUnionType.ts +10 -4
  265. package/build/libarkts-copy/src/generated/peers/TSUnknownKeyword.ts +10 -4
  266. package/build/libarkts-copy/src/generated/peers/TSVoidKeyword.ts +10 -4
  267. package/build/libarkts-copy/src/generated/peers/TaggedTemplateExpression.ts +10 -4
  268. package/build/libarkts-copy/src/generated/peers/TemplateElement.ts +11 -5
  269. package/build/libarkts-copy/src/generated/peers/TemplateLiteral.ts +10 -4
  270. package/build/libarkts-copy/src/generated/peers/ThisExpression.ts +10 -4
  271. package/build/libarkts-copy/src/generated/peers/ThrowStatement.ts +10 -4
  272. package/build/libarkts-copy/src/generated/peers/TryStatement.ts +11 -5
  273. package/build/libarkts-copy/src/generated/peers/TypeNode.ts +37 -3
  274. package/build/libarkts-copy/src/generated/peers/TypedAstNode.ts +7 -1
  275. package/build/libarkts-copy/src/generated/peers/TypedStatement.ts +7 -1
  276. package/build/libarkts-copy/src/generated/peers/TypeofExpression.ts +10 -4
  277. package/build/libarkts-copy/src/generated/peers/UnaryExpression.ts +15 -4
  278. package/build/libarkts-copy/src/generated/peers/UndefinedLiteral.ts +9 -3
  279. package/build/libarkts-copy/src/generated/peers/UpdateExpression.ts +10 -4
  280. package/build/libarkts-copy/src/generated/peers/VReg.ts +7 -1
  281. package/build/libarkts-copy/src/generated/peers/ValidationInfo.ts +7 -1
  282. package/build/libarkts-copy/src/generated/peers/VariableDeclaration.ts +48 -8
  283. package/build/libarkts-copy/src/generated/peers/VariableDeclarator.ts +11 -5
  284. package/build/libarkts-copy/src/generated/peers/VerificationContext.ts +7 -1
  285. package/build/libarkts-copy/src/generated/peers/VerifierMessage.ts +7 -1
  286. package/build/libarkts-copy/src/generated/peers/WhileStatement.ts +15 -4
  287. package/build/libarkts-copy/src/generated/peers/YieldExpression.ts +10 -4
  288. package/build/libarkts-copy/src/index.ts +13 -1
  289. package/build/libarkts-copy/src/plugin-utils.ts +117 -0
  290. package/build/libarkts-copy/src/utils.ts +17 -28
  291. package/build/libarkts-copy/src/wrapper-compat/README.md +16 -0
  292. package/build/libarkts-copy/src/wrapper-compat/arkts-api/class-by-peer.ts +46 -0
  293. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeFactory.ts +454 -0
  294. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeTests.ts +99 -0
  295. package/build/libarkts-copy/src/wrapper-compat/arkts-api/index.ts +88 -0
  296. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrayExpression.ts +38 -0
  297. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrowFunctionExpression.ts +35 -0
  298. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/AssignmentExpression.ts +38 -0
  299. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/BlockStatement.ts +27 -0
  300. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/CallExpression.ts +45 -0
  301. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDeclaration.ts +27 -0
  302. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDefinition.ts +73 -0
  303. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassProperty.ts +51 -0
  304. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSFunctionType.ts +42 -0
  305. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSImportDeclaration.ts +39 -0
  306. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSParameterExpression.ts +43 -0
  307. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ExpressionStatement.ts +28 -0
  308. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionDeclaration.ts +37 -0
  309. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionExpression.ts +28 -0
  310. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/IfStatement.ts +37 -0
  311. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MemberExpression.ts +42 -0
  312. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MethodDefinition.ts +46 -0
  313. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/NumberLiteral.ts +30 -0
  314. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ObjectExpression.ts +37 -0
  315. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/Property.ts +27 -0
  316. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ScriptFunction.ts +46 -0
  317. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/StructDeclaration.ts +28 -0
  318. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSInterfaceDeclaration.ts +47 -0
  319. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +40 -0
  320. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeParameter.ts +36 -0
  321. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TryStatement.ts +41 -0
  322. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclaration.ts +42 -0
  323. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclarator.ts +39 -0
  324. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ArktsObject.ts +45 -0
  325. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/AstNode.ts +26 -0
  326. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Config.ts +53 -0
  327. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Context.ts +60 -0
  328. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Diagnostic.ts +39 -0
  329. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticInfo.ts +33 -0
  330. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticKind.ts +33 -0
  331. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ImportPathManager.ts +34 -0
  332. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Program.ts +105 -0
  333. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourcePosition.ts +38 -0
  334. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourceRange.ts +38 -0
  335. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SuggestionInfo.ts +33 -0
  336. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/global.ts +16 -0
  337. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/globalUtils.ts +27 -0
  338. package/build/libarkts-copy/src/wrapper-compat/arkts-api/to-be-generated/MemberExpression.ts +108 -0
  339. package/build/libarkts-copy/src/wrapper-compat/arkts-api/types.ts +907 -0
  340. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/nativePtrDecoder.ts +69 -0
  341. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/performance.ts +190 -0
  342. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/private.ts +198 -0
  343. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/public.ts +325 -0
  344. package/build/libarkts-copy/src/wrapper-compat/arkts-api/visitor.ts +421 -0
  345. package/build/libarkts-copy/src/wrapper-compat/index.ts +20 -0
  346. package/lib/index.js +323 -148
  347. package/package.json +2 -2
  348. package/templates/Es2pandaEnums.ts +4 -0
  349. package/templates/Es2pandaNativeModule.ts +5 -1
  350. package/templates/factory.ts +5 -1
  351. package/templates/index.ts +5 -1
  352. package/templates/node-map.ts +5 -1
  353. package/templates/peer.ts +5 -1
  354. package/build/libarkts-copy/README.md +0 -36
@@ -14,10 +14,11 @@
14
14
  */
15
15
 
16
16
  import { ArktsObject } from "./ArktsObject"
17
- import { Program } from "./Program"
17
+ import { Program } from "../../generated"
18
18
  import { global } from "../static/global"
19
- import { passString } from "../utilities/private"
20
- import { KNativePointer } from "@koalaui/interop"
19
+ import { passString, passStringArray } from "../utilities/private"
20
+ import { KNativePointer, nullptr } from "@koalaui/interop"
21
+ import { Config } from "./Config"
21
22
 
22
23
  export class Context extends ArktsObject {
23
24
  constructor(peer: KNativePointer) {
@@ -39,7 +40,73 @@ export class Context extends ArktsObject {
39
40
  )
40
41
  }
41
42
 
43
+ static createFromFile(filePath: string, configPath: string, stdlibPath: string, outputPath: string): Context | undefined {
44
+ const config = Config.create([
45
+ "",
46
+ "--arktsconfig",
47
+ configPath,
48
+ '--extension',
49
+ 'ets',
50
+ '--stdlib',
51
+ stdlibPath,
52
+ filePath,
53
+ '--output',
54
+ outputPath,
55
+ ])
56
+ return new Context(
57
+ global.es2panda._CreateContextFromFile(
58
+ config.peer,
59
+ passString(filePath)
60
+ )
61
+ )
62
+ }
63
+
64
+ static createCacheFromFile(filePath: string, config: Config, globalContext: GlobalContext, isExternal: boolean) {
65
+ return new Context(
66
+ global.es2panda._CreateCacheContextFromFile(
67
+ config.peer,
68
+ passString(filePath),
69
+ globalContext.peer,
70
+ isExternal
71
+ )
72
+ )
73
+ }
74
+
75
+
76
+ destroy() {
77
+ if (this.peer != nullptr) {
78
+ global.es2panda._DestroyContext(this.peer)
79
+ this.peer = nullptr
80
+ }
81
+ }
82
+
42
83
  get program(): Program {
43
84
  return new Program(global.es2panda._ContextProgram(this.peer));
44
85
  }
45
- }
86
+ }
87
+
88
+ export class GlobalContext extends ArktsObject {
89
+ static create(
90
+ config: Config, externalFileList: string[]
91
+ ): GlobalContext {
92
+ return new GlobalContext(
93
+ global.es2panda._CreateGlobalContext(
94
+ config.peer,
95
+ passStringArray(externalFileList),
96
+ externalFileList.length,
97
+ false
98
+ )
99
+ )
100
+ }
101
+
102
+ constructor(peer: KNativePointer) {
103
+ super(peer)
104
+ }
105
+
106
+ destroy() {
107
+ if (this.peer != nullptr) {
108
+ global.es2panda._DestroyGlobalContext(this.peer)
109
+ this.peer = nullptr
110
+ }
111
+ }
112
+ }
@@ -13,31 +13,11 @@
13
13
  * limitations under the License.
14
14
  */
15
15
 
16
- import { ArktsObject } from "./ArktsObject"
17
16
  import { global } from "../static/global"
18
17
  import { acceptNativeObjectArrayResult, unpackString } from "../utilities/private"
19
18
  import { KNativePointer, nullptr } from "@koalaui/interop"
20
- import { ETSModule } from "../../generated"
21
-
22
- export class Program extends ArktsObject {
23
- constructor(peer: KNativePointer) {
24
- super(peer)
25
- }
26
-
27
- get astNode(): ETSModule {
28
- let program = global.es2panda._ProgramAst(global.context, this.peer)
29
- if (program == nullptr) throw new Error(`astNode() cannt get AST`)
30
- return new ETSModule(program)
31
- }
32
-
33
- get externalSources(): ExternalSource[] {
34
- return acceptNativeObjectArrayResult<ExternalSource>(
35
- global.es2panda._ProgramExternalSources(global.context, this.peer),
36
- (instance: KNativePointer) => new ExternalSource(instance)
37
- )
38
- }
39
-
40
- }
19
+ import { Program } from "../../generated"
20
+ import { ArktsObject } from "./ArktsObject"
41
21
 
42
22
  export class ExternalSource extends ArktsObject {
43
23
  constructor(peer: KNativePointer) {
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Copyright (c) 2025 Huawei Device Co., Ltd.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+
16
+ import { KNativePointer } from "@koalaui/interop"
17
+ import { ArktsObject } from "./ArktsObject"
18
+ import { global } from "../static/global"
19
+ import { Config } from "./Config"
20
+ import { ArkTsConfig } from "../../generated"
21
+
22
+ export class Options extends ArktsObject {
23
+ constructor(peer: KNativePointer) {
24
+ super(peer)
25
+ }
26
+
27
+ static createOptions(config: Config) {
28
+ return new Options(global.es2panda._ConfigGetOptions(config.peer))
29
+ }
30
+
31
+ getArkTsConfig(): ArkTsConfig {
32
+ return new ArkTsConfig(global.es2panda._OptionsArkTsConfig(global.context, this.peer))
33
+ }
34
+ }
@@ -14,15 +14,34 @@
14
14
  */
15
15
 
16
16
  import { Es2pandaContextState } from "../generated/Es2pandaEnums"
17
- import { ExternalSource, Program } from "./peers/Program"
17
+ import { Program } from "../generated"
18
+ import { ExternalSource } from "./peers/ExternalSource"
19
+ import { programGetExternalSources } from "./node-utilities/Program"
20
+ import { KNativePointer } from "@koalaui/interop"
21
+ import { global } from "./static/global"
18
22
 
19
23
  export interface CompilationOptions {
20
24
  readonly isMainProgram: boolean,
21
- readonly name: string,
22
25
  readonly stage: Es2pandaContextState,
26
+ readonly restart: boolean,
23
27
  }
24
28
 
25
- export type ProgramTransformer = (program: Program, compilationOptions: CompilationOptions) => void
29
+ export interface PluginContext {
30
+ setParameter<V>(name: string, value: V): void
31
+ parameter<V>(name: string) : V | undefined
32
+
33
+ }
34
+ export class PluginContextImpl implements PluginContext {
35
+ map = new Map<String, Object|undefined>()
36
+ parameter<V>(name: string): V|undefined {
37
+ return this.map.get(name) as (V|undefined)
38
+ }
39
+ setParameter<V>(name: string, value: V) {
40
+ this.map.set(name, value as Object)
41
+ }
42
+ }
43
+
44
+ export type ProgramTransformer = (program: Program, compilationOptions: CompilationOptions, context: PluginContext) => void
26
45
 
27
46
  export function defaultFilter(name: string) {
28
47
  if (name.startsWith("std.")) return false
@@ -30,17 +49,12 @@ export function defaultFilter(name: string) {
30
49
  return true
31
50
  }
32
51
 
33
- export interface ProgramWithName {
34
- program: Program,
35
- name: string
36
- }
37
-
38
- export function listPrograms(program: Program, filter: (name: string) => boolean = defaultFilter): ProgramWithName[] {
52
+ export function listPrograms(program: Program, filter: (name: string) => boolean = defaultFilter, context: KNativePointer = global.context): Program[] {
39
53
  return [
40
- { program, name: "" },
41
- ...program.externalSources.flatMap((it: ExternalSource) => {
54
+ program,
55
+ ...programGetExternalSources(program, context).flatMap((it: ExternalSource) => {
42
56
  if (filter(it.getName())) {
43
- return it.programs.map(program => ({ program, name: it.getName() } as ProgramWithName))
57
+ return it.programs
44
58
  }
45
59
  return []
46
60
  })
@@ -20,12 +20,12 @@ import { Es2pandaNativeModule as GeneratedEs2pandaNativeModule } from "../../gen
20
20
  import { initInterop, InteropNativeModule } from "../../InteropNativeModule"
21
21
  import { Context } from "../peers/Context"
22
22
  import { Profiler } from "./profiler"
23
- import { Program } from "../peers/Program"
23
+ import { ArkTsConfig } from "../../generated"
24
24
 
25
25
  export class global {
26
26
  public static filePath: string = "./plugins/input/main.ets"
27
- public static packageName: string = ""
28
- public static filePathFromPackageRoot: string = global.filePath
27
+
28
+ public static arktsconfig?: ArkTsConfig
29
29
 
30
30
  private static _config?: KNativePointer
31
31
  public static set config(config: KNativePointer) {
@@ -37,10 +37,13 @@ export class global {
37
37
  public static configIsInitialized(): boolean {
38
38
  return global._config !== undefined && global._config !== nullptr
39
39
  }
40
+ public static resetConfig(): void {
41
+ global._config = undefined
42
+ }
40
43
 
41
44
  // TODO: rename to contextPeer
42
45
  public static get context(): KNativePointer {
43
- return global.compilerContext.peer ?? throwError('Global.context not initialized')
46
+ return global.compilerContext?.peer ?? throwError('Global.context not initialized')
44
47
  }
45
48
 
46
49
  // TODO: rename to context when the pointer valued one is eliminated
@@ -13,28 +13,185 @@
13
13
  * limitations under the License.
14
14
  */
15
15
 
16
- export class Profiler {
17
- totalTime = 0
18
- transformTime = 0
19
- proceedTime = 0
20
- restartTime = 0
21
- visitedNodes = 0
22
- createdNodes = 0
16
+ import * as fs from "fs"
17
+ import * as path from "path"
18
+ import { Es2pandaContextState } from "../../generated/Es2pandaEnums"
19
+ import { global } from "./global"
20
+
21
+ const PERFORMANCE_DATA_DIR = "./performance-results/"
22
+
23
+ interface PluginData {
24
+ transformTime: number
25
+ transformTimeDeps: number
26
+ visitedNodes: number
27
+ createdNodes: number
28
+ contextState?: Es2pandaContextState
29
+ }
30
+
31
+ function emptyPluginData(contextState?: Es2pandaContextState): PluginData {
32
+ return {
33
+ transformTime: 0,
34
+ transformTimeDeps: 0,
35
+ visitedNodes: 0,
36
+ createdNodes: 0,
37
+ contextState: contextState
38
+ }
39
+ }
40
+
41
+ interface PerformanceData {
42
+ filePath: string
43
+
44
+ visitedNodes: number
45
+ createdNodes: number
46
+ restartTime: number
47
+ proceedTime: number
48
+ totalTime: number
49
+
50
+ pluginsByName: Record<string, PluginData>
51
+ }
52
+
53
+ interface PerformanceDataFile {
54
+ data: PerformanceData[]
55
+ summary?: PerformanceData
56
+ }
57
+
58
+ function parseFile(performanceFile: string): PerformanceDataFile | undefined {
59
+ if (!fs.existsSync(performanceFile)) return undefined
60
+
61
+ const data = fs.readFileSync(path.resolve(performanceFile)).toString()
62
+ if (!data.length) return undefined
63
+ return JSON.parse(data) as PerformanceDataFile
64
+ }
65
+
66
+ export class Profiler implements PerformanceData {
67
+ filePath: string = ""
68
+ visitedNodes: number = 0
69
+ createdNodes: number = 0
70
+ restartTime: number = 0
71
+ proceedTime: number = 0
72
+ totalTime: number = 0
73
+ pluginsByName: Record<string, PluginData> = {}
74
+
75
+ curPlugin: string = ""
76
+ curContextState?: Es2pandaContextState
77
+
78
+ private getPluginData(pluginName: string, contextState?: Es2pandaContextState): PluginData {
79
+ if (!(pluginName in this.pluginsByName)) {
80
+ this.pluginsByName[pluginName] = emptyPluginData(contextState)
81
+ }
82
+ return this.pluginsByName[pluginName]
83
+ }
84
+
85
+ disableReport = false
86
+
87
+ nodeCreated() {
88
+ this.createdNodes++
89
+ if (this.curPlugin) this.getPluginData(this.curPlugin, this.curContextState).createdNodes++
90
+ }
91
+
92
+ nodeVisited() {
93
+ this.visitedNodes++
94
+ if (this.curPlugin) this.getPluginData(this.curPlugin, this.curContextState).visitedNodes++
95
+ }
96
+
97
+ private transformStartTime = 0
98
+ transformStarted() {
99
+ this.transformStartTime = Date.now()
100
+ }
101
+ private transformDepStartTime = 0
102
+ transformDepStarted() {
103
+ this.transformDepStartTime = Date.now()
104
+ }
105
+
106
+ transformEnded(state: Es2pandaContextState, pluginName: string) {
107
+ const transformEndTime = Date.now()
108
+ const consumedTime = transformEndTime - this.transformStartTime
109
+ this.getPluginData(pluginName, state).transformTime += consumedTime
110
+ }
111
+
112
+ transformDepEnded(state: Es2pandaContextState, pluginName: string) {
113
+ const transformEndTime = Date.now()
114
+ const consumedTime = transformEndTime - this.transformDepStartTime
115
+ this.getPluginData(pluginName, state).transformTimeDeps += consumedTime
116
+ }
117
+
118
+ restarted(consumedTime: number) {
119
+ this.restartTime += consumedTime
120
+ }
121
+
122
+ proceededToState(consumedTime: number) {
123
+ this.proceedTime += consumedTime
124
+ }
125
+
126
+ private compilationStartTime = 0
127
+ compilationStarted(filePath: string) {
128
+ this.filePath = filePath
129
+
130
+ this.visitedNodes = 0
131
+ this.createdNodes = 0
132
+ this.restartTime = 0
133
+ this.proceedTime = 0
134
+ this.totalTime = 0
135
+ this.pluginsByName = {}
136
+
137
+ this.curPlugin = ""
138
+ this.compilationStartTime = Date.now()
139
+ }
140
+
141
+ compilationEnded() {
142
+ const consumedTime: number = Date.now() - this.compilationStartTime
143
+ this.totalTime = consumedTime
144
+ }
23
145
 
24
146
  report() {
25
- console.log(
26
- "total compiler:",
27
- this.totalTime,
28
- " proceeds:",
29
- this.proceedTime,
30
- " restarts",
31
- this.restartTime,
32
- " transforms:",
33
- this.transformTime,
34
- " visited:",
35
- this.visitedNodes,
36
- " created:",
37
- this.createdNodes
38
- )
39
- }
40
- }
147
+ Object.entries(this.pluginsByName).forEach((data, key) => {
148
+ console.log(data[0], "totalTransformTime =", data[1].transformTime, "ms")
149
+ console.log(data[0], "totalDepsTransformTime =", data[1].transformTimeDeps, "ms")
150
+ })
151
+ }
152
+
153
+ reportToFile(withSummary: boolean = false) {
154
+ if (this.disableReport) return
155
+ const outDir = path.resolve(global.arktsconfig!.outDir, PERFORMANCE_DATA_DIR)
156
+ fs.mkdirSync(outDir, { recursive: true })
157
+ const outFilePath = path.resolve(outDir, path.basename(this.filePath)) + ".json"
158
+
159
+ const data: PerformanceDataFile = { data: [this as PerformanceData] }
160
+ if (!fs.existsSync(outFilePath)) {
161
+ fs.writeFileSync(outFilePath, JSON.stringify(data))
162
+ } else {
163
+ const savedData: PerformanceDataFile | undefined = parseFile(outFilePath) ?? data
164
+ savedData.data.push(this as PerformanceData)
165
+
166
+ if (withSummary) {
167
+ const summary: PerformanceData = {
168
+ filePath: this.filePath,
169
+ visitedNodes: savedData.data.map(it => it.visitedNodes).reduce((sum, it) => sum + it),
170
+ createdNodes: savedData.data.map(it => it.createdNodes).reduce((sum, it) => sum + it),
171
+ restartTime: savedData.data.map(it => it.restartTime).reduce((sum, it) => sum + it),
172
+ proceedTime: savedData.data.map(it => it.proceedTime).reduce((sum, it) => sum + it),
173
+ totalTime: savedData.data.map(it => it.totalTime).reduce((sum, it) => sum + it),
174
+ pluginsByName: {}
175
+ }
176
+ const pluginNames = new Set(savedData.data.flatMap(it => Object.keys(it.pluginsByName)))
177
+ for (const pluginName of pluginNames) {
178
+ const sumTransformTime = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].transformTime).reduce((sum, it) => sum+it)
179
+ const sumTransformTimeDeps = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].transformTimeDeps).reduce((sum, it) => sum+it)
180
+ const sumCreatedNodes = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].createdNodes).reduce((sum, it) => sum+it)
181
+ const sumVisitedNodes = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].visitedNodes).reduce((sum, it) => sum+it)
182
+
183
+ summary.pluginsByName[pluginName] = {
184
+ transformTime: sumTransformTime,
185
+ transformTimeDeps: sumTransformTimeDeps,
186
+ createdNodes: sumCreatedNodes,
187
+ visitedNodes: sumVisitedNodes,
188
+ }
189
+ }
190
+
191
+ savedData.summary = summary
192
+ }
193
+
194
+ fs.writeFileSync(outFilePath, JSON.stringify(savedData))
195
+ }
196
+ }
197
+ }
@@ -121,13 +121,9 @@ export function unpackString(peer: KNativePointer): string {
121
121
 
122
122
  // TODO: use direct string arguments instead.
123
123
  export function passString(str: string | undefined): string {
124
- if (str === undefined) {
125
- return ""
126
- }
127
- return withString(str, (it: string) => it)
124
+ return str ?? ""
128
125
  }
129
126
 
130
-
131
127
  // TODO: use direct string arguments instead.
132
128
  export function passStringArray(strings: readonly string[]): string[] {
133
129
  return withStringArray(strings, (it: string[]) => it)
@@ -147,9 +143,7 @@ export function updateNodeByNode<T extends ArktsObject>(node: T, original: T): T
147
143
  if (original.peer === nullptr) {
148
144
  throwError('update called on NULLPTR')
149
145
  }
150
- if (original instanceof AstNode) {
151
- global.generatedEs2panda._AstNodeSetOriginalNode(global.context, node.peer, original.originalPeer)
152
- }
146
+ original.onUpdate(node)
153
147
  global.generatedEs2panda._AstNodeSetParent(global.context, node.peer, global.generatedEs2panda._AstNodeParent(global.context, original.peer))
154
148
  global.es2panda._AstNodeUpdateChildren(global.context, node.peer)
155
149
  return node
@@ -158,3 +152,33 @@ export function updateNodeByNode<T extends ArktsObject>(node: T, original: T): T
158
152
  export function nodeType(node: AstNode): Es2pandaAstNodeType {
159
153
  return global.generatedEs2panda._AstNodeTypeConst(global.context, passNode(node))
160
154
  }
155
+
156
+ /**
157
+ * @deprecated
158
+ */
159
+ export function compose<T extends ArktsObject, ARGS extends any[]>(
160
+ create: (...args: ARGS) => T,
161
+ update: (node: T, original: T) => T = updateNodeByNode
162
+ ): (node: T, ...args: ARGS) => T {
163
+ return (node: T, ...args: ARGS) => update(create(...args), node);
164
+ }
165
+
166
+ export function updateThenAttach<T extends ArktsObject, ARGS extends any[]>(
167
+ update: (original: T, ...args: ARGS) => T,
168
+ ...attachFuncs: ((node: T, original: T) => T)[]
169
+ ): (node: T, ...args: ARGS) => T {
170
+ return (node: T, ...args: ARGS) => {
171
+ let _node: T = update(node, ...args);
172
+ attachFuncs.forEach((attach) => {
173
+ _node = attach(_node, node);
174
+ });
175
+ return _node;
176
+ };
177
+ }
178
+
179
+ export function attachModifiers<T extends ArktsObject>(node: T, original: T): T {
180
+ if (node instanceof AstNode && original instanceof AstNode) {
181
+ node.modifiers = original.modifiers;
182
+ }
183
+ return node;
184
+ }
@@ -14,16 +14,16 @@
14
14
  */
15
15
 
16
16
  import { global } from "../static/global"
17
- import { isNumber, throwError } from "../../utils"
17
+ import { isNumber, throwError, withWarning } from "../../utils"
18
18
  import { KNativePointer, nullptr } from "@koalaui/interop"
19
19
  import { passNode, passNodeArray, unpackNodeArray, unpackNonNullableNode } from "./private"
20
20
  import { Es2pandaContextState, Es2pandaModifierFlags } from "../../generated/Es2pandaEnums"
21
21
  import type { AstNode } from "../peers/AstNode"
22
+ import { isSameNativeObject } from "../peers/ArktsObject"
22
23
  import {
23
24
  type AnnotationUsage,
24
25
  ClassDefinition,
25
26
  ClassProperty,
26
- ETSImportDeclaration,
27
27
  ETSModule,
28
28
  isClassDefinition,
29
29
  isFunctionDeclaration,
@@ -35,13 +35,19 @@ import {
35
35
  import { Config } from "../peers/Config"
36
36
  import { Context } from "../peers/Context"
37
37
  import { NodeCache } from "../node-cache"
38
+ import { listPrograms } from "../plugins"
38
39
 
39
40
  export function createETSModuleFromContext(): ETSModule {
40
41
  let program = global.es2panda._ContextProgram(global.context)
41
42
  if (program == nullptr) {
42
43
  throw new Error(`Program is null for context ${global.context.toString(16)}`)
43
44
  }
44
- return new ETSModule(global.es2panda._ProgramAst(global.context, program))
45
+ const ast = global.es2panda._ProgramAst(global.context, program)
46
+ if (ast == nullptr) {
47
+ throw new Error(`AST is null for program ${program.toString(16)}`)
48
+
49
+ }
50
+ return new ETSModule(ast)
45
51
  }
46
52
 
47
53
  export function createETSModuleFromSource(
@@ -59,10 +65,18 @@ export function createETSModuleFromSource(
59
65
  return new ETSModule(global.es2panda._ProgramAst(global.context, program))
60
66
  }
61
67
 
68
+ export function metaDatabase(fileName: string): string {
69
+ if (fileName.endsWith(".meta.json")) throw new Error(`Must pass source, not database: ${fileName}`)
70
+ return `${fileName}.meta.json`
71
+ }
72
+
62
73
  export function updateETSModuleByStatements(
63
74
  node: ETSModule,
64
75
  statements: readonly AstNode[],
65
76
  ): ETSModule {
77
+ if (isSameNativeObject(statements, node.statements)) {
78
+ return node
79
+ }
66
80
  global.generatedEs2panda._BlockStatementSetStatements(global.context, node.peer, passNodeArray(statements), statements.length)
67
81
  return node
68
82
  }
@@ -83,7 +97,7 @@ export function proceedToState(state: Es2pandaContextState): void {
83
97
  const before = Date.now()
84
98
  global.es2panda._ProceedToState(global.context, state)
85
99
  const after = Date.now()
86
- global.profiler.proceedTime += after-before
100
+ global.profiler.proceededToState(after-before)
87
101
  NodeCache.clear()
88
102
  checkErrors()
89
103
  }
@@ -102,6 +116,19 @@ export function rebindSubtree(node: AstNode): void {
102
116
  checkErrors()
103
117
  }
104
118
 
119
+ export function recheckContext(context: KNativePointer): void {
120
+ global.es2panda._AstNodeRecheck(
121
+ context,
122
+ global.es2panda._ProgramAst(
123
+ context,
124
+ global.es2panda._ContextProgram(
125
+ context
126
+ )
127
+ )
128
+ )
129
+ checkErrors()
130
+ }
131
+
105
132
  export function getDecl(node: AstNode): AstNode | undefined {
106
133
  if (isMemberExpression(node)) {
107
134
  return getDecl(node.property!)
@@ -139,14 +166,6 @@ export function getFileName(): string {
139
166
  return global.filePath
140
167
  }
141
168
 
142
- export function getPackageName(): string {
143
- return global.packageName
144
- }
145
-
146
- export function getFilePathFromPackageRoot(): string {
147
- return global.filePathFromPackageRoot
148
- }
149
-
150
169
  // TODO: It seems like Definition overrides AstNode modifiers
151
170
  // with it's own modifiers which is completely unrelated set of flags.
152
171
  // Use this function if you need
@@ -197,3 +216,26 @@ export function nameIfETSModule(node: AstNode): string {
197
216
  export function asString(node: AstNode|undefined): string {
198
217
  return `${node?.constructor.name} ${node ? nameIfIdentifier(node) : undefined}`
199
218
  }
219
+
220
+ const defaultPandaSdk = "../../../incremental/tools/panda/node_modules/@panda/sdk"
221
+
222
+
223
+ export function findStdlib(): string {
224
+ const sdk = process.env.PANDA_SDK_PATH ?? withWarning(
225
+ defaultPandaSdk,
226
+ `PANDA_SDK_PATH not set, assuming ${defaultPandaSdk}`
227
+ )
228
+ return `${sdk}/ets/stdlib`
229
+ }
230
+
231
+ export function collectDependencies(files: string[], configPath: string): string[] {
232
+ const result = new Set<string>()
233
+ for (let file of files) {
234
+ const context = Context.createFromFile(file, configPath, findStdlib(), "/tmp/foo.abc")!
235
+ global.compilerContext = context
236
+ proceedToState(Es2pandaContextState.ES2PANDA_STATE_PARSED)
237
+ listPrograms(context.program).forEach(it => result.add(it.absoluteName))
238
+ context.destroy()
239
+ }
240
+ return Array.from(result)
241
+ }