@tracecode/harness 0.6.5 → 0.7.0-beta7

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 (494) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +134 -15
  3. package/THIRD_PARTY_NOTICES.md +170 -0
  4. package/dist/browser.cjs +2361 -1033
  5. package/dist/browser.cjs.map +1 -1
  6. package/dist/browser.d.cts +33 -3
  7. package/dist/browser.d.ts +33 -3
  8. package/dist/browser.js +2357 -1033
  9. package/dist/browser.js.map +1 -1
  10. package/dist/cli.cjs +160 -23
  11. package/dist/cli.cjs.map +1 -1
  12. package/dist/cli.js +161 -24
  13. package/dist/cli.js.map +1 -1
  14. package/dist/core.cjs +748 -867
  15. package/dist/core.cjs.map +1 -1
  16. package/dist/core.d.cts +21 -85
  17. package/dist/core.d.ts +21 -85
  18. package/dist/core.js +734 -855
  19. package/dist/core.js.map +1 -1
  20. package/dist/cpp-worker-client-Bn7kC0_L.d.ts +84 -0
  21. package/dist/cpp-worker-client-BzdJLuZa.d.cts +84 -0
  22. package/dist/cpp.cjs +1063 -0
  23. package/dist/cpp.cjs.map +1 -0
  24. package/dist/cpp.d.cts +7 -0
  25. package/dist/cpp.d.ts +7 -0
  26. package/dist/cpp.js +1035 -0
  27. package/dist/cpp.js.map +1 -0
  28. package/dist/csharp-worker-client-DMHIa2YG.d.cts +69 -0
  29. package/dist/csharp-worker-client-JwqS6LiX.d.ts +69 -0
  30. package/dist/csharp.cjs +1012 -0
  31. package/dist/csharp.cjs.map +1 -0
  32. package/dist/csharp.d.cts +7 -0
  33. package/dist/csharp.d.ts +7 -0
  34. package/dist/csharp.js +984 -0
  35. package/dist/csharp.js.map +1 -0
  36. package/dist/index.cjs +3142 -1160
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.cts +13 -5
  39. package/dist/index.d.ts +13 -5
  40. package/dist/index.js +3117 -1148
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/browser.cjs +1639 -30
  43. package/dist/internal/browser.cjs.map +1 -1
  44. package/dist/internal/browser.d.cts +6 -199
  45. package/dist/internal/browser.d.ts +6 -199
  46. package/dist/internal/browser.js +1636 -30
  47. package/dist/internal/browser.js.map +1 -1
  48. package/dist/java-worker-client-BOwKW-11.d.cts +72 -0
  49. package/dist/java-worker-client-C97DDnCp.d.ts +72 -0
  50. package/dist/java.cjs +1225 -0
  51. package/dist/java.cjs.map +1 -0
  52. package/dist/java.d.cts +7 -0
  53. package/dist/java.d.ts +7 -0
  54. package/dist/java.js +1197 -0
  55. package/dist/java.js.map +1 -0
  56. package/dist/javascript-worker-client-CYBGEEvc.d.cts +51 -0
  57. package/dist/javascript-worker-client-DIX1Mp21.d.ts +51 -0
  58. package/dist/javascript.cjs +1063 -19
  59. package/dist/javascript.cjs.map +1 -1
  60. package/dist/javascript.d.cts +7 -4
  61. package/dist/javascript.d.ts +7 -4
  62. package/dist/javascript.js +1061 -19
  63. package/dist/javascript.js.map +1 -1
  64. package/dist/pyodide-worker-client-C-2rfHj9.d.ts +111 -0
  65. package/dist/pyodide-worker-client-Cn0a8Uv3.d.cts +111 -0
  66. package/dist/python.cjs +1282 -74
  67. package/dist/python.cjs.map +1 -1
  68. package/dist/python.d.cts +20 -14
  69. package/dist/python.d.ts +20 -14
  70. package/dist/python.js +1279 -74
  71. package/dist/python.js.map +1 -1
  72. package/dist/runtime-language-info-BFUSti3-.d.ts +43 -0
  73. package/dist/runtime-language-info-Bxza1cI2.d.cts +43 -0
  74. package/dist/runtime-types-2qM0MukN.d.cts +244 -0
  75. package/dist/runtime-types-2qM0MukN.d.ts +244 -0
  76. package/package.json +73 -8
  77. package/workers/cpp/cpp-compiler-frame.html +82 -0
  78. package/workers/cpp/cpp-compiler-worker.js +131 -0
  79. package/workers/cpp/cpp-worker.js +5790 -0
  80. package/workers/cpp/tracecode_runtime.hpp +6147 -0
  81. package/workers/csharp/csharp-worker.js +301 -0
  82. package/workers/java/.build/classes/harness/browser/JavaRewriteLibrary.class +0 -0
  83. package/workers/java/java-source-augmentations.js +880 -0
  84. package/workers/java/java-worker.js +2256 -170
  85. package/workers/java/src/harness/browser/JavaRewriteLibrary.java +1645 -32
  86. package/workers/java/src/javafx/util/Pair.java +42 -0
  87. package/workers/java/src/tracecode/browser/BrowserCompileAndTraceLibrary.java +714 -0
  88. package/workers/java/src/tracecode/browser/BrowserCompileAndTraceMain.java +76 -0
  89. package/workers/java/src/tracecode/browser/RuntimeProbeMain.java +14 -0
  90. package/workers/java/src/tracecode/user/TraceHooks.java +1406 -0
  91. package/workers/javascript/javascript-libraries-entry.js +71 -0
  92. package/workers/javascript/javascript-worker.js +2054 -424
  93. package/workers/python/generated-python-harness-snippets.js +4 -4
  94. package/workers/python/pyodide-worker.js +222 -61
  95. package/workers/python/runtime-core.js +1387 -301
  96. package/workers/vendor/csharp/.stamp +0 -0
  97. package/workers/vendor/csharp/TraceCode.CSharpHost.runtimeconfig.json +32 -0
  98. package/workers/vendor/csharp/_framework/Microsoft.CSharp.wasm +0 -0
  99. package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.CSharp.wasm +0 -0
  100. package/workers/vendor/csharp/_framework/Microsoft.CodeAnalysis.wasm +0 -0
  101. package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.Core.wasm +0 -0
  102. package/workers/vendor/csharp/_framework/Microsoft.VisualBasic.wasm +0 -0
  103. package/workers/vendor/csharp/_framework/Microsoft.Win32.Primitives.wasm +0 -0
  104. package/workers/vendor/csharp/_framework/Microsoft.Win32.Registry.wasm +0 -0
  105. package/workers/vendor/csharp/_framework/System.AppContext.wasm +0 -0
  106. package/workers/vendor/csharp/_framework/System.Buffers.wasm +0 -0
  107. package/workers/vendor/csharp/_framework/System.Collections.Concurrent.wasm +0 -0
  108. package/workers/vendor/csharp/_framework/System.Collections.Immutable.wasm +0 -0
  109. package/workers/vendor/csharp/_framework/System.Collections.NonGeneric.wasm +0 -0
  110. package/workers/vendor/csharp/_framework/System.Collections.Specialized.wasm +0 -0
  111. package/workers/vendor/csharp/_framework/System.Collections.wasm +0 -0
  112. package/workers/vendor/csharp/_framework/System.ComponentModel.Annotations.wasm +0 -0
  113. package/workers/vendor/csharp/_framework/System.ComponentModel.DataAnnotations.wasm +0 -0
  114. package/workers/vendor/csharp/_framework/System.ComponentModel.EventBasedAsync.wasm +0 -0
  115. package/workers/vendor/csharp/_framework/System.ComponentModel.Primitives.wasm +0 -0
  116. package/workers/vendor/csharp/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
  117. package/workers/vendor/csharp/_framework/System.ComponentModel.wasm +0 -0
  118. package/workers/vendor/csharp/_framework/System.Configuration.wasm +0 -0
  119. package/workers/vendor/csharp/_framework/System.Console.wasm +0 -0
  120. package/workers/vendor/csharp/_framework/System.Core.wasm +0 -0
  121. package/workers/vendor/csharp/_framework/System.Data.Common.wasm +0 -0
  122. package/workers/vendor/csharp/_framework/System.Data.DataSetExtensions.wasm +0 -0
  123. package/workers/vendor/csharp/_framework/System.Data.wasm +0 -0
  124. package/workers/vendor/csharp/_framework/System.Diagnostics.Contracts.wasm +0 -0
  125. package/workers/vendor/csharp/_framework/System.Diagnostics.Debug.wasm +0 -0
  126. package/workers/vendor/csharp/_framework/System.Diagnostics.DiagnosticSource.wasm +0 -0
  127. package/workers/vendor/csharp/_framework/System.Diagnostics.FileVersionInfo.wasm +0 -0
  128. package/workers/vendor/csharp/_framework/System.Diagnostics.Process.wasm +0 -0
  129. package/workers/vendor/csharp/_framework/System.Diagnostics.StackTrace.wasm +0 -0
  130. package/workers/vendor/csharp/_framework/System.Diagnostics.TextWriterTraceListener.wasm +0 -0
  131. package/workers/vendor/csharp/_framework/System.Diagnostics.Tools.wasm +0 -0
  132. package/workers/vendor/csharp/_framework/System.Diagnostics.TraceSource.wasm +0 -0
  133. package/workers/vendor/csharp/_framework/System.Diagnostics.Tracing.wasm +0 -0
  134. package/workers/vendor/csharp/_framework/System.Drawing.Primitives.wasm +0 -0
  135. package/workers/vendor/csharp/_framework/System.Drawing.wasm +0 -0
  136. package/workers/vendor/csharp/_framework/System.Dynamic.Runtime.wasm +0 -0
  137. package/workers/vendor/csharp/_framework/System.Formats.Asn1.wasm +0 -0
  138. package/workers/vendor/csharp/_framework/System.Formats.Tar.wasm +0 -0
  139. package/workers/vendor/csharp/_framework/System.Globalization.Calendars.wasm +0 -0
  140. package/workers/vendor/csharp/_framework/System.Globalization.Extensions.wasm +0 -0
  141. package/workers/vendor/csharp/_framework/System.Globalization.wasm +0 -0
  142. package/workers/vendor/csharp/_framework/System.IO.Compression.Brotli.wasm +0 -0
  143. package/workers/vendor/csharp/_framework/System.IO.Compression.FileSystem.wasm +0 -0
  144. package/workers/vendor/csharp/_framework/System.IO.Compression.ZipFile.wasm +0 -0
  145. package/workers/vendor/csharp/_framework/System.IO.Compression.wasm +0 -0
  146. package/workers/vendor/csharp/_framework/System.IO.FileSystem.AccessControl.wasm +0 -0
  147. package/workers/vendor/csharp/_framework/System.IO.FileSystem.DriveInfo.wasm +0 -0
  148. package/workers/vendor/csharp/_framework/System.IO.FileSystem.Primitives.wasm +0 -0
  149. package/workers/vendor/csharp/_framework/System.IO.FileSystem.Watcher.wasm +0 -0
  150. package/workers/vendor/csharp/_framework/System.IO.FileSystem.wasm +0 -0
  151. package/workers/vendor/csharp/_framework/System.IO.IsolatedStorage.wasm +0 -0
  152. package/workers/vendor/csharp/_framework/System.IO.MemoryMappedFiles.wasm +0 -0
  153. package/workers/vendor/csharp/_framework/System.IO.Pipelines.wasm +0 -0
  154. package/workers/vendor/csharp/_framework/System.IO.Pipes.AccessControl.wasm +0 -0
  155. package/workers/vendor/csharp/_framework/System.IO.Pipes.wasm +0 -0
  156. package/workers/vendor/csharp/_framework/System.IO.UnmanagedMemoryStream.wasm +0 -0
  157. package/workers/vendor/csharp/_framework/System.IO.wasm +0 -0
  158. package/workers/vendor/csharp/_framework/System.Linq.AsyncEnumerable.wasm +0 -0
  159. package/workers/vendor/csharp/_framework/System.Linq.Expressions.wasm +0 -0
  160. package/workers/vendor/csharp/_framework/System.Linq.Parallel.wasm +0 -0
  161. package/workers/vendor/csharp/_framework/System.Linq.Queryable.wasm +0 -0
  162. package/workers/vendor/csharp/_framework/System.Linq.wasm +0 -0
  163. package/workers/vendor/csharp/_framework/System.Memory.wasm +0 -0
  164. package/workers/vendor/csharp/_framework/System.Net.Http.Json.wasm +0 -0
  165. package/workers/vendor/csharp/_framework/System.Net.Http.wasm +0 -0
  166. package/workers/vendor/csharp/_framework/System.Net.HttpListener.wasm +0 -0
  167. package/workers/vendor/csharp/_framework/System.Net.Mail.wasm +0 -0
  168. package/workers/vendor/csharp/_framework/System.Net.NameResolution.wasm +0 -0
  169. package/workers/vendor/csharp/_framework/System.Net.NetworkInformation.wasm +0 -0
  170. package/workers/vendor/csharp/_framework/System.Net.Ping.wasm +0 -0
  171. package/workers/vendor/csharp/_framework/System.Net.Primitives.wasm +0 -0
  172. package/workers/vendor/csharp/_framework/System.Net.Quic.wasm +0 -0
  173. package/workers/vendor/csharp/_framework/System.Net.Requests.wasm +0 -0
  174. package/workers/vendor/csharp/_framework/System.Net.Security.wasm +0 -0
  175. package/workers/vendor/csharp/_framework/System.Net.ServerSentEvents.wasm +0 -0
  176. package/workers/vendor/csharp/_framework/System.Net.ServicePoint.wasm +0 -0
  177. package/workers/vendor/csharp/_framework/System.Net.Sockets.wasm +0 -0
  178. package/workers/vendor/csharp/_framework/System.Net.WebClient.wasm +0 -0
  179. package/workers/vendor/csharp/_framework/System.Net.WebHeaderCollection.wasm +0 -0
  180. package/workers/vendor/csharp/_framework/System.Net.WebProxy.wasm +0 -0
  181. package/workers/vendor/csharp/_framework/System.Net.WebSockets.Client.wasm +0 -0
  182. package/workers/vendor/csharp/_framework/System.Net.WebSockets.wasm +0 -0
  183. package/workers/vendor/csharp/_framework/System.Net.wasm +0 -0
  184. package/workers/vendor/csharp/_framework/System.Numerics.Vectors.wasm +0 -0
  185. package/workers/vendor/csharp/_framework/System.Numerics.wasm +0 -0
  186. package/workers/vendor/csharp/_framework/System.ObjectModel.wasm +0 -0
  187. package/workers/vendor/csharp/_framework/System.Private.CoreLib.wasm +0 -0
  188. package/workers/vendor/csharp/_framework/System.Private.DataContractSerialization.wasm +0 -0
  189. package/workers/vendor/csharp/_framework/System.Private.Uri.wasm +0 -0
  190. package/workers/vendor/csharp/_framework/System.Private.Xml.Linq.wasm +0 -0
  191. package/workers/vendor/csharp/_framework/System.Private.Xml.wasm +0 -0
  192. package/workers/vendor/csharp/_framework/System.Reflection.DispatchProxy.wasm +0 -0
  193. package/workers/vendor/csharp/_framework/System.Reflection.Emit.ILGeneration.wasm +0 -0
  194. package/workers/vendor/csharp/_framework/System.Reflection.Emit.Lightweight.wasm +0 -0
  195. package/workers/vendor/csharp/_framework/System.Reflection.Emit.wasm +0 -0
  196. package/workers/vendor/csharp/_framework/System.Reflection.Extensions.wasm +0 -0
  197. package/workers/vendor/csharp/_framework/System.Reflection.Metadata.wasm +0 -0
  198. package/workers/vendor/csharp/_framework/System.Reflection.Primitives.wasm +0 -0
  199. package/workers/vendor/csharp/_framework/System.Reflection.TypeExtensions.wasm +0 -0
  200. package/workers/vendor/csharp/_framework/System.Reflection.wasm +0 -0
  201. package/workers/vendor/csharp/_framework/System.Resources.Reader.wasm +0 -0
  202. package/workers/vendor/csharp/_framework/System.Resources.ResourceManager.wasm +0 -0
  203. package/workers/vendor/csharp/_framework/System.Resources.Writer.wasm +0 -0
  204. package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.Unsafe.wasm +0 -0
  205. package/workers/vendor/csharp/_framework/System.Runtime.CompilerServices.VisualC.wasm +0 -0
  206. package/workers/vendor/csharp/_framework/System.Runtime.Extensions.wasm +0 -0
  207. package/workers/vendor/csharp/_framework/System.Runtime.Handles.wasm +0 -0
  208. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
  209. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm +0 -0
  210. package/workers/vendor/csharp/_framework/System.Runtime.InteropServices.wasm +0 -0
  211. package/workers/vendor/csharp/_framework/System.Runtime.Intrinsics.wasm +0 -0
  212. package/workers/vendor/csharp/_framework/System.Runtime.Loader.wasm +0 -0
  213. package/workers/vendor/csharp/_framework/System.Runtime.Numerics.wasm +0 -0
  214. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Formatters.wasm +0 -0
  215. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Json.wasm +0 -0
  216. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Primitives.wasm +0 -0
  217. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.Xml.wasm +0 -0
  218. package/workers/vendor/csharp/_framework/System.Runtime.Serialization.wasm +0 -0
  219. package/workers/vendor/csharp/_framework/System.Runtime.wasm +0 -0
  220. package/workers/vendor/csharp/_framework/System.Security.AccessControl.wasm +0 -0
  221. package/workers/vendor/csharp/_framework/System.Security.Claims.wasm +0 -0
  222. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Algorithms.wasm +0 -0
  223. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Cng.wasm +0 -0
  224. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Csp.wasm +0 -0
  225. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Encoding.wasm +0 -0
  226. package/workers/vendor/csharp/_framework/System.Security.Cryptography.OpenSsl.wasm +0 -0
  227. package/workers/vendor/csharp/_framework/System.Security.Cryptography.Primitives.wasm +0 -0
  228. package/workers/vendor/csharp/_framework/System.Security.Cryptography.X509Certificates.wasm +0 -0
  229. package/workers/vendor/csharp/_framework/System.Security.Cryptography.wasm +0 -0
  230. package/workers/vendor/csharp/_framework/System.Security.Principal.Windows.wasm +0 -0
  231. package/workers/vendor/csharp/_framework/System.Security.Principal.wasm +0 -0
  232. package/workers/vendor/csharp/_framework/System.Security.SecureString.wasm +0 -0
  233. package/workers/vendor/csharp/_framework/System.Security.wasm +0 -0
  234. package/workers/vendor/csharp/_framework/System.ServiceModel.Web.wasm +0 -0
  235. package/workers/vendor/csharp/_framework/System.ServiceProcess.wasm +0 -0
  236. package/workers/vendor/csharp/_framework/System.Text.Encoding.CodePages.wasm +0 -0
  237. package/workers/vendor/csharp/_framework/System.Text.Encoding.Extensions.wasm +0 -0
  238. package/workers/vendor/csharp/_framework/System.Text.Encoding.wasm +0 -0
  239. package/workers/vendor/csharp/_framework/System.Text.Encodings.Web.wasm +0 -0
  240. package/workers/vendor/csharp/_framework/System.Text.Json.wasm +0 -0
  241. package/workers/vendor/csharp/_framework/System.Text.RegularExpressions.wasm +0 -0
  242. package/workers/vendor/csharp/_framework/System.Threading.AccessControl.wasm +0 -0
  243. package/workers/vendor/csharp/_framework/System.Threading.Channels.wasm +0 -0
  244. package/workers/vendor/csharp/_framework/System.Threading.Overlapped.wasm +0 -0
  245. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Dataflow.wasm +0 -0
  246. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Extensions.wasm +0 -0
  247. package/workers/vendor/csharp/_framework/System.Threading.Tasks.Parallel.wasm +0 -0
  248. package/workers/vendor/csharp/_framework/System.Threading.Tasks.wasm +0 -0
  249. package/workers/vendor/csharp/_framework/System.Threading.Thread.wasm +0 -0
  250. package/workers/vendor/csharp/_framework/System.Threading.ThreadPool.wasm +0 -0
  251. package/workers/vendor/csharp/_framework/System.Threading.Timer.wasm +0 -0
  252. package/workers/vendor/csharp/_framework/System.Threading.wasm +0 -0
  253. package/workers/vendor/csharp/_framework/System.Transactions.Local.wasm +0 -0
  254. package/workers/vendor/csharp/_framework/System.Transactions.wasm +0 -0
  255. package/workers/vendor/csharp/_framework/System.ValueTuple.wasm +0 -0
  256. package/workers/vendor/csharp/_framework/System.Web.HttpUtility.wasm +0 -0
  257. package/workers/vendor/csharp/_framework/System.Web.wasm +0 -0
  258. package/workers/vendor/csharp/_framework/System.Windows.wasm +0 -0
  259. package/workers/vendor/csharp/_framework/System.Xml.Linq.wasm +0 -0
  260. package/workers/vendor/csharp/_framework/System.Xml.ReaderWriter.wasm +0 -0
  261. package/workers/vendor/csharp/_framework/System.Xml.Serialization.wasm +0 -0
  262. package/workers/vendor/csharp/_framework/System.Xml.XDocument.wasm +0 -0
  263. package/workers/vendor/csharp/_framework/System.Xml.XPath.XDocument.wasm +0 -0
  264. package/workers/vendor/csharp/_framework/System.Xml.XPath.wasm +0 -0
  265. package/workers/vendor/csharp/_framework/System.Xml.XmlDocument.wasm +0 -0
  266. package/workers/vendor/csharp/_framework/System.Xml.XmlSerializer.wasm +0 -0
  267. package/workers/vendor/csharp/_framework/System.Xml.wasm +0 -0
  268. package/workers/vendor/csharp/_framework/System.wasm +0 -0
  269. package/workers/vendor/csharp/_framework/TraceCode.CSharpHost.wasm +0 -0
  270. package/workers/vendor/csharp/_framework/WindowsBase.wasm +0 -0
  271. package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  272. package/workers/vendor/csharp/_framework/cs/Microsoft.CodeAnalysis.resources.wasm +0 -0
  273. package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  274. package/workers/vendor/csharp/_framework/de/Microsoft.CodeAnalysis.resources.wasm +0 -0
  275. package/workers/vendor/csharp/_framework/dotnet.boot.js +1958 -0
  276. package/workers/vendor/csharp/_framework/dotnet.js +4 -0
  277. package/workers/vendor/csharp/_framework/dotnet.js.map +1 -0
  278. package/workers/vendor/csharp/_framework/dotnet.native.js +6687 -0
  279. package/workers/vendor/csharp/_framework/dotnet.native.wasm +0 -0
  280. package/workers/vendor/csharp/_framework/dotnet.runtime.js +4 -0
  281. package/workers/vendor/csharp/_framework/dotnet.runtime.js.map +1 -0
  282. package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  283. package/workers/vendor/csharp/_framework/es/Microsoft.CodeAnalysis.resources.wasm +0 -0
  284. package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  285. package/workers/vendor/csharp/_framework/fr/Microsoft.CodeAnalysis.resources.wasm +0 -0
  286. package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  287. package/workers/vendor/csharp/_framework/it/Microsoft.CodeAnalysis.resources.wasm +0 -0
  288. package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  289. package/workers/vendor/csharp/_framework/ja/Microsoft.CodeAnalysis.resources.wasm +0 -0
  290. package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  291. package/workers/vendor/csharp/_framework/ko/Microsoft.CodeAnalysis.resources.wasm +0 -0
  292. package/workers/vendor/csharp/_framework/mscorlib.wasm +0 -0
  293. package/workers/vendor/csharp/_framework/netstandard.wasm +0 -0
  294. package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  295. package/workers/vendor/csharp/_framework/pl/Microsoft.CodeAnalysis.resources.wasm +0 -0
  296. package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  297. package/workers/vendor/csharp/_framework/pt-BR/Microsoft.CodeAnalysis.resources.wasm +0 -0
  298. package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  299. package/workers/vendor/csharp/_framework/ru/Microsoft.CodeAnalysis.resources.wasm +0 -0
  300. package/workers/vendor/csharp/_framework/supportFiles/0_Microsoft.CodeAnalysis.CSharp.dll +0 -0
  301. package/workers/vendor/csharp/_framework/supportFiles/100_System.Reflection.Emit.ILGeneration.dll +0 -0
  302. package/workers/vendor/csharp/_framework/supportFiles/101_System.Reflection.Emit.Lightweight.dll +0 -0
  303. package/workers/vendor/csharp/_framework/supportFiles/102_System.Reflection.Extensions.dll +0 -0
  304. package/workers/vendor/csharp/_framework/supportFiles/103_System.Reflection.Metadata.dll +0 -0
  305. package/workers/vendor/csharp/_framework/supportFiles/104_System.Reflection.Primitives.dll +0 -0
  306. package/workers/vendor/csharp/_framework/supportFiles/105_System.Reflection.TypeExtensions.dll +0 -0
  307. package/workers/vendor/csharp/_framework/supportFiles/106_System.Resources.Reader.dll +0 -0
  308. package/workers/vendor/csharp/_framework/supportFiles/107_System.Resources.ResourceManager.dll +0 -0
  309. package/workers/vendor/csharp/_framework/supportFiles/108_System.Resources.Writer.dll +0 -0
  310. package/workers/vendor/csharp/_framework/supportFiles/109_System.Runtime.CompilerServices.Unsafe.dll +0 -0
  311. package/workers/vendor/csharp/_framework/supportFiles/10_System.Buffers.dll +0 -0
  312. package/workers/vendor/csharp/_framework/supportFiles/110_System.Runtime.CompilerServices.VisualC.dll +0 -0
  313. package/workers/vendor/csharp/_framework/supportFiles/111_System.Runtime.dll +0 -0
  314. package/workers/vendor/csharp/_framework/supportFiles/112_System.Runtime.Extensions.dll +0 -0
  315. package/workers/vendor/csharp/_framework/supportFiles/113_System.Runtime.Handles.dll +0 -0
  316. package/workers/vendor/csharp/_framework/supportFiles/114_System.Runtime.InteropServices.dll +0 -0
  317. package/workers/vendor/csharp/_framework/supportFiles/115_System.Runtime.InteropServices.JavaScript.dll +0 -0
  318. package/workers/vendor/csharp/_framework/supportFiles/116_System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
  319. package/workers/vendor/csharp/_framework/supportFiles/117_System.Runtime.Intrinsics.dll +0 -0
  320. package/workers/vendor/csharp/_framework/supportFiles/118_System.Runtime.Loader.dll +0 -0
  321. package/workers/vendor/csharp/_framework/supportFiles/119_System.Runtime.Numerics.dll +0 -0
  322. package/workers/vendor/csharp/_framework/supportFiles/11_System.Collections.Concurrent.dll +0 -0
  323. package/workers/vendor/csharp/_framework/supportFiles/120_System.Runtime.Serialization.dll +0 -0
  324. package/workers/vendor/csharp/_framework/supportFiles/121_System.Runtime.Serialization.Formatters.dll +0 -0
  325. package/workers/vendor/csharp/_framework/supportFiles/122_System.Runtime.Serialization.Json.dll +0 -0
  326. package/workers/vendor/csharp/_framework/supportFiles/123_System.Runtime.Serialization.Primitives.dll +0 -0
  327. package/workers/vendor/csharp/_framework/supportFiles/124_System.Runtime.Serialization.Xml.dll +0 -0
  328. package/workers/vendor/csharp/_framework/supportFiles/125_System.Security.AccessControl.dll +0 -0
  329. package/workers/vendor/csharp/_framework/supportFiles/126_System.Security.Claims.dll +0 -0
  330. package/workers/vendor/csharp/_framework/supportFiles/127_System.Security.Cryptography.Algorithms.dll +0 -0
  331. package/workers/vendor/csharp/_framework/supportFiles/128_System.Security.Cryptography.Cng.dll +0 -0
  332. package/workers/vendor/csharp/_framework/supportFiles/129_System.Security.Cryptography.Csp.dll +0 -0
  333. package/workers/vendor/csharp/_framework/supportFiles/12_System.Collections.dll +0 -0
  334. package/workers/vendor/csharp/_framework/supportFiles/130_System.Security.Cryptography.dll +0 -0
  335. package/workers/vendor/csharp/_framework/supportFiles/131_System.Security.Cryptography.Encoding.dll +0 -0
  336. package/workers/vendor/csharp/_framework/supportFiles/132_System.Security.Cryptography.OpenSsl.dll +0 -0
  337. package/workers/vendor/csharp/_framework/supportFiles/133_System.Security.Cryptography.Primitives.dll +0 -0
  338. package/workers/vendor/csharp/_framework/supportFiles/134_System.Security.Cryptography.X509Certificates.dll +0 -0
  339. package/workers/vendor/csharp/_framework/supportFiles/135_System.Security.dll +0 -0
  340. package/workers/vendor/csharp/_framework/supportFiles/136_System.Security.Principal.dll +0 -0
  341. package/workers/vendor/csharp/_framework/supportFiles/137_System.Security.Principal.Windows.dll +0 -0
  342. package/workers/vendor/csharp/_framework/supportFiles/138_System.Security.SecureString.dll +0 -0
  343. package/workers/vendor/csharp/_framework/supportFiles/139_System.ServiceModel.Web.dll +0 -0
  344. package/workers/vendor/csharp/_framework/supportFiles/13_System.Collections.Immutable.dll +0 -0
  345. package/workers/vendor/csharp/_framework/supportFiles/140_System.ServiceProcess.dll +0 -0
  346. package/workers/vendor/csharp/_framework/supportFiles/141_System.Text.Encoding.CodePages.dll +0 -0
  347. package/workers/vendor/csharp/_framework/supportFiles/142_System.Text.Encoding.dll +0 -0
  348. package/workers/vendor/csharp/_framework/supportFiles/143_System.Text.Encoding.Extensions.dll +0 -0
  349. package/workers/vendor/csharp/_framework/supportFiles/144_System.Text.Encodings.Web.dll +0 -0
  350. package/workers/vendor/csharp/_framework/supportFiles/145_System.Text.Json.dll +0 -0
  351. package/workers/vendor/csharp/_framework/supportFiles/146_System.Text.RegularExpressions.dll +0 -0
  352. package/workers/vendor/csharp/_framework/supportFiles/147_System.Threading.AccessControl.dll +0 -0
  353. package/workers/vendor/csharp/_framework/supportFiles/148_System.Threading.Channels.dll +0 -0
  354. package/workers/vendor/csharp/_framework/supportFiles/149_System.Threading.dll +0 -0
  355. package/workers/vendor/csharp/_framework/supportFiles/14_System.Collections.NonGeneric.dll +0 -0
  356. package/workers/vendor/csharp/_framework/supportFiles/150_System.Threading.Overlapped.dll +0 -0
  357. package/workers/vendor/csharp/_framework/supportFiles/151_System.Threading.Tasks.Dataflow.dll +0 -0
  358. package/workers/vendor/csharp/_framework/supportFiles/152_System.Threading.Tasks.dll +0 -0
  359. package/workers/vendor/csharp/_framework/supportFiles/153_System.Threading.Tasks.Extensions.dll +0 -0
  360. package/workers/vendor/csharp/_framework/supportFiles/154_System.Threading.Tasks.Parallel.dll +0 -0
  361. package/workers/vendor/csharp/_framework/supportFiles/155_System.Threading.Thread.dll +0 -0
  362. package/workers/vendor/csharp/_framework/supportFiles/156_System.Threading.ThreadPool.dll +0 -0
  363. package/workers/vendor/csharp/_framework/supportFiles/157_System.Threading.Timer.dll +0 -0
  364. package/workers/vendor/csharp/_framework/supportFiles/158_System.Transactions.dll +0 -0
  365. package/workers/vendor/csharp/_framework/supportFiles/159_System.Transactions.Local.dll +0 -0
  366. package/workers/vendor/csharp/_framework/supportFiles/15_System.Collections.Specialized.dll +0 -0
  367. package/workers/vendor/csharp/_framework/supportFiles/160_System.ValueTuple.dll +0 -0
  368. package/workers/vendor/csharp/_framework/supportFiles/161_System.Web.dll +0 -0
  369. package/workers/vendor/csharp/_framework/supportFiles/162_System.Web.HttpUtility.dll +0 -0
  370. package/workers/vendor/csharp/_framework/supportFiles/163_System.Windows.dll +0 -0
  371. package/workers/vendor/csharp/_framework/supportFiles/164_System.Xml.dll +0 -0
  372. package/workers/vendor/csharp/_framework/supportFiles/165_System.Xml.Linq.dll +0 -0
  373. package/workers/vendor/csharp/_framework/supportFiles/166_System.Xml.ReaderWriter.dll +0 -0
  374. package/workers/vendor/csharp/_framework/supportFiles/167_System.Xml.Serialization.dll +0 -0
  375. package/workers/vendor/csharp/_framework/supportFiles/168_System.Xml.XDocument.dll +0 -0
  376. package/workers/vendor/csharp/_framework/supportFiles/169_System.Xml.XmlDocument.dll +0 -0
  377. package/workers/vendor/csharp/_framework/supportFiles/16_System.ComponentModel.Annotations.dll +0 -0
  378. package/workers/vendor/csharp/_framework/supportFiles/170_System.Xml.XmlSerializer.dll +0 -0
  379. package/workers/vendor/csharp/_framework/supportFiles/171_System.Xml.XPath.dll +0 -0
  380. package/workers/vendor/csharp/_framework/supportFiles/172_System.Xml.XPath.XDocument.dll +0 -0
  381. package/workers/vendor/csharp/_framework/supportFiles/173_TraceCode.CSharpHost.dll +0 -0
  382. package/workers/vendor/csharp/_framework/supportFiles/174_WindowsBase.dll +0 -0
  383. package/workers/vendor/csharp/_framework/supportFiles/17_System.ComponentModel.DataAnnotations.dll +0 -0
  384. package/workers/vendor/csharp/_framework/supportFiles/18_System.ComponentModel.dll +0 -0
  385. package/workers/vendor/csharp/_framework/supportFiles/19_System.ComponentModel.EventBasedAsync.dll +0 -0
  386. package/workers/vendor/csharp/_framework/supportFiles/1_Microsoft.CodeAnalysis.dll +0 -0
  387. package/workers/vendor/csharp/_framework/supportFiles/20_System.ComponentModel.Primitives.dll +0 -0
  388. package/workers/vendor/csharp/_framework/supportFiles/21_System.ComponentModel.TypeConverter.dll +0 -0
  389. package/workers/vendor/csharp/_framework/supportFiles/22_System.Configuration.dll +0 -0
  390. package/workers/vendor/csharp/_framework/supportFiles/23_System.Console.dll +0 -0
  391. package/workers/vendor/csharp/_framework/supportFiles/24_System.Core.dll +0 -0
  392. package/workers/vendor/csharp/_framework/supportFiles/25_System.Data.Common.dll +0 -0
  393. package/workers/vendor/csharp/_framework/supportFiles/26_System.Data.DataSetExtensions.dll +0 -0
  394. package/workers/vendor/csharp/_framework/supportFiles/27_System.Data.dll +0 -0
  395. package/workers/vendor/csharp/_framework/supportFiles/28_System.Diagnostics.Contracts.dll +0 -0
  396. package/workers/vendor/csharp/_framework/supportFiles/29_System.Diagnostics.Debug.dll +0 -0
  397. package/workers/vendor/csharp/_framework/supportFiles/2_Microsoft.CSharp.dll +0 -0
  398. package/workers/vendor/csharp/_framework/supportFiles/30_System.Diagnostics.DiagnosticSource.dll +0 -0
  399. package/workers/vendor/csharp/_framework/supportFiles/31_System.Diagnostics.FileVersionInfo.dll +0 -0
  400. package/workers/vendor/csharp/_framework/supportFiles/32_System.Diagnostics.Process.dll +0 -0
  401. package/workers/vendor/csharp/_framework/supportFiles/33_System.Diagnostics.StackTrace.dll +0 -0
  402. package/workers/vendor/csharp/_framework/supportFiles/34_System.Diagnostics.TextWriterTraceListener.dll +0 -0
  403. package/workers/vendor/csharp/_framework/supportFiles/35_System.Diagnostics.Tools.dll +0 -0
  404. package/workers/vendor/csharp/_framework/supportFiles/36_System.Diagnostics.TraceSource.dll +0 -0
  405. package/workers/vendor/csharp/_framework/supportFiles/37_System.Diagnostics.Tracing.dll +0 -0
  406. package/workers/vendor/csharp/_framework/supportFiles/38_System.dll +0 -0
  407. package/workers/vendor/csharp/_framework/supportFiles/39_System.Drawing.dll +0 -0
  408. package/workers/vendor/csharp/_framework/supportFiles/3_Microsoft.VisualBasic.Core.dll +0 -0
  409. package/workers/vendor/csharp/_framework/supportFiles/40_System.Drawing.Primitives.dll +0 -0
  410. package/workers/vendor/csharp/_framework/supportFiles/41_System.Dynamic.Runtime.dll +0 -0
  411. package/workers/vendor/csharp/_framework/supportFiles/42_System.Formats.Asn1.dll +0 -0
  412. package/workers/vendor/csharp/_framework/supportFiles/43_System.Formats.Tar.dll +0 -0
  413. package/workers/vendor/csharp/_framework/supportFiles/44_System.Globalization.Calendars.dll +0 -0
  414. package/workers/vendor/csharp/_framework/supportFiles/45_System.Globalization.dll +0 -0
  415. package/workers/vendor/csharp/_framework/supportFiles/46_System.Globalization.Extensions.dll +0 -0
  416. package/workers/vendor/csharp/_framework/supportFiles/47_System.IO.Compression.Brotli.dll +0 -0
  417. package/workers/vendor/csharp/_framework/supportFiles/48_System.IO.Compression.dll +0 -0
  418. package/workers/vendor/csharp/_framework/supportFiles/49_System.IO.Compression.FileSystem.dll +0 -0
  419. package/workers/vendor/csharp/_framework/supportFiles/4_Microsoft.VisualBasic.dll +0 -0
  420. package/workers/vendor/csharp/_framework/supportFiles/50_System.IO.Compression.ZipFile.dll +0 -0
  421. package/workers/vendor/csharp/_framework/supportFiles/51_System.IO.dll +0 -0
  422. package/workers/vendor/csharp/_framework/supportFiles/52_System.IO.FileSystem.AccessControl.dll +0 -0
  423. package/workers/vendor/csharp/_framework/supportFiles/53_System.IO.FileSystem.dll +0 -0
  424. package/workers/vendor/csharp/_framework/supportFiles/54_System.IO.FileSystem.DriveInfo.dll +0 -0
  425. package/workers/vendor/csharp/_framework/supportFiles/55_System.IO.FileSystem.Primitives.dll +0 -0
  426. package/workers/vendor/csharp/_framework/supportFiles/56_System.IO.FileSystem.Watcher.dll +0 -0
  427. package/workers/vendor/csharp/_framework/supportFiles/57_System.IO.IsolatedStorage.dll +0 -0
  428. package/workers/vendor/csharp/_framework/supportFiles/58_System.IO.MemoryMappedFiles.dll +0 -0
  429. package/workers/vendor/csharp/_framework/supportFiles/59_System.IO.Pipelines.dll +0 -0
  430. package/workers/vendor/csharp/_framework/supportFiles/5_Microsoft.Win32.Primitives.dll +0 -0
  431. package/workers/vendor/csharp/_framework/supportFiles/60_System.IO.Pipes.AccessControl.dll +0 -0
  432. package/workers/vendor/csharp/_framework/supportFiles/61_System.IO.Pipes.dll +0 -0
  433. package/workers/vendor/csharp/_framework/supportFiles/62_System.IO.UnmanagedMemoryStream.dll +0 -0
  434. package/workers/vendor/csharp/_framework/supportFiles/63_System.Linq.AsyncEnumerable.dll +0 -0
  435. package/workers/vendor/csharp/_framework/supportFiles/64_System.Linq.dll +0 -0
  436. package/workers/vendor/csharp/_framework/supportFiles/65_System.Linq.Expressions.dll +0 -0
  437. package/workers/vendor/csharp/_framework/supportFiles/66_System.Linq.Parallel.dll +0 -0
  438. package/workers/vendor/csharp/_framework/supportFiles/67_System.Linq.Queryable.dll +0 -0
  439. package/workers/vendor/csharp/_framework/supportFiles/68_System.Memory.dll +0 -0
  440. package/workers/vendor/csharp/_framework/supportFiles/69_System.Net.dll +0 -0
  441. package/workers/vendor/csharp/_framework/supportFiles/6_Microsoft.Win32.Registry.dll +0 -0
  442. package/workers/vendor/csharp/_framework/supportFiles/70_System.Net.Http.dll +0 -0
  443. package/workers/vendor/csharp/_framework/supportFiles/71_System.Net.Http.Json.dll +0 -0
  444. package/workers/vendor/csharp/_framework/supportFiles/72_System.Net.HttpListener.dll +0 -0
  445. package/workers/vendor/csharp/_framework/supportFiles/73_System.Net.Mail.dll +0 -0
  446. package/workers/vendor/csharp/_framework/supportFiles/74_System.Net.NameResolution.dll +0 -0
  447. package/workers/vendor/csharp/_framework/supportFiles/75_System.Net.NetworkInformation.dll +0 -0
  448. package/workers/vendor/csharp/_framework/supportFiles/76_System.Net.Ping.dll +0 -0
  449. package/workers/vendor/csharp/_framework/supportFiles/77_System.Net.Primitives.dll +0 -0
  450. package/workers/vendor/csharp/_framework/supportFiles/78_System.Net.Quic.dll +0 -0
  451. package/workers/vendor/csharp/_framework/supportFiles/79_System.Net.Requests.dll +0 -0
  452. package/workers/vendor/csharp/_framework/supportFiles/7_mscorlib.dll +0 -0
  453. package/workers/vendor/csharp/_framework/supportFiles/80_System.Net.Security.dll +0 -0
  454. package/workers/vendor/csharp/_framework/supportFiles/81_System.Net.ServerSentEvents.dll +0 -0
  455. package/workers/vendor/csharp/_framework/supportFiles/82_System.Net.ServicePoint.dll +0 -0
  456. package/workers/vendor/csharp/_framework/supportFiles/83_System.Net.Sockets.dll +0 -0
  457. package/workers/vendor/csharp/_framework/supportFiles/84_System.Net.WebClient.dll +0 -0
  458. package/workers/vendor/csharp/_framework/supportFiles/85_System.Net.WebHeaderCollection.dll +0 -0
  459. package/workers/vendor/csharp/_framework/supportFiles/86_System.Net.WebProxy.dll +0 -0
  460. package/workers/vendor/csharp/_framework/supportFiles/87_System.Net.WebSockets.Client.dll +0 -0
  461. package/workers/vendor/csharp/_framework/supportFiles/88_System.Net.WebSockets.dll +0 -0
  462. package/workers/vendor/csharp/_framework/supportFiles/89_System.Numerics.dll +0 -0
  463. package/workers/vendor/csharp/_framework/supportFiles/8_netstandard.dll +0 -0
  464. package/workers/vendor/csharp/_framework/supportFiles/90_System.Numerics.Vectors.dll +0 -0
  465. package/workers/vendor/csharp/_framework/supportFiles/91_System.ObjectModel.dll +0 -0
  466. package/workers/vendor/csharp/_framework/supportFiles/92_System.Private.CoreLib.dll +0 -0
  467. package/workers/vendor/csharp/_framework/supportFiles/93_System.Private.DataContractSerialization.dll +0 -0
  468. package/workers/vendor/csharp/_framework/supportFiles/94_System.Private.Uri.dll +0 -0
  469. package/workers/vendor/csharp/_framework/supportFiles/95_System.Private.Xml.dll +0 -0
  470. package/workers/vendor/csharp/_framework/supportFiles/96_System.Private.Xml.Linq.dll +0 -0
  471. package/workers/vendor/csharp/_framework/supportFiles/97_System.Reflection.DispatchProxy.dll +0 -0
  472. package/workers/vendor/csharp/_framework/supportFiles/98_System.Reflection.dll +0 -0
  473. package/workers/vendor/csharp/_framework/supportFiles/99_System.Reflection.Emit.dll +0 -0
  474. package/workers/vendor/csharp/_framework/supportFiles/9_System.AppContext.dll +0 -0
  475. package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  476. package/workers/vendor/csharp/_framework/tr/Microsoft.CodeAnalysis.resources.wasm +0 -0
  477. package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  478. package/workers/vendor/csharp/_framework/zh-Hans/Microsoft.CodeAnalysis.resources.wasm +0 -0
  479. package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.wasm +0 -0
  480. package/workers/vendor/csharp/_framework/zh-Hant/Microsoft.CodeAnalysis.resources.wasm +0 -0
  481. package/workers/vendor/csharp/main.mjs +5 -0
  482. package/workers/vendor/csharp/package.json +1 -0
  483. package/workers/vendor/java-browser-helper.jar +0 -0
  484. package/workers/vendor/java-rewriter.jar +0 -0
  485. package/workers/vendor/javascript-libraries.js +10106 -0
  486. package/dist/runtime-types-89nchXlY.d.cts +0 -89
  487. package/dist/runtime-types-CCQ-ZLc9.d.ts +0 -89
  488. package/dist/types-zyvpJKCi.d.cts +0 -100
  489. package/dist/types-zyvpJKCi.d.ts +0 -100
  490. package/workers/java/java-source-augmentations.cjs +0 -242
  491. package/workers/java/src/spike/user/TraceHooks.java +0 -619
  492. package/workers/vendor/java-browser-spike-helper.jar +0 -0
  493. package/workers/vendor/java-practice-rewriter.jar +0 -0
  494. package/workers/vendor/java-rewrite-bridge.jar +0 -0
