@idlizer/arktscgen 2.1.5 → 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 (360) hide show
  1. package/build/libarkts-copy/generator/options.json5 +34 -0
  2. package/build/libarkts-copy/native/meson.build +128 -62
  3. package/build/libarkts-copy/native/meson_options.txt +19 -0
  4. package/build/libarkts-copy/native/src/bridges.cc +278 -15
  5. package/build/libarkts-copy/native/src/common.cc +212 -43
  6. package/build/libarkts-copy/native/src/common.h +95 -2
  7. package/build/libarkts-copy/native/src/generated/bridges.cc +2801 -466
  8. package/build/libarkts-copy/package.json +82 -62
  9. package/build/libarkts-copy/src/Es2pandaNativeModule.ts +97 -3
  10. package/build/libarkts-copy/src/InteropNativeModule.ts +3 -1
  11. package/build/libarkts-copy/src/arkts-api/AbstractVisitor.ts +1 -1
  12. package/build/libarkts-copy/src/arkts-api/ChainExpressionFilter.ts +78 -0
  13. package/build/libarkts-copy/src/arkts-api/CheckedBackFilter.ts +131 -0
  14. package/build/libarkts-copy/src/arkts-api/CompileWithCache.ts +193 -0
  15. package/build/libarkts-copy/src/arkts-api/ImportStorage.ts +78 -0
  16. package/build/libarkts-copy/src/arkts-api/InferVoidReturnType.ts +89 -0
  17. package/build/libarkts-copy/src/arkts-api/ProgramProvider.ts +50 -0
  18. package/build/libarkts-copy/src/arkts-api/SetBaseOverloads.ts +44 -0
  19. package/build/libarkts-copy/src/arkts-api/class-by-peer.ts +2 -3
  20. package/build/libarkts-copy/src/arkts-api/factory/nodeFactory.ts +93 -10
  21. package/build/libarkts-copy/src/arkts-api/index.ts +13 -1
  22. package/build/libarkts-copy/src/arkts-api/node-cache.ts +8 -4
  23. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationDeclaration.ts +32 -0
  24. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationUsage.ts +37 -0
  25. package/build/libarkts-copy/src/arkts-api/node-utilities/ArkTsConfig.ts +26 -0
  26. package/build/libarkts-copy/src/arkts-api/node-utilities/ArrayExpression.ts +1 -1
  27. package/build/libarkts-copy/src/arkts-api/node-utilities/BinaryExpression.ts +37 -0
  28. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockExpression.ts +27 -0
  29. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockStatement.ts +29 -0
  30. package/build/libarkts-copy/src/arkts-api/node-utilities/CallExpression.ts +2 -2
  31. package/build/libarkts-copy/src/arkts-api/node-utilities/ChainExpression.ts +27 -0
  32. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDeclaration.ts +54 -0
  33. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDefinition.ts +1 -1
  34. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassProperty.ts +27 -4
  35. package/build/libarkts-copy/src/arkts-api/node-utilities/ConditionalExpression.ts +36 -0
  36. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSFunctionType.ts +2 -2
  37. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSImportDeclaration.ts +3 -27
  38. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSNewClassInstanceExpression.ts +34 -0
  39. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSParameterExpression.ts +3 -9
  40. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSPrimitiveType.ts +28 -0
  41. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSStructDeclaration.ts +1 -1
  42. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTuple.ts +1 -1
  43. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReference.ts +27 -0
  44. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReferencePart.ts +36 -0
  45. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUndefinedType.ts +24 -0
  46. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUnionType.ts +27 -0
  47. package/build/libarkts-copy/src/arkts-api/node-utilities/Identifier.ts +27 -0
  48. package/build/libarkts-copy/src/arkts-api/node-utilities/ImportSpecifier.ts +31 -0
  49. package/build/libarkts-copy/src/arkts-api/node-utilities/MemberExpression.ts +1 -1
  50. package/build/libarkts-copy/src/arkts-api/node-utilities/MethodDefinition.ts +2 -2
  51. package/build/libarkts-copy/src/arkts-api/node-utilities/NullLiteral.ts +24 -0
  52. package/build/libarkts-copy/src/arkts-api/node-utilities/NumberLiteral.ts +2 -2
  53. package/build/libarkts-copy/src/arkts-api/node-utilities/ObjectExpression.ts +1 -1
  54. package/build/libarkts-copy/src/arkts-api/node-utilities/Program.ts +40 -0
  55. package/build/libarkts-copy/src/arkts-api/node-utilities/ReturnStatement.ts +27 -0
  56. package/build/libarkts-copy/src/arkts-api/node-utilities/StringLiteral.ts +27 -0
  57. package/build/libarkts-copy/src/arkts-api/node-utilities/SuperExpression.ts +24 -0
  58. package/build/libarkts-copy/src/arkts-api/node-utilities/TSAsExpression.ts +36 -0
  59. package/build/libarkts-copy/src/arkts-api/node-utilities/TSClassImplements.ts +31 -0
  60. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceBody.ts +28 -0
  61. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceDeclaration.ts +30 -10
  62. package/build/libarkts-copy/src/arkts-api/node-utilities/TSNonNullExpression.ts +27 -0
  63. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +10 -2
  64. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameter.ts +1 -1
  65. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterDeclaration.ts +31 -0
  66. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterInstantiation.ts +30 -0
  67. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeReferencePart.ts +1 -1
  68. package/build/libarkts-copy/src/arkts-api/node-utilities/TemplateLiteral.ts +35 -0
  69. package/build/libarkts-copy/src/arkts-api/node-utilities/ThisExpression.ts +24 -0
  70. package/build/libarkts-copy/src/arkts-api/node-utilities/UndefinedLiteral.ts +24 -0
  71. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclaration.ts +1 -1
  72. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclarator.ts +1 -1
  73. package/build/libarkts-copy/src/arkts-api/peers/ArktsObject.ts +3 -1
  74. package/build/libarkts-copy/src/arkts-api/peers/AstNode.ts +78 -15
  75. package/build/libarkts-copy/src/arkts-api/peers/Config.ts +8 -1
  76. package/build/libarkts-copy/src/arkts-api/peers/Context.ts +72 -6
  77. package/build/libarkts-copy/src/arkts-api/peers/{Program.ts → ExternalSource.ts} +3 -21
  78. package/build/libarkts-copy/src/arkts-api/peers/Options.ts +34 -0
  79. package/build/libarkts-copy/src/arkts-api/plugins.ts +62 -0
  80. package/build/libarkts-copy/src/arkts-api/static/global.ts +9 -5
  81. package/build/libarkts-copy/src/arkts-api/static/profiler.ts +195 -23
  82. package/build/libarkts-copy/src/arkts-api/utilities/private.ts +36 -10
  83. package/build/libarkts-copy/src/arkts-api/utilities/public.ts +68 -20
  84. package/build/libarkts-copy/src/arkts-api/visitor.ts +162 -18
  85. package/build/libarkts-copy/src/arkts-api/wrapper-compat.ts +32 -0
  86. package/build/libarkts-copy/src/checkSdk.ts +25 -0
  87. package/build/libarkts-copy/src/generated/Es2pandaEnums.ts +448 -436
  88. package/build/libarkts-copy/src/generated/Es2pandaNativeModule.ts +775 -60
  89. package/build/libarkts-copy/src/generated/factory.ts +12 -15
  90. package/build/libarkts-copy/src/generated/index.ts +10 -3
  91. package/build/libarkts-copy/src/generated/peers/AnnotatedAstNode.ts +7 -1
  92. package/build/libarkts-copy/src/generated/peers/AnnotatedExpression.ts +7 -1
  93. package/build/libarkts-copy/src/generated/peers/AnnotatedStatement.ts +7 -1
  94. package/build/libarkts-copy/src/generated/peers/AnnotationDeclaration.ts +58 -6
  95. package/build/libarkts-copy/src/generated/peers/AnnotationUsage.ts +10 -4
  96. package/build/libarkts-copy/src/generated/peers/ArkTsConfig.ts +75 -0
  97. package/build/libarkts-copy/src/generated/peers/ArrayExpression.ts +11 -5
  98. package/build/libarkts-copy/src/generated/peers/ArrowFunctionExpression.ts +40 -6
  99. package/build/libarkts-copy/src/generated/peers/AssertStatement.ts +9 -3
  100. package/build/libarkts-copy/src/generated/peers/AssignmentExpression.ts +11 -5
  101. package/build/libarkts-copy/src/generated/peers/AstDumper.ts +7 -1
  102. package/build/libarkts-copy/src/generated/peers/AstVerifier.ts +7 -1
  103. package/build/libarkts-copy/src/generated/peers/AstVisitor.ts +7 -1
  104. package/build/libarkts-copy/src/generated/peers/AwaitExpression.ts +9 -3
  105. package/build/libarkts-copy/src/generated/peers/BigIntLiteral.ts +9 -3
  106. package/build/libarkts-copy/src/generated/peers/BinaryExpression.ts +9 -3
  107. package/build/libarkts-copy/src/generated/peers/BindingProps.ts +7 -1
  108. package/build/libarkts-copy/src/generated/peers/BlockExpression.ts +10 -4
  109. package/build/libarkts-copy/src/generated/peers/BlockStatement.ts +26 -7
  110. package/build/libarkts-copy/src/generated/peers/BooleanLiteral.ts +9 -3
  111. package/build/libarkts-copy/src/generated/peers/BreakStatement.ts +10 -4
  112. package/build/libarkts-copy/src/generated/peers/CallExpression.ts +20 -3
  113. package/build/libarkts-copy/src/generated/peers/CatchClause.ts +10 -4
  114. package/build/libarkts-copy/src/generated/peers/ChainExpression.ts +9 -3
  115. package/build/libarkts-copy/src/generated/peers/CharLiteral.ts +9 -3
  116. package/build/libarkts-copy/src/generated/peers/ClassDeclaration.ts +33 -4
  117. package/build/libarkts-copy/src/generated/peers/ClassDefinition.ts +128 -42
  118. package/build/libarkts-copy/src/generated/peers/ClassElement.ts +28 -4
  119. package/build/libarkts-copy/src/generated/peers/ClassExpression.ts +9 -3
  120. package/build/libarkts-copy/src/generated/peers/ClassProperty.ts +39 -5
  121. package/build/libarkts-copy/src/generated/peers/ClassStaticBlock.ts +9 -3
  122. package/build/libarkts-copy/src/generated/peers/CodeGen.ts +7 -1
  123. package/build/libarkts-copy/src/generated/peers/ConditionalExpression.ts +9 -3
  124. package/build/libarkts-copy/src/generated/peers/ContinueStatement.ts +10 -4
  125. package/build/libarkts-copy/src/generated/peers/DebuggerStatement.ts +9 -3
  126. package/build/libarkts-copy/src/generated/peers/Declaration.ts +7 -1
  127. package/build/libarkts-copy/src/generated/peers/Decorator.ts +9 -3
  128. package/build/libarkts-copy/src/generated/peers/{OverloadInfo.ts → DiagnosticInfo.ts} +8 -2
  129. package/build/libarkts-copy/src/generated/peers/DirectEvalExpression.ts +9 -3
  130. package/build/libarkts-copy/src/generated/peers/DoWhileStatement.ts +9 -3
  131. package/build/libarkts-copy/src/generated/peers/DynamicImportData.ts +7 -1
  132. package/build/libarkts-copy/src/generated/peers/ETSClassLiteral.ts +10 -4
  133. package/build/libarkts-copy/src/generated/peers/ETSFunctionType.ts +10 -4
  134. package/build/libarkts-copy/src/generated/peers/ETSImportDeclaration.ts +16 -5
  135. package/build/libarkts-copy/src/generated/peers/ETSKeyofType.ts +10 -4
  136. package/build/libarkts-copy/src/generated/peers/ETSModule.ts +59 -4
  137. package/build/libarkts-copy/src/generated/peers/ETSNewArrayInstanceExpression.ts +10 -4
  138. package/build/libarkts-copy/src/generated/peers/ETSNewClassInstanceExpression.ts +11 -5
  139. package/build/libarkts-copy/src/generated/peers/ETSNewMultiDimArrayInstanceExpression.ts +11 -5
  140. package/build/libarkts-copy/src/generated/peers/ETSNullType.ts +10 -4
  141. package/build/libarkts-copy/src/generated/peers/ETSPackageDeclaration.ts +10 -4
  142. package/build/libarkts-copy/src/generated/peers/ETSParameterExpression.ts +46 -12
  143. package/build/libarkts-copy/src/generated/peers/ETSPrimitiveType.ts +10 -4
  144. package/build/libarkts-copy/src/generated/peers/ETSReExportDeclaration.ts +7 -1
  145. package/build/libarkts-copy/src/generated/peers/ETSStringLiteralType.ts +10 -4
  146. package/build/libarkts-copy/src/generated/peers/ETSStructDeclaration.ts +10 -4
  147. package/build/libarkts-copy/src/generated/peers/ETSTuple.ts +14 -8
  148. package/build/libarkts-copy/src/generated/peers/ETSTypeReference.ts +10 -4
  149. package/build/libarkts-copy/src/generated/peers/ETSTypeReferencePart.ts +11 -5
  150. package/build/libarkts-copy/src/generated/peers/ETSUndefinedType.ts +10 -4
  151. package/build/libarkts-copy/src/generated/peers/ETSUnionType.ts +15 -4
  152. package/build/libarkts-copy/src/generated/peers/ETSWildcardType.ts +10 -4
  153. package/build/libarkts-copy/src/generated/peers/EmptyStatement.ts +16 -4
  154. package/build/libarkts-copy/src/generated/peers/ErrorLogger.ts +7 -1
  155. package/build/libarkts-copy/src/generated/peers/ExportAllDeclaration.ts +9 -3
  156. package/build/libarkts-copy/src/generated/peers/ExportDefaultDeclaration.ts +9 -3
  157. package/build/libarkts-copy/src/generated/peers/ExportNamedDeclaration.ts +18 -7
  158. package/build/libarkts-copy/src/generated/peers/ExportSpecifier.ts +26 -3
  159. package/build/libarkts-copy/src/generated/peers/Expression.ts +7 -1
  160. package/build/libarkts-copy/src/generated/peers/ExpressionStatement.ts +9 -3
  161. package/build/libarkts-copy/src/generated/peers/ForInStatement.ts +9 -3
  162. package/build/libarkts-copy/src/generated/peers/ForOfStatement.ts +9 -3
  163. package/build/libarkts-copy/src/generated/peers/ForUpdateStatement.ts +8 -2
  164. package/build/libarkts-copy/src/generated/peers/FunctionDecl.ts +7 -1
  165. package/build/libarkts-copy/src/generated/peers/FunctionDeclaration.ts +44 -6
  166. package/build/libarkts-copy/src/generated/peers/FunctionExpression.ts +10 -4
  167. package/build/libarkts-copy/src/generated/peers/FunctionSignature.ts +7 -1
  168. package/build/libarkts-copy/src/generated/peers/IRNode.ts +7 -1
  169. package/build/libarkts-copy/src/generated/peers/Identifier.ts +16 -5
  170. package/build/libarkts-copy/src/generated/peers/IfStatement.ts +14 -3
  171. package/build/libarkts-copy/src/generated/peers/ImportDeclaration.ts +28 -4
  172. package/build/libarkts-copy/src/generated/peers/ImportDefaultSpecifier.ts +9 -3
  173. package/build/libarkts-copy/src/generated/peers/ImportExpression.ts +9 -3
  174. package/build/libarkts-copy/src/generated/peers/ImportNamespaceSpecifier.ts +9 -3
  175. package/build/libarkts-copy/src/generated/peers/ImportSource.ts +7 -1
  176. package/build/libarkts-copy/src/generated/peers/ImportSpecifier.ts +9 -3
  177. package/build/libarkts-copy/src/generated/peers/IndexInfo.ts +7 -1
  178. package/build/libarkts-copy/src/generated/peers/InterfaceDecl.ts +7 -1
  179. package/build/libarkts-copy/src/generated/peers/LabelPair.ts +7 -1
  180. package/build/libarkts-copy/src/generated/peers/LabelledStatement.ts +9 -3
  181. package/build/libarkts-copy/src/generated/peers/Literal.ts +15 -1
  182. package/build/libarkts-copy/src/generated/peers/LoopStatement.ts +7 -1
  183. package/build/libarkts-copy/src/generated/peers/MaybeOptionalExpression.ts +7 -1
  184. package/build/libarkts-copy/src/generated/peers/MemberExpression.ts +9 -3
  185. package/build/libarkts-copy/src/generated/peers/MetaProperty.ts +9 -3
  186. package/build/libarkts-copy/src/generated/peers/MethodDefinition.ts +26 -10
  187. package/build/libarkts-copy/src/generated/peers/NamedType.ts +9 -3
  188. package/build/libarkts-copy/src/generated/peers/NewExpression.ts +9 -3
  189. package/build/libarkts-copy/src/generated/peers/NullLiteral.ts +9 -3
  190. package/build/libarkts-copy/src/generated/peers/NumberLiteral.ts +12 -6
  191. package/build/libarkts-copy/src/generated/peers/ObjectDescriptor.ts +7 -1
  192. package/build/libarkts-copy/src/generated/peers/ObjectExpression.ts +10 -4
  193. package/build/libarkts-copy/src/generated/peers/OmittedExpression.ts +9 -3
  194. package/build/libarkts-copy/src/generated/peers/OpaqueTypeNode.ts +10 -4
  195. package/build/libarkts-copy/src/generated/peers/PrefixAssertionExpression.ts +9 -3
  196. package/build/libarkts-copy/src/generated/peers/Program.ts +194 -0
  197. package/build/libarkts-copy/src/generated/peers/Property.ts +10 -4
  198. package/build/libarkts-copy/src/generated/peers/RegExpLiteral.ts +9 -3
  199. package/build/libarkts-copy/src/generated/peers/ReturnStatement.ts +10 -4
  200. package/build/libarkts-copy/src/generated/peers/ScopeFindResult.ts +7 -1
  201. package/build/libarkts-copy/src/generated/peers/ScriptFunction.ts +77 -10
  202. package/build/libarkts-copy/src/generated/peers/ScriptFunctionData.ts +7 -1
  203. package/build/libarkts-copy/src/generated/peers/SequenceExpression.ts +9 -3
  204. package/build/libarkts-copy/src/generated/peers/SignatureInfo.ts +7 -1
  205. package/build/libarkts-copy/src/generated/peers/SourcePosition.ts +7 -1
  206. package/build/libarkts-copy/src/generated/peers/SourceRange.ts +7 -1
  207. package/build/libarkts-copy/src/generated/peers/SpreadElement.ts +10 -4
  208. package/build/libarkts-copy/src/generated/peers/SrcDumper.ts +46 -9
  209. package/build/libarkts-copy/src/generated/peers/Statement.ts +7 -1
  210. package/build/libarkts-copy/src/generated/peers/StringLiteral.ts +10 -4
  211. package/build/libarkts-copy/src/generated/peers/{ETSDynamicFunctionType.ts → SuggestionInfo.ts} +7 -5
  212. package/build/libarkts-copy/src/generated/peers/SuperExpression.ts +10 -4
  213. package/build/libarkts-copy/src/generated/peers/SwitchCaseStatement.ts +10 -4
  214. package/build/libarkts-copy/src/generated/peers/SwitchStatement.ts +10 -4
  215. package/build/libarkts-copy/src/generated/peers/TSAnyKeyword.ts +10 -4
  216. package/build/libarkts-copy/src/generated/peers/TSArrayType.ts +10 -4
  217. package/build/libarkts-copy/src/generated/peers/TSAsExpression.ts +10 -4
  218. package/build/libarkts-copy/src/generated/peers/TSBigintKeyword.ts +10 -4
  219. package/build/libarkts-copy/src/generated/peers/TSBooleanKeyword.ts +10 -4
  220. package/build/libarkts-copy/src/generated/peers/TSClassImplements.ts +11 -5
  221. package/build/libarkts-copy/src/generated/peers/TSConditionalType.ts +10 -4
  222. package/build/libarkts-copy/src/generated/peers/TSConstructorType.ts +10 -4
  223. package/build/libarkts-copy/src/generated/peers/TSEnumDeclaration.ts +48 -6
  224. package/build/libarkts-copy/src/generated/peers/TSEnumMember.ts +11 -5
  225. package/build/libarkts-copy/src/generated/peers/TSExternalModuleReference.ts +10 -4
  226. package/build/libarkts-copy/src/generated/peers/TSFunctionType.ts +10 -4
  227. package/build/libarkts-copy/src/generated/peers/TSImportEqualsDeclaration.ts +10 -4
  228. package/build/libarkts-copy/src/generated/peers/TSImportType.ts +10 -4
  229. package/build/libarkts-copy/src/generated/peers/TSIndexSignature.ts +10 -4
  230. package/build/libarkts-copy/src/generated/peers/TSIndexedAccessType.ts +10 -4
  231. package/build/libarkts-copy/src/generated/peers/TSInferType.ts +10 -4
  232. package/build/libarkts-copy/src/generated/peers/TSInterfaceBody.ts +10 -4
  233. package/build/libarkts-copy/src/generated/peers/TSInterfaceDeclaration.ts +78 -8
  234. package/build/libarkts-copy/src/generated/peers/TSInterfaceHeritage.ts +10 -4
  235. package/build/libarkts-copy/src/generated/peers/TSIntersectionType.ts +10 -4
  236. package/build/libarkts-copy/src/generated/peers/TSLiteralType.ts +10 -4
  237. package/build/libarkts-copy/src/generated/peers/TSMappedType.ts +10 -4
  238. package/build/libarkts-copy/src/generated/peers/TSMethodSignature.ts +10 -4
  239. package/build/libarkts-copy/src/generated/peers/TSModuleBlock.ts +10 -4
  240. package/build/libarkts-copy/src/generated/peers/TSModuleDeclaration.ts +10 -4
  241. package/build/libarkts-copy/src/generated/peers/TSNamedTupleMember.ts +10 -4
  242. package/build/libarkts-copy/src/generated/peers/TSNeverKeyword.ts +10 -4
  243. package/build/libarkts-copy/src/generated/peers/TSNonNullExpression.ts +10 -4
  244. package/build/libarkts-copy/src/generated/peers/TSNullKeyword.ts +10 -4
  245. package/build/libarkts-copy/src/generated/peers/TSNumberKeyword.ts +10 -4
  246. package/build/libarkts-copy/src/generated/peers/TSObjectKeyword.ts +10 -4
  247. package/build/libarkts-copy/src/generated/peers/TSParameterProperty.ts +10 -4
  248. package/build/libarkts-copy/src/generated/peers/TSParenthesizedType.ts +10 -4
  249. package/build/libarkts-copy/src/generated/peers/TSPropertySignature.ts +10 -4
  250. package/build/libarkts-copy/src/generated/peers/TSQualifiedName.ts +10 -4
  251. package/build/libarkts-copy/src/generated/peers/TSSignatureDeclaration.ts +10 -4
  252. package/build/libarkts-copy/src/generated/peers/TSStringKeyword.ts +10 -4
  253. package/build/libarkts-copy/src/generated/peers/TSThisType.ts +10 -4
  254. package/build/libarkts-copy/src/generated/peers/TSTupleType.ts +10 -4
  255. package/build/libarkts-copy/src/generated/peers/TSTypeAliasDeclaration.ts +53 -6
  256. package/build/libarkts-copy/src/generated/peers/TSTypeAssertion.ts +10 -4
  257. package/build/libarkts-copy/src/generated/peers/TSTypeLiteral.ts +10 -4
  258. package/build/libarkts-copy/src/generated/peers/TSTypeOperator.ts +10 -4
  259. package/build/libarkts-copy/src/generated/peers/TSTypeParameter.ts +41 -7
  260. package/build/libarkts-copy/src/generated/peers/TSTypeParameterDeclaration.ts +15 -4
  261. package/build/libarkts-copy/src/generated/peers/TSTypeParameterInstantiation.ts +10 -4
  262. package/build/libarkts-copy/src/generated/peers/TSTypePredicate.ts +10 -4
  263. package/build/libarkts-copy/src/generated/peers/TSTypeQuery.ts +10 -4
  264. package/build/libarkts-copy/src/generated/peers/TSTypeReference.ts +10 -4
  265. package/build/libarkts-copy/src/generated/peers/TSUndefinedKeyword.ts +10 -4
  266. package/build/libarkts-copy/src/generated/peers/TSUnionType.ts +10 -4
  267. package/build/libarkts-copy/src/generated/peers/TSUnknownKeyword.ts +10 -4
  268. package/build/libarkts-copy/src/generated/peers/TSVoidKeyword.ts +10 -4
  269. package/build/libarkts-copy/src/generated/peers/TaggedTemplateExpression.ts +10 -4
  270. package/build/libarkts-copy/src/generated/peers/TemplateElement.ts +11 -5
  271. package/build/libarkts-copy/src/generated/peers/TemplateLiteral.ts +10 -4
  272. package/build/libarkts-copy/src/generated/peers/ThisExpression.ts +10 -4
  273. package/build/libarkts-copy/src/generated/peers/ThrowStatement.ts +10 -4
  274. package/build/libarkts-copy/src/generated/peers/TryStatement.ts +11 -5
  275. package/build/libarkts-copy/src/generated/peers/TypeNode.ts +37 -3
  276. package/build/libarkts-copy/src/generated/peers/TypedAstNode.ts +7 -1
  277. package/build/libarkts-copy/src/generated/peers/TypedStatement.ts +7 -1
  278. package/build/libarkts-copy/src/generated/peers/TypeofExpression.ts +10 -4
  279. package/build/libarkts-copy/src/generated/peers/UnaryExpression.ts +15 -4
  280. package/build/libarkts-copy/src/generated/peers/UndefinedLiteral.ts +9 -3
  281. package/build/libarkts-copy/src/generated/peers/UpdateExpression.ts +10 -4
  282. package/build/libarkts-copy/src/generated/peers/VReg.ts +7 -1
  283. package/build/libarkts-copy/src/generated/peers/ValidationInfo.ts +7 -1
  284. package/build/libarkts-copy/src/generated/peers/VariableDeclaration.ts +48 -8
  285. package/build/libarkts-copy/src/generated/peers/VariableDeclarator.ts +11 -5
  286. package/build/libarkts-copy/src/generated/peers/VerificationContext.ts +7 -1
  287. package/build/libarkts-copy/src/generated/peers/VerifierMessage.ts +7 -1
  288. package/build/libarkts-copy/src/generated/peers/WhileStatement.ts +15 -4
  289. package/build/libarkts-copy/src/generated/peers/YieldExpression.ts +10 -4
  290. package/build/libarkts-copy/src/index.ts +31 -1
  291. package/build/libarkts-copy/src/plugin-utils.ts +117 -0
  292. package/build/libarkts-copy/src/ts-api/factory/nodeFactory.ts +15 -0
  293. package/build/libarkts-copy/src/ts-api/factory/nodeTests.ts +15 -0
  294. package/build/libarkts-copy/src/ts-api/types.ts +15 -0
  295. package/build/libarkts-copy/src/utils.ts +24 -41
  296. package/build/libarkts-copy/src/wrapper-compat/README.md +16 -0
  297. package/build/libarkts-copy/src/wrapper-compat/arkts-api/class-by-peer.ts +46 -0
  298. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeFactory.ts +454 -0
  299. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeTests.ts +99 -0
  300. package/build/libarkts-copy/src/wrapper-compat/arkts-api/index.ts +88 -0
  301. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrayExpression.ts +38 -0
  302. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrowFunctionExpression.ts +35 -0
  303. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/AssignmentExpression.ts +38 -0
  304. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/BlockStatement.ts +27 -0
  305. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/CallExpression.ts +45 -0
  306. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDeclaration.ts +27 -0
  307. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDefinition.ts +73 -0
  308. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassProperty.ts +51 -0
  309. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSFunctionType.ts +42 -0
  310. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSImportDeclaration.ts +39 -0
  311. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSParameterExpression.ts +43 -0
  312. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ExpressionStatement.ts +28 -0
  313. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionDeclaration.ts +37 -0
  314. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionExpression.ts +28 -0
  315. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/IfStatement.ts +37 -0
  316. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MemberExpression.ts +42 -0
  317. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MethodDefinition.ts +46 -0
  318. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/NumberLiteral.ts +30 -0
  319. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ObjectExpression.ts +37 -0
  320. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/Property.ts +27 -0
  321. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ScriptFunction.ts +46 -0
  322. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/StructDeclaration.ts +28 -0
  323. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSInterfaceDeclaration.ts +47 -0
  324. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +40 -0
  325. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeParameter.ts +36 -0
  326. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TryStatement.ts +41 -0
  327. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclaration.ts +42 -0
  328. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclarator.ts +39 -0
  329. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ArktsObject.ts +45 -0
  330. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/AstNode.ts +26 -0
  331. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Config.ts +53 -0
  332. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Context.ts +60 -0
  333. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Diagnostic.ts +39 -0
  334. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticInfo.ts +33 -0
  335. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticKind.ts +33 -0
  336. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ImportPathManager.ts +34 -0
  337. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Program.ts +105 -0
  338. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourcePosition.ts +38 -0
  339. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourceRange.ts +38 -0
  340. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SuggestionInfo.ts +33 -0
  341. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/global.ts +16 -0
  342. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/globalUtils.ts +27 -0
  343. package/build/libarkts-copy/src/wrapper-compat/arkts-api/to-be-generated/MemberExpression.ts +108 -0
  344. package/build/libarkts-copy/src/wrapper-compat/arkts-api/types.ts +907 -0
  345. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/nativePtrDecoder.ts +69 -0
  346. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/performance.ts +190 -0
  347. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/private.ts +198 -0
  348. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/public.ts +325 -0
  349. package/build/libarkts-copy/src/wrapper-compat/arkts-api/visitor.ts +421 -0
  350. package/build/libarkts-copy/src/wrapper-compat/index.ts +20 -0
  351. package/build/libarkts-copy/tsconfig.json +2 -1
  352. package/lib/index.js +1704 -273
  353. package/package.json +2 -2
  354. package/templates/Es2pandaEnums.ts +4 -0
  355. package/templates/Es2pandaNativeModule.ts +5 -1
  356. package/templates/factory.ts +5 -1
  357. package/templates/index.ts +5 -1
  358. package/templates/node-map.ts +5 -1
  359. package/templates/peer.ts +5 -1
  360. package/build/libarkts-copy/README.md +0 -36