@@ -0,0 +1,714 @@
1
+ package tracecode.browser;
2
+
3
+ import java.io.IOException;
4
+ import java.io.PrintWriter;
5
+ import java.io.StringWriter;
6
+ import java.lang.reflect.Method;
7
+ import java.lang.reflect.InvocationTargetException;
8
+ import java.net.URL;
9
+ import java.net.URLClassLoader;
10
+ import java.nio.charset.StandardCharsets;
11
+ import java.nio.file.Files;
12
+ import java.nio.file.Path;
13
+ import java.nio.file.Paths;
14
+ import java.security.MessageDigest;
15
+ import java.util.ArrayList;
16
+ import java.util.List;
17
+ import java.util.stream.Stream;
18
+ import javax.tools.JavaCompiler;
19
+ import javax.tools.StandardJavaFileManager;
20
+ import javax.tools.StandardLocation;
21
+ import javax.tools.ToolProvider;
22
+ import tracecode.user.TraceHooks;
23
+
24
+ public final class BrowserCompileAndTraceLibrary {
25
+ private static final String RUN_CACHE_VERSION = "tracecode-java-run-v1";
26
+
27
+ private BrowserCompileAndTraceLibrary() {}
28
+
29
+ public static String compileAndTrace(
30
+ String sourcePath,
31
+ String classesDir,
32
+ String entryClass,
33
+ String compileClasspath,
34
+ String compilerProfile
35
+ ) throws Exception {
36
+ return compileAndTrace(sourcePath, classesDir, entryClass, compileClasspath, compilerProfile, 50000);
37
+ }
38
+
39
+ public static String compileAndTrace(
40
+ String sourcePath,
41
+ String classesDir,
42
+ String entryClass,
43
+ String compileClasspath,
44
+ String compilerProfile,
45
+ String maxStoredEvents
46
+ ) throws Exception {
47
+ int parsedMaxEvents;
48
+ try {
49
+ parsedMaxEvents = Integer.parseInt(maxStoredEvents);
50
+ } catch (Exception ignored) {
51
+ parsedMaxEvents = 50000;
52
+ }
53
+ return compileAndTrace(sourcePath, classesDir, entryClass, compileClasspath, compilerProfile, parsedMaxEvents);
54
+ }
55
+
56
+ public static String compileAndTrace(
57
+ String sourcePath,
58
+ String classesDir,
59
+ String entryClass,
60
+ String compileClasspath,
61
+ String compilerProfile,
62
+ int maxStoredEvents
63
+ ) throws Exception {
64
+ Path sourceFile = Paths.get(sourcePath);
65
+ Path classesPath = Paths.get(classesDir);
66
+ Files.createDirectories(classesPath);
67
+
68
+ String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
69
+ String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
70
+ String cacheKey = hashSource(source, compileClasspath, entryClass, compilerDebugArg);
71
+ Path cacheKeyPath = classesPath.resolve(".tracecode-cache-key");
72
+
73
+ StringWriter compilerStdout = new StringWriter();
74
+ StringWriter compilerStderr = new StringWriter();
75
+ PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
76
+ PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
77
+
78
+ long compileStart = System.nanoTime();
79
+ boolean compiled;
80
+ boolean compileCacheHit = false;
81
+ if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entryClass)) {
82
+ compiled = true;
83
+ compileCacheHit = true;
84
+ } else {
85
+ resetDirectory(classesPath);
86
+ compiled = compileSource(
87
+ sourcePath,
88
+ classesDir,
89
+ compileClasspath,
90
+ compilerDebugArg,
91
+ compilerStdoutWriter,
92
+ compilerStderrWriter);
93
+ if (compiled) {
94
+ Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
95
+ }
96
+ }
97
+ long compileEnd = System.nanoTime();
98
+
99
+ long classLoadStart = System.nanoTime();
100
+ long classLoadEnd = classLoadStart;
101
+ long runStart = 0;
102
+ long runEnd = 0;
103
+ Object output = null;
104
+ String runtimeError = null;
105
+ List<String> events = new ArrayList<>();
106
+ boolean success = compiled;
107
+
108
+ if (compiled) {
109
+ TraceHooks.reset(maxStoredEvents);
110
+ try (URLClassLoader loader = new URLClassLoader(
111
+ new URL[] { classesPath.toUri().toURL() },
112
+ BrowserCompileAndTraceLibrary.class.getClassLoader())) {
113
+ Class<?> entry = Class.forName(entryClass, true, loader);
114
+ Method run = entry.getMethod("run");
115
+ run.setAccessible(true);
116
+ classLoadEnd = System.nanoTime();
117
+ runStart = System.nanoTime();
118
+ output = run.invoke(null);
119
+ runEnd = System.nanoTime();
120
+ } catch (InvocationTargetException error) {
121
+ Throwable cause = error.getCause() == null ? error : error.getCause();
122
+ runEnd = System.nanoTime();
123
+ runtimeError = stackTrace(cause);
124
+ success = false;
125
+ } catch (Throwable error) {
126
+ long end = System.nanoTime();
127
+ if (runStart == 0) {
128
+ classLoadEnd = end;
129
+ } else {
130
+ runEnd = end;
131
+ }
132
+ runtimeError = stackTrace(error);
133
+ success = false;
134
+ } finally {
135
+ events = TraceHooks.drainEvents();
136
+ }
137
+ } else {
138
+ runtimeError = null;
139
+ }
140
+
141
+ return buildTraceReportJson(
142
+ success,
143
+ output == null ? null : String.valueOf(output),
144
+ events,
145
+ compilerStdout.toString(),
146
+ compilerStderr.toString(),
147
+ runtimeError,
148
+ millisBetween(compileStart, compileEnd),
149
+ millisBetween(classLoadStart, classLoadEnd),
150
+ runStart == 0 ? 0 : millisBetween(runStart, runEnd),
151
+ compileCacheHit,
152
+ compilerProfile,
153
+ TraceHooks.traceLimitExceeded(),
154
+ TraceHooks.droppedEventCount());
155
+ }
156
+
157
+ public static String compileAndRun(
158
+ String sourcePath,
159
+ String classesDir,
160
+ String entryClass,
161
+ String compileClasspath,
162
+ String compilerProfile
163
+ ) throws Exception {
164
+ Path sourceFile = Paths.get(sourcePath);
165
+ Path classesPath = Paths.get(classesDir);
166
+ Files.createDirectories(classesPath);
167
+
168
+ String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
169
+ String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
170
+ String cacheKey = hashSource(source, compileClasspath, entryClass, compilerDebugArg);
171
+ Path cacheKeyPath = classesPath.resolve(".tracecode-run-cache-key");
172
+
173
+ StringWriter compilerStdout = new StringWriter();
174
+ StringWriter compilerStderr = new StringWriter();
175
+ PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
176
+ PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
177
+
178
+ long compileStart = System.nanoTime();
179
+ boolean compiled;
180
+ boolean compileCacheHit = false;
181
+ if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entryClass)) {
182
+ compiled = true;
183
+ compileCacheHit = true;
184
+ } else {
185
+ resetDirectory(classesPath);
186
+ compiled = compileSource(
187
+ sourcePath,
188
+ classesDir,
189
+ compileClasspath,
190
+ compilerDebugArg,
191
+ compilerStdoutWriter,
192
+ compilerStderrWriter);
193
+ if (compiled) {
194
+ Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
195
+ }
196
+ }
197
+ long compileEnd = System.nanoTime();
198
+
199
+ if (!compiled) {
200
+ return buildRunReportJson(
201
+ false,
202
+ null,
203
+ compilerStdout.toString(),
204
+ compilerStderr.toString(),
205
+ null,
206
+ millisBetween(compileStart, compileEnd),
207
+ 0,
208
+ 0,
209
+ compileCacheHit,
210
+ compilerProfile);
211
+ }
212
+
213
+ long classLoadStart = System.nanoTime();
214
+ long classLoadEnd = classLoadStart;
215
+ long runStart = 0;
216
+ long runEnd = 0;
217
+ try (URLClassLoader loader = new URLClassLoader(
218
+ new URL[] { classesPath.toUri().toURL() },
219
+ BrowserCompileAndTraceLibrary.class.getClassLoader())) {
220
+ Class<?> entry = Class.forName(entryClass, true, loader);
221
+ Method run = entry.getMethod("run");
222
+ run.setAccessible(true);
223
+ classLoadEnd = System.nanoTime();
224
+ runStart = System.nanoTime();
225
+ Object output = run.invoke(null);
226
+ runEnd = System.nanoTime();
227
+ return buildRunReportJson(
228
+ true,
229
+ String.valueOf(output),
230
+ compilerStdout.toString(),
231
+ compilerStderr.toString(),
232
+ null,
233
+ millisBetween(compileStart, compileEnd),
234
+ millisBetween(classLoadStart, classLoadEnd),
235
+ millisBetween(runStart, runEnd),
236
+ compileCacheHit,
237
+ compilerProfile);
238
+ } catch (InvocationTargetException error) {
239
+ Throwable cause = error.getCause() == null ? error : error.getCause();
240
+ runEnd = System.nanoTime();
241
+ return buildRunReportJson(
242
+ false,
243
+ null,
244
+ compilerStdout.toString(),
245
+ compilerStderr.toString(),
246
+ stackTrace(cause),
247
+ millisBetween(compileStart, compileEnd),
248
+ millisBetween(classLoadStart, classLoadEnd),
249
+ runStart == 0 ? 0 : millisBetween(runStart, runEnd),
250
+ compileCacheHit,
251
+ compilerProfile);
252
+ } catch (Throwable error) {
253
+ long end = System.nanoTime();
254
+ if (runStart == 0) {
255
+ classLoadEnd = end;
256
+ } else {
257
+ runEnd = end;
258
+ }
259
+ return buildRunReportJson(
260
+ false,
261
+ null,
262
+ compilerStdout.toString(),
263
+ compilerStderr.toString(),
264
+ stackTrace(error),
265
+ millisBetween(compileStart, compileEnd),
266
+ millisBetween(classLoadStart, classLoadEnd),
267
+ runStart == 0 ? 0 : millisBetween(runStart, runEnd),
268
+ compileCacheHit,
269
+ compilerProfile);
270
+ }
271
+ }
272
+
273
+ public static String compileAndRunBatch(
274
+ String sourcePath,
275
+ String classesDir,
276
+ String entryClasses,
277
+ String compileClasspath,
278
+ String compilerProfile
279
+ ) throws Exception {
280
+ List<String> entries = splitEntryClasses(entryClasses);
281
+ if (entries.isEmpty()) {
282
+ throw new IllegalArgumentException("compileAndRunBatch requires at least one entry class");
283
+ }
284
+
285
+ Path sourceFile = Paths.get(sourcePath);
286
+ Path classesPath = Paths.get(classesDir);
287
+ Files.createDirectories(classesPath);
288
+
289
+ String source = Files.readString(sourceFile, StandardCharsets.UTF_8);
290
+ String compilerDebugArg = compilerDebugArgForProfile(compilerProfile);
291
+ String cacheKey = hashSource(source, compileClasspath, String.join("\n", entries), compilerDebugArg);
292
+ Path cacheKeyPath = classesPath.resolve(".tracecode-run-cache-key");
293
+
294
+ StringWriter compilerStdout = new StringWriter();
295
+ StringWriter compilerStderr = new StringWriter();
296
+ PrintWriter compilerStdoutWriter = new PrintWriter(compilerStdout, true);
297
+ PrintWriter compilerStderrWriter = new PrintWriter(compilerStderr, true);
298
+
299
+ long compileStart = System.nanoTime();
300
+ boolean compiled;
301
+ boolean compileCacheHit = false;
302
+ if (canReuseCompiledClasses(classesPath, cacheKeyPath, cacheKey, entries)) {
303
+ compiled = true;
304
+ compileCacheHit = true;
305
+ } else {
306
+ resetDirectory(classesPath);
307
+ compiled = compileSource(
308
+ sourcePath,
309
+ classesDir,
310
+ compileClasspath,
311
+ compilerDebugArg,
312
+ compilerStdoutWriter,
313
+ compilerStderrWriter);
314
+ if (compiled) {
315
+ Files.writeString(cacheKeyPath, cacheKey, StandardCharsets.UTF_8);
316
+ }
317
+ }
318
+ long compileEnd = System.nanoTime();
319
+
320
+ List<String> resultJson = new ArrayList<>();
321
+ boolean success = compiled;
322
+ if (compiled) {
323
+ for (String entry : entries) {
324
+ InvocationReport result = runEntryClass(classesPath, entry);
325
+ if (!result.success) success = false;
326
+ resultJson.add(buildInvocationReportJson(result));
327
+ }
328
+ }
329
+
330
+ return buildRunBatchReportJson(
331
+ success,
332
+ resultJson,
333
+ compilerStdout.toString(),
334
+ compilerStderr.toString(),
335
+ compiled ? null : "Java compilation failed",
336
+ millisBetween(compileStart, compileEnd),
337
+ compileCacheHit,
338
+ compilerProfile);
339
+ }
340
+
341
+ private static boolean compileSource(
342
+ String sourcePath,
343
+ String classesDir,
344
+ String compileClasspath,
345
+ String compilerDebugArg,
346
+ PrintWriter compilerStdout,
347
+ PrintWriter compilerStderr
348
+ ) throws Exception {
349
+ List<String> javacArgs = new ArrayList<>();
350
+ javacArgs.add(compilerDebugArg);
351
+ javacArgs.add("-d");
352
+ javacArgs.add(classesDir);
353
+ if (compileClasspath != null && !compileClasspath.isEmpty()) {
354
+ javacArgs.add("-classpath");
355
+ javacArgs.add(compileClasspath);
356
+ }
357
+ javacArgs.add(sourcePath);
358
+
359
+ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
360
+ if (compiler == null) {
361
+ return compileWithBundledJavac(javacArgs.toArray(new String[0]), compilerStderr);
362
+ }
363
+
364
+ List<String> options = new ArrayList<>();
365
+ options.add("--release");
366
+ options.add("17");
367
+ options.addAll(javacArgs);
368
+ options.remove(options.size() - 1);
369
+
370
+ try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, StandardCharsets.UTF_8)) {
371
+ fileManager.setLocationFromPaths(StandardLocation.CLASS_OUTPUT, List.of(Paths.get(classesDir)));
372
+ Iterable<? extends javax.tools.JavaFileObject> units =
373
+ fileManager.getJavaFileObjectsFromStrings(List.of(sourcePath));
374
+ return Boolean.TRUE.equals(
375
+ compiler.getTask(compilerStdout, fileManager, null, options, null, units).call());
376
+ }
377
+ }
378
+
379
+ private static boolean compileWithBundledJavac(String[] args, PrintWriter compilerStderr) throws Exception {
380
+ Class<?> javacMain = Class.forName("com.sun.tools.javac.Main");
381
+ Method compile = javacMain.getMethod("compile", String[].class, PrintWriter.class);
382
+ Object result = compile.invoke(null, args, compilerStderr);
383
+ if (!(result instanceof Integer)) {
384
+ throw new IllegalStateException("Bundled javac returned an unexpected result");
385
+ }
386
+ return ((Integer) result).intValue() == 0;
387
+ }
388
+
389
+ private static boolean canReuseCompiledClasses(
390
+ Path classesDir,
391
+ Path cacheKeyPath,
392
+ String cacheKey,
393
+ String entryClass
394
+ ) throws IOException {
395
+ return canReuseCompiledClasses(classesDir, cacheKeyPath, cacheKey, List.of(entryClass));
396
+ }
397
+
398
+ private static boolean canReuseCompiledClasses(
399
+ Path classesDir,
400
+ Path cacheKeyPath,
401
+ String cacheKey,
402
+ List<String> entryClasses
403
+ ) throws IOException {
404
+ if (!Files.exists(cacheKeyPath)) return false;
405
+ for (String entryClass : entryClasses) {
406
+ Path classFile = classesDir.resolve(entryClass.replace('.', '/') + ".class");
407
+ if (!Files.exists(classFile)) return false;
408
+ }
409
+ return cacheKey.equals(Files.readString(cacheKeyPath, StandardCharsets.UTF_8));
410
+ }
411
+
412
+ private static void resetDirectory(Path dir) throws IOException {
413
+ if (!Files.exists(dir)) {
414
+ Files.createDirectories(dir);
415
+ return;
416
+ }
417
+ try (Stream<Path> stream = Files.walk(dir)) {
418
+ stream
419
+ .sorted((left, right) -> right.getNameCount() - left.getNameCount())
420
+ .filter(path -> !path.equals(dir))
421
+ .forEach(path -> {
422
+ try {
423
+ Files.deleteIfExists(path);
424
+ } catch (IOException error) {
425
+ throw new RuntimeException(error);
426
+ }
427
+ });
428
+ } catch (RuntimeException error) {
429
+ if (error.getCause() instanceof IOException) throw (IOException) error.getCause();
430
+ throw error;
431
+ }
432
+ }
433
+
434
+ private static String hashSource(
435
+ String source,
436
+ String compileClasspath,
437
+ String entryClass,
438
+ String compilerDebugArg
439
+ ) throws Exception {
440
+ MessageDigest digest = MessageDigest.getInstance("SHA-256");
441
+ updateDigest(digest, RUN_CACHE_VERSION);
442
+ updateDigest(digest, source);
443
+ updateDigest(digest, compileClasspath == null ? "" : compileClasspath);
444
+ updateDigest(digest, entryClass == null ? "" : entryClass);
445
+ updateDigest(digest, compilerDebugArg == null ? "" : compilerDebugArg);
446
+ byte[] bytes = digest.digest();
447
+ StringBuilder out = new StringBuilder(bytes.length * 2);
448
+ for (byte value : bytes) {
449
+ out.append(Character.forDigit((value >> 4) & 0xf, 16));
450
+ out.append(Character.forDigit(value & 0xf, 16));
451
+ }
452
+ return out.toString();
453
+ }
454
+
455
+ private static void updateDigest(MessageDigest digest, String value) {
456
+ digest.update((byte) 0);
457
+ digest.update(value.getBytes(StandardCharsets.UTF_8));
458
+ }
459
+
460
+ private static String compilerDebugArgForProfile(String profile) {
461
+ if ("none".equals(profile)) return "-g:none";
462
+ if ("lines".equals(profile)) return "-g:source,lines";
463
+ return "-g";
464
+ }
465
+
466
+ private static long millisBetween(long start, long end) {
467
+ return Math.max(0, (end - start) / 1_000_000L);
468
+ }
469
+
470
+ private static String buildRunReportJson(
471
+ boolean success,
472
+ String output,
473
+ String compilerStdout,
474
+ String compilerStderr,
475
+ String runtimeError,
476
+ long compileTimeMs,
477
+ long classLoadTimeMs,
478
+ long runTimeMs,
479
+ boolean compileCacheHit,
480
+ String compilerProfile
481
+ ) {
482
+ StringBuilder out = new StringBuilder();
483
+ out.append('{');
484
+ out.append("\"success\":").append(success);
485
+ if (output != null) {
486
+ out.append(",\"output\":").append(quote(output));
487
+ }
488
+ out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
489
+ out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
490
+ out.append(",\"compileTimeMs\":").append(compileTimeMs);
491
+ out.append(",\"classLoadTimeMs\":").append(classLoadTimeMs);
492
+ out.append(",\"runTimeMs\":").append(runTimeMs);
493
+ out.append(",\"compileCacheHit\":").append(compileCacheHit);
494
+ out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
495
+ if (runtimeError != null) {
496
+ out.append(",\"runtimeError\":").append(quote(runtimeError));
497
+ }
498
+ out.append('}');
499
+ return out.toString();
500
+ }
501
+
502
+ private static String buildRunBatchReportJson(
503
+ boolean success,
504
+ List<String> results,
505
+ String compilerStdout,
506
+ String compilerStderr,
507
+ String runtimeError,
508
+ long compileTimeMs,
509
+ boolean compileCacheHit,
510
+ String compilerProfile
511
+ ) {
512
+ StringBuilder out = new StringBuilder();
513
+ out.append('{');
514
+ out.append("\"success\":").append(success);
515
+ out.append(",\"results\":[");
516
+ for (int index = 0; index < results.size(); index++) {
517
+ if (index > 0) out.append(',');
518
+ out.append(results.get(index));
519
+ }
520
+ out.append(']');
521
+ out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
522
+ out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
523
+ out.append(",\"compileTimeMs\":").append(compileTimeMs);
524
+ out.append(",\"compileCacheHit\":").append(compileCacheHit);
525
+ out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
526
+ if (runtimeError != null) {
527
+ out.append(",\"runtimeError\":").append(quote(runtimeError));
528
+ }
529
+ out.append('}');
530
+ return out.toString();
531
+ }
532
+
533
+ private static String buildTraceReportJson(
534
+ boolean success,
535
+ String output,
536
+ List<String> events,
537
+ String compilerStdout,
538
+ String compilerStderr,
539
+ String runtimeError,
540
+ long compileTimeMs,
541
+ long classLoadTimeMs,
542
+ long runTimeMs,
543
+ boolean compileCacheHit,
544
+ String compilerProfile,
545
+ boolean traceLimitExceeded,
546
+ int droppedEventCount
547
+ ) {
548
+ StringBuilder out = new StringBuilder();
549
+ out.append('{');
550
+ out.append("\"success\":").append(success);
551
+ if (output != null) {
552
+ out.append(",\"output\":").append(quote(output));
553
+ }
554
+ out.append(",\"events\":[");
555
+ for (int index = 0; index < events.size(); index++) {
556
+ if (index > 0) out.append(',');
557
+ out.append(quote(events.get(index)));
558
+ }
559
+ out.append(']');
560
+ out.append(",\"compilerStdout\":").append(quote(compilerStdout == null ? "" : compilerStdout));
561
+ out.append(",\"compilerStderr\":").append(quote(compilerStderr == null ? "" : compilerStderr));
562
+ out.append(",\"compileTimeMs\":").append(compileTimeMs);
563
+ out.append(",\"classLoadTimeMs\":").append(classLoadTimeMs);
564
+ out.append(",\"runTimeMs\":").append(runTimeMs);
565
+ out.append(",\"compileCacheHit\":").append(compileCacheHit);
566
+ out.append(",\"compilerDebugProfile\":").append(quote(compilerProfile == null ? "" : compilerProfile));
567
+ out.append(",\"traceLimitExceeded\":").append(traceLimitExceeded);
568
+ out.append(",\"droppedEventCount\":").append(droppedEventCount);
569
+ if (runtimeError != null) {
570
+ out.append(",\"runtimeError\":").append(quote(runtimeError));
571
+ }
572
+ out.append('}');
573
+ return out.toString();
574
+ }
575
+
576
+ private static String buildInvocationReportJson(InvocationReport result) {
577
+ StringBuilder out = new StringBuilder();
578
+ out.append('{');
579
+ out.append("\"success\":").append(result.success);
580
+ if (result.output != null) {
581
+ out.append(",\"output\":").append(quote(result.output));
582
+ }
583
+ out.append(",\"classLoadTimeMs\":").append(result.classLoadTimeMs);
584
+ out.append(",\"runTimeMs\":").append(result.runTimeMs);
585
+ if (result.runtimeError != null) {
586
+ out.append(",\"runtimeError\":").append(quote(result.runtimeError));
587
+ }
588
+ out.append('}');
589
+ return out.toString();
590
+ }
591
+
592
+ private static InvocationReport runEntryClass(Path classesPath, String entryClass) {
593
+ long classLoadStart = System.nanoTime();
594
+ long classLoadEnd = classLoadStart;
595
+ long runStart = 0;
596
+ long runEnd = 0;
597
+ try (URLClassLoader loader = new URLClassLoader(
598
+ new URL[] { classesPath.toUri().toURL() },
599
+ BrowserCompileAndTraceLibrary.class.getClassLoader())) {
600
+ Class<?> entry = Class.forName(entryClass, true, loader);
601
+ Method run = entry.getMethod("run");
602
+ run.setAccessible(true);
603
+ classLoadEnd = System.nanoTime();
604
+ runStart = System.nanoTime();
605
+ Object output = run.invoke(null);
606
+ runEnd = System.nanoTime();
607
+ return new InvocationReport(
608
+ true,
609
+ String.valueOf(output),
610
+ null,
611
+ millisBetween(classLoadStart, classLoadEnd),
612
+ millisBetween(runStart, runEnd));
613
+ } catch (InvocationTargetException error) {
614
+ Throwable cause = error.getCause() == null ? error : error.getCause();
615
+ runEnd = System.nanoTime();
616
+ return new InvocationReport(
617
+ false,
618
+ null,
619
+ stackTrace(cause),
620
+ millisBetween(classLoadStart, classLoadEnd),
621
+ runStart == 0 ? 0 : millisBetween(runStart, runEnd));
622
+ } catch (Throwable error) {
623
+ long end = System.nanoTime();
624
+ if (runStart == 0) {
625
+ classLoadEnd = end;
626
+ } else {
627
+ runEnd = end;
628
+ }
629
+ return new InvocationReport(
630
+ false,
631
+ null,
632
+ stackTrace(error),
633
+ millisBetween(classLoadStart, classLoadEnd),
634
+ runStart == 0 ? 0 : millisBetween(runStart, runEnd));
635
+ }
636
+ }
637
+
638
+ private static List<String> splitEntryClasses(String entryClasses) {
639
+ List<String> entries = new ArrayList<>();
640
+ if (entryClasses == null) return entries;
641
+ for (String entry : entryClasses.split("\\n")) {
642
+ String trimmed = entry.trim();
643
+ if (!trimmed.isEmpty()) entries.add(trimmed);
644
+ }
645
+ return entries;
646
+ }
647
+
648
+ private static final class InvocationReport {
649
+ final boolean success;
650
+ final String output;
651
+ final String runtimeError;
652
+ final long classLoadTimeMs;
653
+ final long runTimeMs;
654
+
655
+ InvocationReport(
656
+ boolean success,
657
+ String output,
658
+ String runtimeError,
659
+ long classLoadTimeMs,
660
+ long runTimeMs
661
+ ) {
662
+ this.success = success;
663
+ this.output = output;
664
+ this.runtimeError = runtimeError;
665
+ this.classLoadTimeMs = classLoadTimeMs;
666
+ this.runTimeMs = runTimeMs;
667
+ }
668
+ }
669
+
670
+ private static String stackTrace(Throwable error) {
671
+ StringWriter writer = new StringWriter();
672
+ error.printStackTrace(new PrintWriter(writer, true));
673
+ return writer.toString();
674
+ }
675
+
676
+ private static String quote(String value) {
677
+ StringBuilder out = new StringBuilder(value.length() + 16);
678
+ out.append('"');
679
+ for (int index = 0; index < value.length(); index++) {
680
+ char ch = value.charAt(index);
681
+ switch (ch) {
682
+ case '\\':
683
+ out.append("\\\\");
684
+ break;
685
+ case '"':
686
+ out.append("\\\"");
687
+ break;
688
+ case '\n':
689
+ out.append("\\n");
690
+ break;
691
+ case '\r':
692
+ out.append("\\r");
693
+ break;
694
+ case '\t':
695
+ out.append("\\t");
696
+ break;
697
+ case '\b':
698
+ out.append("\\b");
699
+ break;
700
+ case '\f':
701
+ out.append("\\f");
702
+ break;
703
+ default:
704
+ if (ch < 32) {
705
+ out.append(String.format("\\u%04x", (int) ch));
706
+ } else {
707
+ out.append(ch);
708
+ }
709
+ }
710
+ }
711
+ out.append('"');
712
+ return out.toString();
713
+ }
714
+ }