@@ -1,25 +1,197 @@
1
- export class Profiler {
2
- totalTime = 0
3
- transformTime = 0
4
- proceedTime = 0
5
- restartTime = 0
6
- visitedNodes = 0
7
- createdNodes = 0
1
+ /*
2
+ * Copyright (c) 2022-2023 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 * 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
+ }
8
145
 
9
146
  report() {
10
- console.log(
11
- "total compiler:",
12
- this.totalTime,
13
- " proceeds:",
14
- this.proceedTime,
15
- " restarts",
16
- this.restartTime,
17
- " transforms:",
18
- this.transformTime,
19
- " visited:",
20
- this.visitedNodes,
21
- " created:",
22
- this.createdNodes
23
- )
24
- }
25
- }
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
+ }
@@ -21,8 +21,7 @@ import {
21
21
  KNativePointer,
22
22
  nullptr,
23
23
  withString,
24
- withStringArray,
25
- withStringResult
24
+ withStringArray
26
25
  } from "@koalaui/interop"
27
26
  import { NativePtrDecoder } from "./nativePtrDecoder"
28
27
  import { Es2pandaAstNodeType, Es2pandaModifierFlags, Es2pandaScriptFunctionFlags } from "../../generated/Es2pandaEnums"
@@ -117,16 +116,15 @@ export function unpackObject<T extends ArktsObject>(type: { new (peer: KNativePo
117
116
  }
118
117
 
119
118
  export function unpackString(peer: KNativePointer): string {
120
- return withStringResult(peer) ?? throwError(`failed to unpack (peer shouldn't be NULLPTR)`)
119
+ return global.interop._RawUtf8ToString(peer)
121
120
  }
122
121
 
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
 
127
+ // TODO: use direct string arguments instead.
130
128
  export function passStringArray(strings: readonly string[]): string[] {
131
129
  return withStringArray(strings, (it: string[]) => it)
132
130
  }
@@ -145,9 +143,7 @@ export function updateNodeByNode<T extends ArktsObject>(node: T, original: T): T
145
143
  if (original.peer === nullptr) {
146
144
  throwError('update called on NULLPTR')
147
145
  }
148
- if (original instanceof AstNode) {
149
- global.generatedEs2panda._AstNodeSetOriginalNode(global.context, node.peer, original.originalPeer)
150
- }
146
+ original.onUpdate(node)
151
147
  global.generatedEs2panda._AstNodeSetParent(global.context, node.peer, global.generatedEs2panda._AstNodeParent(global.context, original.peer))
152
148
  global.es2panda._AstNodeUpdateChildren(global.context, node.peer)
153
149
  return node
@@ -156,3 +152,33 @@ export function updateNodeByNode<T extends ArktsObject>(node: T, original: T): T
156
152
  export function nodeType(node: AstNode): Es2pandaAstNodeType {
157
153
  return global.generatedEs2panda._AstNodeTypeConst(global.context, passNode(node))
158
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,29 +14,40 @@
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,
30
30
  isMemberExpression,
31
31
  isScriptFunction,
32
- isIdentifier
32
+ isIdentifier,
33
+ isETSModule
33
34
  } from "../../generated"
34
35
  import { Config } from "../peers/Config"
35
36
  import { Context } from "../peers/Context"
36
37
  import { NodeCache } from "../node-cache"
38
+ import { listPrograms } from "../plugins"
37
39
 
38
40
  export function createETSModuleFromContext(): ETSModule {
39
- return new ETSModule(global.es2panda._ProgramAst(global.context, global.es2panda._ContextProgram(global.context)))
41
+ let program = global.es2panda._ContextProgram(global.context)
42
+ if (program == nullptr) {
43
+ throw new Error(`Program is null for context ${global.context.toString(16)}`)
44
+ }
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)
40
51
  }
41
52
 
42
53
  export function createETSModuleFromSource(
@@ -48,13 +59,24 @@ export function createETSModuleFromSource(
48
59
  }
49
60
  global.compilerContext = Context.createFromString(source)
50
61
  proceedToState(state)
51
- return new ETSModule(global.es2panda._ProgramAst(global.context, global.es2panda._ContextProgram(global.context)))
62
+ let program = global.es2panda._ContextProgram(global.compilerContext.peer)
63
+ if (program == nullptr)
64
+ throw new Error(`Program is null for ${source} 0x${global.compilerContext.peer.toString(16)}`)
65
+ return new ETSModule(global.es2panda._ProgramAst(global.context, program))
66
+ }
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`
52
71
  }
53
72
 
54
73
  export function updateETSModuleByStatements(
55
74
  node: ETSModule,
56
75
  statements: readonly AstNode[],
57
76
  ): ETSModule {
77
+ if (isSameNativeObject(statements, node.statements)) {
78
+ return node
79
+ }
58
80
  global.generatedEs2panda._BlockStatementSetStatements(global.context, node.peer, passNodeArray(statements), statements.length)
59
81
  return node
60
82
  }
@@ -75,7 +97,7 @@ export function proceedToState(state: Es2pandaContextState): void {
75
97
  const before = Date.now()
76
98
  global.es2panda._ProceedToState(global.context, state)
77
99
  const after = Date.now()
78
- global.profiler.proceedTime += after-before
100
+ global.profiler.proceededToState(after-before)
79
101
  NodeCache.clear()
80
102
  checkErrors()
81
103
  }
@@ -94,6 +116,19 @@ export function rebindSubtree(node: AstNode): void {
94
116
  checkErrors()
95
117
  }
96
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
+
97
132
  export function getDecl(node: AstNode): AstNode | undefined {
98
133
  if (isMemberExpression(node)) {
99
134
  return getDecl(node.property!)
@@ -131,14 +166,6 @@ export function getFileName(): string {
131
166
  return global.filePath
132
167
  }
133
168
 
134
- export function getPackageName(): string {
135
- return global.packageName
136
- }
137
-
138
- export function getFilePathFromPackageRoot(): string {
139
- return global.filePathFromPackageRoot
140
- }
141
-
142
169
  // TODO: It seems like Definition overrides AstNode modifiers
143
170
  // with it's own modifiers which is completely unrelated set of flags.
144
171
  // Use this function if you need
@@ -157,12 +184,6 @@ export function classPropertySetOptional(node: ClassProperty, value: boolean): C
157
184
  return node;
158
185
  }
159
186
 
160
- // TODO: Import statements should be inserted to the statements.
161
- export function importDeclarationInsert(node: ETSImportDeclaration): void {
162
- const program = global.compilerContext.program; // TODO: external source has different program. Currently not considered.
163
- global.es2panda._InsertETSImportDeclarationAndParse(global.context, program.peer, node.peer)
164
- }
165
-
166
187
  export function hasModifierFlag(node: AstNode, flag: Es2pandaModifierFlags): boolean {
167
188
  if (!node) return false;
168
189
 
@@ -188,6 +209,33 @@ export function nameIfIdentifier(node: AstNode): string {
188
209
  return isIdentifier(node) ? `'${node.name}'` : ""
189
210
  }
190
211
 
212
+ export function nameIfETSModule(node: AstNode): string {
213
+ return isETSModule(node) ? `'${node.ident?.name}'` : ""
214
+ }
215
+
191
216
  export function asString(node: AstNode|undefined): string {
192
217
  return `${node?.constructor.name} ${node ? nameIfIdentifier(node) : undefined}`
193
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
+ }