@eagleoutice/flowr 1.3.11

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 (668) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +27 -0
  3. package/benchmark/benchmark-slicer.js +223 -0
  4. package/benchmark/index.d.ts +3 -0
  5. package/benchmark/index.js +20 -0
  6. package/benchmark/slicer.d.ts +100 -0
  7. package/benchmark/slicer.js +223 -0
  8. package/benchmark/stats/index.d.ts +10 -0
  9. package/benchmark/stats/index.js +27 -0
  10. package/benchmark/stats/print.d.ts +7 -0
  11. package/benchmark/stats/print.js +157 -0
  12. package/benchmark/stats/stats.d.ts +41 -0
  13. package/benchmark/stats/stats.js +6 -0
  14. package/benchmark/stopwatch.d.ts +35 -0
  15. package/benchmark/stopwatch.js +79 -0
  16. package/cli/benchmark-app.d.ts +9 -0
  17. package/cli/benchmark-app.js +52 -0
  18. package/cli/benchmark-helper-app.d.ts +7 -0
  19. package/cli/benchmark-helper-app.js +60 -0
  20. package/cli/common/features.d.ts +3 -0
  21. package/cli/common/features.js +30 -0
  22. package/cli/common/index.d.ts +2 -0
  23. package/cli/common/index.js +19 -0
  24. package/cli/common/options.d.ts +20 -0
  25. package/cli/common/options.js +82 -0
  26. package/cli/common/script.d.ts +21 -0
  27. package/cli/common/script.js +61 -0
  28. package/cli/common/scripts-info.d.ts +24 -0
  29. package/cli/common/scripts-info.js +69 -0
  30. package/cli/export-quads-app.d.ts +7 -0
  31. package/cli/export-quads-app.js +46 -0
  32. package/cli/repl/commands/cfg.d.ts +3 -0
  33. package/cli/repl/commands/cfg.js +37 -0
  34. package/cli/repl/commands/commands.d.ts +11 -0
  35. package/cli/repl/commands/commands.js +103 -0
  36. package/cli/repl/commands/dataflow.d.ts +3 -0
  37. package/cli/repl/commands/dataflow.js +34 -0
  38. package/cli/repl/commands/execute.d.ts +4 -0
  39. package/cli/repl/commands/execute.js +27 -0
  40. package/cli/repl/commands/index.d.ts +2 -0
  41. package/cli/repl/commands/index.js +19 -0
  42. package/cli/repl/commands/main.d.ts +39 -0
  43. package/cli/repl/commands/main.js +14 -0
  44. package/cli/repl/commands/normalize.d.ts +3 -0
  45. package/cli/repl/commands/normalize.js +34 -0
  46. package/cli/repl/commands/parse.d.ts +2 -0
  47. package/cli/repl/commands/parse.js +109 -0
  48. package/cli/repl/commands/quit.d.ts +2 -0
  49. package/cli/repl/commands/quit.js +12 -0
  50. package/cli/repl/commands/version.d.ts +16 -0
  51. package/cli/repl/commands/version.js +33 -0
  52. package/cli/repl/core.d.ts +41 -0
  53. package/cli/repl/core.js +89 -0
  54. package/cli/repl/execute.d.ts +28 -0
  55. package/cli/repl/execute.js +79 -0
  56. package/cli/repl/index.d.ts +5 -0
  57. package/cli/repl/index.js +22 -0
  58. package/cli/repl/prompt.d.ts +2 -0
  59. package/cli/repl/prompt.js +9 -0
  60. package/cli/repl/server/connection.d.ts +21 -0
  61. package/cli/repl/server/connection.js +217 -0
  62. package/cli/repl/server/messages/analysis.d.ts +71 -0
  63. package/cli/repl/server/messages/analysis.js +21 -0
  64. package/cli/repl/server/messages/error.d.ts +11 -0
  65. package/cli/repl/server/messages/error.js +3 -0
  66. package/cli/repl/server/messages/hello.d.ts +20 -0
  67. package/cli/repl/server/messages/hello.js +3 -0
  68. package/cli/repl/server/messages/index.d.ts +1 -0
  69. package/cli/repl/server/messages/index.js +3 -0
  70. package/cli/repl/server/messages/messages.d.ts +35 -0
  71. package/cli/repl/server/messages/messages.js +20 -0
  72. package/cli/repl/server/messages/repl.d.ts +33 -0
  73. package/cli/repl/server/messages/repl.js +17 -0
  74. package/cli/repl/server/messages/slice.d.ts +25 -0
  75. package/cli/repl/server/messages/slice.js +17 -0
  76. package/cli/repl/server/net.d.ts +33 -0
  77. package/cli/repl/server/net.js +24 -0
  78. package/cli/repl/server/send.d.ts +4 -0
  79. package/cli/repl/server/send.js +18 -0
  80. package/cli/repl/server/server.d.ts +20 -0
  81. package/cli/repl/server/server.js +66 -0
  82. package/cli/repl/server/validate.d.ts +15 -0
  83. package/cli/repl/server/validate.js +34 -0
  84. package/cli/slicer-app.d.ts +11 -0
  85. package/cli/slicer-app.js +81 -0
  86. package/cli/statistics-app.d.ts +11 -0
  87. package/cli/statistics-app.js +98 -0
  88. package/cli/statistics-helper-app.d.ts +11 -0
  89. package/cli/statistics-helper-app.js +83 -0
  90. package/cli/summarizer-app.d.ts +18 -0
  91. package/cli/summarizer-app.js +67 -0
  92. package/core/index.d.ts +4 -0
  93. package/core/index.js +23 -0
  94. package/core/input.d.ts +42 -0
  95. package/core/input.js +3 -0
  96. package/core/output.d.ts +15 -0
  97. package/core/output.js +3 -0
  98. package/core/pipeline-executor.js +221 -0
  99. package/core/print/dataflow-printer.d.ts +8 -0
  100. package/core/print/dataflow-printer.js +62 -0
  101. package/core/print/normalize-printer.d.ts +7 -0
  102. package/core/print/normalize-printer.js +31 -0
  103. package/core/print/parse-printer.d.ts +3 -0
  104. package/core/print/parse-printer.js +29 -0
  105. package/core/print/print.d.ts +47 -0
  106. package/core/print/print.js +13 -0
  107. package/core/print/slice-diff-ansi.d.ts +2 -0
  108. package/core/print/slice-diff-ansi.js +49 -0
  109. package/core/slicer.d.ts +123 -0
  110. package/core/slicer.js +227 -0
  111. package/core/stepping-slicer.js +160 -0
  112. package/core/steps/all/00-parse.js +19 -0
  113. package/core/steps/all/10-normalize.js +21 -0
  114. package/core/steps/all/20-dataflow.js +21 -0
  115. package/core/steps/all/30-slice.js +16 -0
  116. package/core/steps/all/40-reconstruct.js +16 -0
  117. package/core/steps/all/core/00-parse.js +24 -0
  118. package/core/steps/all/core/10-normalize.js +46 -0
  119. package/core/steps/all/core/20-dataflow.js +39 -0
  120. package/core/steps/all/static-slicing/00-slice.js +21 -0
  121. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  122. package/core/steps/index.js +21 -0
  123. package/core/steps/input.js +3 -0
  124. package/core/steps/output.js +3 -0
  125. package/core/steps/pipeline/create.js +130 -0
  126. package/core/steps/pipeline/default.js +15 -0
  127. package/core/steps/pipeline/dependency-checker.js +76 -0
  128. package/core/steps/pipeline/index.js +20 -0
  129. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  130. package/core/steps/pipeline/pipeline.js +28 -0
  131. package/core/steps/step.js +8 -0
  132. package/core/steps/steps-provider.js +3 -0
  133. package/core/steps/steps.js +35 -0
  134. package/core/steps.d.ts +166 -0
  135. package/core/steps.js +99 -0
  136. package/dataflow/common/environments/append.js +48 -0
  137. package/dataflow/common/environments/environment.js +165 -0
  138. package/dataflow/common/environments/index.js +23 -0
  139. package/dataflow/common/environments/overwrite.js +82 -0
  140. package/dataflow/common/environments/register.js +49 -0
  141. package/dataflow/common/environments/resolve-by-name.js +35 -0
  142. package/dataflow/common/environments/scopes.js +6 -0
  143. package/dataflow/common/environments/scoping.js +27 -0
  144. package/dataflow/environments/append.d.ts +8 -0
  145. package/dataflow/environments/append.js +48 -0
  146. package/dataflow/environments/environment.d.ts +78 -0
  147. package/dataflow/environments/environment.js +161 -0
  148. package/dataflow/environments/index.d.ts +7 -0
  149. package/dataflow/environments/index.js +23 -0
  150. package/dataflow/environments/overwrite.d.ts +6 -0
  151. package/dataflow/environments/overwrite.js +82 -0
  152. package/dataflow/environments/register.d.ts +7 -0
  153. package/dataflow/environments/register.js +39 -0
  154. package/dataflow/environments/resolve-by-name.d.ts +12 -0
  155. package/dataflow/environments/resolve-by-name.js +35 -0
  156. package/dataflow/environments/scopes.d.ts +6 -0
  157. package/dataflow/environments/scopes.js +6 -0
  158. package/dataflow/environments/scoping.d.ts +4 -0
  159. package/dataflow/environments/scoping.js +27 -0
  160. package/dataflow/extractor.d.ts +6 -0
  161. package/dataflow/extractor.js +60 -0
  162. package/dataflow/graph/diff.d.ts +18 -0
  163. package/dataflow/graph/diff.js +206 -0
  164. package/dataflow/graph/edge.d.ts +37 -0
  165. package/dataflow/graph/edge.js +32 -0
  166. package/dataflow/graph/equal.js +127 -0
  167. package/dataflow/graph/graph.d.ts +120 -0
  168. package/dataflow/graph/graph.js +298 -0
  169. package/dataflow/graph/index.d.ts +4 -0
  170. package/dataflow/graph/index.js +21 -0
  171. package/dataflow/graph/quads.d.ts +8 -0
  172. package/dataflow/graph/quads.js +27 -0
  173. package/dataflow/graph/vertex.d.ts +86 -0
  174. package/dataflow/graph/vertex.js +3 -0
  175. package/dataflow/index.d.ts +5 -0
  176. package/dataflow/index.js +24 -0
  177. package/dataflow/internal/info.d.ts +21 -0
  178. package/dataflow/internal/info.js +16 -0
  179. package/dataflow/internal/linker.d.ts +41 -0
  180. package/dataflow/internal/linker.js +255 -0
  181. package/dataflow/internal/process/access.d.ts +4 -0
  182. package/dataflow/internal/process/access.js +53 -0
  183. package/dataflow/internal/process/expression-list.d.ts +8 -0
  184. package/dataflow/internal/process/expression-list.js +148 -0
  185. package/dataflow/internal/process/functions/argument.d.ts +8 -0
  186. package/dataflow/internal/process/functions/argument.js +46 -0
  187. package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
  188. package/dataflow/internal/process/functions/exit-points.js +121 -0
  189. package/dataflow/internal/process/functions/function-call.d.ts +5 -0
  190. package/dataflow/internal/process/functions/function-call.js +99 -0
  191. package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
  192. package/dataflow/internal/process/functions/function-definition.js +176 -0
  193. package/dataflow/internal/process/functions/parameter.d.ts +4 -0
  194. package/dataflow/internal/process/functions/parameter.js +47 -0
  195. package/dataflow/internal/process/if-then-else.d.ts +4 -0
  196. package/dataflow/internal/process/if-then-else.js +56 -0
  197. package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
  198. package/dataflow/internal/process/loops/for-loop.js +54 -0
  199. package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
  200. package/dataflow/internal/process/loops/repeat-loop.js +21 -0
  201. package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
  202. package/dataflow/internal/process/loops/while-loop.js +31 -0
  203. package/dataflow/internal/process/operators/assignment.d.ts +4 -0
  204. package/dataflow/internal/process/operators/assignment.js +129 -0
  205. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
  206. package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
  207. package/dataflow/internal/process/operators/pipe.d.ts +4 -0
  208. package/dataflow/internal/process/operators/pipe.js +46 -0
  209. package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
  210. package/dataflow/internal/process/operators/unary-op.js +10 -0
  211. package/dataflow/internal/process/symbol.d.ts +4 -0
  212. package/dataflow/internal/process/symbol.js +21 -0
  213. package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
  214. package/dataflow/internal/process/uninteresting-leaf.js +9 -0
  215. package/dataflow/processor.d.ts +47 -0
  216. package/dataflow/processor.js +20 -0
  217. package/dataflow/v1/extractor.js +60 -0
  218. package/dataflow/v1/graph/diff.js +206 -0
  219. package/dataflow/v1/graph/edge.js +32 -0
  220. package/dataflow/v1/graph/graph.js +298 -0
  221. package/dataflow/v1/graph/index.js +21 -0
  222. package/dataflow/v1/graph/quads.js +27 -0
  223. package/dataflow/v1/graph/vertex.js +3 -0
  224. package/dataflow/v1/index.js +24 -0
  225. package/dataflow/v1/internal/info.js +16 -0
  226. package/dataflow/v1/internal/linker.js +255 -0
  227. package/dataflow/v1/internal/process/access.js +54 -0
  228. package/dataflow/v1/internal/process/expression-list.js +154 -0
  229. package/dataflow/v1/internal/process/functions/argument.js +46 -0
  230. package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
  231. package/dataflow/v1/internal/process/functions/function-call.js +99 -0
  232. package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
  233. package/dataflow/v1/internal/process/functions/parameter.js +47 -0
  234. package/dataflow/v1/internal/process/if-then-else.js +57 -0
  235. package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
  236. package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
  237. package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
  238. package/dataflow/v1/internal/process/operators/assignment.js +129 -0
  239. package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
  240. package/dataflow/v1/internal/process/operators/pipe.js +46 -0
  241. package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
  242. package/dataflow/v1/internal/process/symbol.js +21 -0
  243. package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
  244. package/dataflow/v1/processor.js +20 -0
  245. package/dataflow/v2/entry.js +11 -0
  246. package/flowr-1.3.7.tgz +0 -0
  247. package/flowr.d.ts +26 -0
  248. package/flowr.js +135 -0
  249. package/index.d.ts +6 -0
  250. package/index.js +23 -0
  251. package/package.json +384 -0
  252. package/r-bridge/index.d.ts +11 -0
  253. package/r-bridge/index.js +28 -0
  254. package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
  255. package/r-bridge/lang-4.x/ast/index.js +19 -0
  256. package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
  257. package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
  258. package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
  259. package/r-bridge/lang-4.x/ast/model/index.js +23 -0
  260. package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
  261. package/r-bridge/lang-4.x/ast/model/model.js +3 -0
  262. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
  263. package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
  264. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
  265. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
  266. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
  267. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
  268. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
  269. package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
  270. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
  271. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
  272. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
  273. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
  274. package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
  275. package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
  276. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
  277. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
  278. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
  279. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
  280. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
  281. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
  282. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
  283. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
  284. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
  285. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
  286. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
  287. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
  288. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
  289. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
  290. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
  291. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
  292. package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
  293. package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
  294. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
  295. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  296. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
  298. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
  299. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
  300. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
  301. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
  302. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
  303. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  304. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
  305. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
  306. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
  307. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
  308. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
  309. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
  310. package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
  311. package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
  312. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
  313. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
  314. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
  315. package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
  316. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
  317. package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
  318. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
  319. package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
  320. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
  321. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
  322. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
  323. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
  324. package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
  325. package/r-bridge/lang-4.x/ast/model/type.js +18 -0
  326. package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
  327. package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
  328. package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
  329. package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
  330. package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
  331. package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
  332. package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
  333. package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
  334. package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
  335. package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
  336. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
  337. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
  338. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
  339. package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
  340. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
  341. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
  342. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
  343. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
  344. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
  345. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
  346. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
  347. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
  348. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
  349. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
  350. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
  351. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
  352. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
  353. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
  354. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
  355. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
  356. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
  357. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
  358. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
  359. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
  360. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
  361. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
  362. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
  363. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
  364. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
  365. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
  366. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
  367. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
  368. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
  369. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
  370. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
  371. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
  372. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
  373. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
  374. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
  375. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
  376. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
  377. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
  378. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
  379. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
  380. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
  381. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
  382. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
  383. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
  384. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
  385. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
  386. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
  387. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
  388. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
  389. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
  390. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
  391. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
  392. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
  393. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
  394. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
  395. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
  396. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
  397. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
  398. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
  399. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
  400. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
  401. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
  402. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
  403. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
  404. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
  405. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
  406. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
  407. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
  408. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
  409. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
  410. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
  411. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
  412. package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
  413. package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
  414. package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
  415. package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
  416. package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
  417. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
  418. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
  419. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
  420. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
  421. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
  422. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
  423. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
  424. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
  425. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
  426. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
  427. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
  428. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
  429. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
  430. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
  431. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
  432. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
  433. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
  434. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
  435. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
  436. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
  437. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
  438. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
  439. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
  440. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
  441. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
  442. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
  443. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
  444. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
  445. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
  446. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
  447. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
  448. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
  449. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
  450. package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
  451. package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
  452. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
  453. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
  454. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
  455. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
  456. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
  457. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
  458. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
  459. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
  460. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
  461. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
  462. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
  463. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
  464. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
  465. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
  466. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
  467. package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
  468. package/r-bridge/lang-4.x/index.d.ts +2 -0
  469. package/r-bridge/lang-4.x/index.js +19 -0
  470. package/r-bridge/lang-4.x/values.d.ts +39 -0
  471. package/r-bridge/lang-4.x/values.js +149 -0
  472. package/r-bridge/retriever.d.ts +48 -0
  473. package/r-bridge/retriever.js +71 -0
  474. package/r-bridge/shell.d.ts +147 -0
  475. package/r-bridge/shell.js +423 -0
  476. package/reconstruct/reconstruct.d.ts +28 -0
  477. package/reconstruct/reconstruct.js +448 -0
  478. package/slicing/criterion/collect-all.d.ts +36 -0
  479. package/slicing/criterion/collect-all.js +23 -0
  480. package/slicing/criterion/filters/all-variables.d.ts +2 -0
  481. package/slicing/criterion/filters/all-variables.js +63 -0
  482. package/slicing/criterion/filters/index.d.ts +1 -0
  483. package/slicing/criterion/filters/index.js +18 -0
  484. package/slicing/criterion/index.d.ts +3 -0
  485. package/slicing/criterion/index.js +20 -0
  486. package/slicing/criterion/parse.d.ts +20 -0
  487. package/slicing/criterion/parse.js +79 -0
  488. package/slicing/index.d.ts +3 -0
  489. package/slicing/index.js +20 -0
  490. package/slicing/static/index.d.ts +1 -0
  491. package/slicing/static/index.js +18 -0
  492. package/slicing/static/static-slicer.d.ts +29 -0
  493. package/slicing/static/static-slicer.js +186 -0
  494. package/statistics/features/common-syntax-probability.d.ts +30 -0
  495. package/statistics/features/common-syntax-probability.js +159 -0
  496. package/statistics/features/feature.d.ts +175 -0
  497. package/statistics/features/feature.js +30 -0
  498. package/statistics/features/index.d.ts +1 -0
  499. package/statistics/features/index.js +18 -0
  500. package/statistics/features/post-processing.d.ts +12 -0
  501. package/statistics/features/post-processing.js +21 -0
  502. package/statistics/features/supported/assignments/assignments.d.ts +11 -0
  503. package/statistics/features/supported/assignments/assignments.js +53 -0
  504. package/statistics/features/supported/assignments/index.d.ts +1 -0
  505. package/statistics/features/supported/assignments/index.js +6 -0
  506. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  507. package/statistics/features/supported/assignments/post-process.js +125 -0
  508. package/statistics/features/supported/comments/comments.d.ts +18 -0
  509. package/statistics/features/supported/comments/comments.js +133 -0
  510. package/statistics/features/supported/comments/index.d.ts +1 -0
  511. package/statistics/features/supported/comments/index.js +6 -0
  512. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  513. package/statistics/features/supported/comments/post-process.js +50 -0
  514. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  515. package/statistics/features/supported/control-flow/control-flow.js +67 -0
  516. package/statistics/features/supported/control-flow/index.d.ts +1 -0
  517. package/statistics/features/supported/control-flow/index.js +6 -0
  518. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  519. package/statistics/features/supported/control-flow/post-process.js +65 -0
  520. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  521. package/statistics/features/supported/data-access/data-access.js +118 -0
  522. package/statistics/features/supported/data-access/index.d.ts +1 -0
  523. package/statistics/features/supported/data-access/index.js +6 -0
  524. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  525. package/statistics/features/supported/data-access/post-process.js +107 -0
  526. package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
  527. package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
  528. package/statistics/features/supported/defined-functions/index.d.ts +1 -0
  529. package/statistics/features/supported/defined-functions/index.js +6 -0
  530. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  531. package/statistics/features/supported/defined-functions/post-process.js +177 -0
  532. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  533. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  534. package/statistics/features/supported/expression-list/index.d.ts +1 -0
  535. package/statistics/features/supported/expression-list/index.js +6 -0
  536. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  537. package/statistics/features/supported/expression-list/post-process.js +44 -0
  538. package/statistics/features/supported/index.d.ts +10 -0
  539. package/statistics/features/supported/index.js +27 -0
  540. package/statistics/features/supported/loops/index.d.ts +1 -0
  541. package/statistics/features/supported/loops/index.js +6 -0
  542. package/statistics/features/supported/loops/loops.d.ts +20 -0
  543. package/statistics/features/supported/loops/loops.js +79 -0
  544. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  545. package/statistics/features/supported/loops/post-process.js +72 -0
  546. package/statistics/features/supported/used-functions/index.d.ts +1 -0
  547. package/statistics/features/supported/used-functions/index.js +6 -0
  548. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  549. package/statistics/features/supported/used-functions/post-process.js +179 -0
  550. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  551. package/statistics/features/supported/used-functions/used-functions.js +95 -0
  552. package/statistics/features/supported/used-packages/index.d.ts +1 -0
  553. package/statistics/features/supported/used-packages/index.js +6 -0
  554. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  555. package/statistics/features/supported/used-packages/post-process.js +121 -0
  556. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  557. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  558. package/statistics/features/supported/values/index.d.ts +1 -0
  559. package/statistics/features/supported/values/index.js +6 -0
  560. package/statistics/features/supported/values/post-process.d.ts +3 -0
  561. package/statistics/features/supported/values/post-process.js +72 -0
  562. package/statistics/features/supported/values/values.d.ts +14 -0
  563. package/statistics/features/supported/values/values.js +101 -0
  564. package/statistics/features/supported/variables/index.d.ts +1 -0
  565. package/statistics/features/supported/variables/index.js +6 -0
  566. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  567. package/statistics/features/supported/variables/post-process.js +122 -0
  568. package/statistics/features/supported/variables/variables.d.ts +15 -0
  569. package/statistics/features/supported/variables/variables.js +70 -0
  570. package/statistics/index.d.ts +6 -0
  571. package/statistics/index.js +24 -0
  572. package/statistics/meta-statistics.d.ts +33 -0
  573. package/statistics/meta-statistics.js +17 -0
  574. package/statistics/output/ansi.d.ts +50 -0
  575. package/statistics/output/ansi.js +58 -0
  576. package/statistics/output/file-provider.d.ts +37 -0
  577. package/statistics/output/file-provider.js +97 -0
  578. package/statistics/output/index.d.ts +4 -0
  579. package/statistics/output/index.js +21 -0
  580. package/statistics/output/print-stats.d.ts +17 -0
  581. package/statistics/output/print-stats.js +69 -0
  582. package/statistics/output/statistics-file.d.ts +37 -0
  583. package/statistics/output/statistics-file.js +69 -0
  584. package/statistics/statistics.d.ts +24 -0
  585. package/statistics/statistics.js +109 -0
  586. package/util/args.d.ts +14 -0
  587. package/util/args.js +67 -0
  588. package/util/arrays.d.ts +44 -0
  589. package/util/arrays.js +145 -0
  590. package/util/assert.d.ts +11 -0
  591. package/util/assert.js +35 -0
  592. package/util/bimap.d.ts +24 -0
  593. package/util/bimap.js +71 -0
  594. package/util/cfg.d.ts +55 -0
  595. package/util/cfg.js +498 -0
  596. package/util/defaultmap.d.ts +34 -0
  597. package/util/defaultmap.js +65 -0
  598. package/util/diff.d.ts +43 -0
  599. package/util/diff.js +28 -0
  600. package/util/files.d.ts +54 -0
  601. package/util/files.js +144 -0
  602. package/util/json.d.ts +2 -0
  603. package/util/json.js +28 -0
  604. package/util/log.d.ts +22 -0
  605. package/util/log.js +48 -0
  606. package/util/mermaid/ast.d.ts +6 -0
  607. package/util/mermaid/ast.js +28 -0
  608. package/util/mermaid/cfg.d.ts +7 -0
  609. package/util/mermaid/cfg.js +44 -0
  610. package/util/mermaid/dfg.d.ts +21 -0
  611. package/util/mermaid/dfg.js +165 -0
  612. package/util/mermaid/index.d.ts +3 -0
  613. package/util/mermaid/index.js +20 -0
  614. package/util/mermaid/mermaid.d.ts +7 -0
  615. package/util/mermaid/mermaid.js +24 -0
  616. package/util/numbers.d.ts +1 -0
  617. package/util/numbers.js +9 -0
  618. package/util/objects.d.ts +17 -0
  619. package/util/objects.js +60 -0
  620. package/util/os.d.ts +2 -0
  621. package/util/os.js +25 -0
  622. package/util/parallel.d.ts +30 -0
  623. package/util/parallel.js +103 -0
  624. package/util/quads.d.ts +92 -0
  625. package/util/quads.js +189 -0
  626. package/util/random.d.ts +4 -0
  627. package/util/random.js +22 -0
  628. package/util/range.d.ts +32 -0
  629. package/util/range.js +61 -0
  630. package/util/set.d.ts +8 -0
  631. package/util/set.js +32 -0
  632. package/util/strings.d.ts +12 -0
  633. package/util/strings.js +41 -0
  634. package/util/summarizer/auto-detect.d.ts +2 -0
  635. package/util/summarizer/auto-detect.js +32 -0
  636. package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
  637. package/util/summarizer/benchmark/data.d.ts +66 -0
  638. package/util/summarizer/benchmark/data.js +13 -0
  639. package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
  640. package/util/summarizer/benchmark/first-phase/input.js +59 -0
  641. package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
  642. package/util/summarizer/benchmark/first-phase/process.js +208 -0
  643. package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
  644. package/util/summarizer/benchmark/second-phase/graph.js +54 -0
  645. package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
  646. package/util/summarizer/benchmark/second-phase/process.js +89 -0
  647. package/util/summarizer/benchmark/summarizer.d.ts +34 -0
  648. package/util/summarizer/benchmark/summarizer.js +53 -0
  649. package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
  650. package/util/summarizer/statistics/first-phase/process.js +81 -0
  651. package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
  652. package/util/summarizer/statistics/post-process/clusterer.js +43 -0
  653. package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
  654. package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
  655. package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
  656. package/util/summarizer/statistics/post-process/histogram.js +128 -0
  657. package/util/summarizer/statistics/post-process/index.d.ts +4 -0
  658. package/util/summarizer/statistics/post-process/index.js +21 -0
  659. package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
  660. package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
  661. package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
  662. package/util/summarizer/statistics/second-phase/process.js +117 -0
  663. package/util/summarizer/statistics/summarizer.d.ts +34 -0
  664. package/util/summarizer/statistics/summarizer.js +135 -0
  665. package/util/summarizer/summarizer.d.ts +25 -0
  666. package/util/summarizer/summarizer.js +13 -0
  667. package/util/time.d.ts +6 -0
  668. package/util/time.js +13 -0
@@ -0,0 +1,54 @@
1
+ /// <reference types="node" />
2
+ import { RParseRequestFromFile } from '../r-bridge';
3
+ /**
4
+ * Represents a table, identified by a header and a list of rows.
5
+ */
6
+ export interface Table {
7
+ header: string[];
8
+ rows: string[][];
9
+ }
10
+ /**
11
+ * Retrieves all files in the given directory recursively
12
+ * @param dir - Directory-path to start the search from
13
+ * @param suffix - Suffix of the files to be retrieved
14
+ * Based on {@link https://stackoverflow.com/a/45130990}
15
+ */
16
+ export declare function getAllFiles(dir: string, suffix?: RegExp): AsyncGenerator<string>;
17
+ /**
18
+ * Retrieves all R files in a given directory (asynchronously)
19
+ *
20
+ *
21
+ * @param input - directory-path to start the search from, can be a file as well. Will just return the file then.
22
+ * @param limit - limit the number of files to be retrieved
23
+ *
24
+ * @returns Number of files processed (normally &le; `limit`, is &ge; `limit` if limit was reached).
25
+ * Will be `1`, if `input` is an R file (and `0` if it isn't).
26
+ *
27
+ * @see getAllFiles
28
+ */
29
+ export declare function allRFiles(input: string, limit?: number): AsyncGenerator<RParseRequestFromFile, number>;
30
+ /**
31
+ * Retrieves all R files in a given set of directories and files (asynchronously)
32
+ *
33
+ * @param inputs - Files or directories to validate for R-files
34
+ * @param limit - Limit the number of files to be retrieved
35
+ * @returns Number of files processed (&le; limit)
36
+ *
37
+ * @see allRFiles
38
+ */
39
+ export declare function allRFilesFrom(inputs: string[], limit?: number): AsyncGenerator<RParseRequestFromFile, number>;
40
+ export declare function writeTableAsCsv(table: Table, file: string, sep?: string, newline?: string): void;
41
+ /**
42
+ * Reads a file line by line and calls the given function for each line.
43
+ * The `lineNumber` starts at `0`.
44
+ *
45
+ * See {@link readLineByLineSync} for a synchronous version.
46
+ */
47
+ export declare function readLineByLine(filePath: string, onLine: (line: Buffer, lineNumber: number) => Promise<void>): Promise<void>;
48
+ /**
49
+ * Reads a file line by line and calls the given function for each line.
50
+ * The `lineNumber` starts at `0`.
51
+ *
52
+ * See {@link readLineByLine} for an asynchronous version.
53
+ */
54
+ export declare function readLineByLineSync(filePath: string, onLine: (line: Buffer, lineNumber: number) => void): void;
package/util/files.js ADDED
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.readLineByLineSync = exports.readLineByLine = exports.writeTableAsCsv = exports.allRFilesFrom = exports.allRFiles = exports.getAllFiles = void 0;
30
+ const fs_1 = __importStar(require("fs"));
31
+ const path_1 = __importDefault(require("path"));
32
+ const log_1 = require("./log");
33
+ const n_readlines_1 = __importDefault(require("n-readlines"));
34
+ /**
35
+ * Retrieves all files in the given directory recursively
36
+ * @param dir - Directory-path to start the search from
37
+ * @param suffix - Suffix of the files to be retrieved
38
+ * Based on {@link https://stackoverflow.com/a/45130990}
39
+ */
40
+ async function* getAllFiles(dir, suffix = /.*/) {
41
+ const entries = await fs_1.promises.readdir(dir, { withFileTypes: true, recursive: false });
42
+ for (const subEntries of entries) {
43
+ const res = path_1.default.resolve(dir, subEntries.name);
44
+ if (subEntries.isDirectory()) {
45
+ yield* getAllFiles(res, suffix);
46
+ }
47
+ else if (suffix.test(subEntries.name)) {
48
+ yield res;
49
+ }
50
+ }
51
+ }
52
+ exports.getAllFiles = getAllFiles;
53
+ const rFileRegex = /\.[rR]$/;
54
+ /**
55
+ * Retrieves all R files in a given directory (asynchronously)
56
+ *
57
+ *
58
+ * @param input - directory-path to start the search from, can be a file as well. Will just return the file then.
59
+ * @param limit - limit the number of files to be retrieved
60
+ *
61
+ * @returns Number of files processed (normally &le; `limit`, is &ge; `limit` if limit was reached).
62
+ * Will be `1`, if `input` is an R file (and `0` if it isn't).
63
+ *
64
+ * @see getAllFiles
65
+ */
66
+ async function* allRFiles(input, limit = Number.MAX_VALUE) {
67
+ let count = 0;
68
+ if (fs_1.default.statSync(input).isFile()) {
69
+ if (rFileRegex.test(input)) {
70
+ yield { request: 'file', content: input };
71
+ return 1;
72
+ }
73
+ log_1.log.warn(`Input ${input} is not an R file`);
74
+ return 0;
75
+ }
76
+ for await (const f of getAllFiles(input, rFileRegex)) {
77
+ if (++count > limit) {
78
+ return count;
79
+ }
80
+ yield { request: 'file', content: f };
81
+ }
82
+ return count;
83
+ }
84
+ exports.allRFiles = allRFiles;
85
+ /**
86
+ * Retrieves all R files in a given set of directories and files (asynchronously)
87
+ *
88
+ * @param inputs - Files or directories to validate for R-files
89
+ * @param limit - Limit the number of files to be retrieved
90
+ * @returns Number of files processed (&le; limit)
91
+ *
92
+ * @see allRFiles
93
+ */
94
+ async function* allRFilesFrom(inputs, limit) {
95
+ limit ??= Number.MAX_VALUE;
96
+ if (inputs.length === 0) {
97
+ log_1.log.info('No inputs given, nothing to do');
98
+ return 0;
99
+ }
100
+ let count = 0;
101
+ for (const input of inputs) {
102
+ count += yield* allRFiles(input, limit - count);
103
+ }
104
+ return count;
105
+ }
106
+ exports.allRFilesFrom = allRFilesFrom;
107
+ function writeTableAsCsv(table, file, sep = ',', newline = '\n') {
108
+ const csv = [table.header.join(sep), ...table.rows.map(row => row.join(sep))].join(newline);
109
+ fs_1.default.writeFileSync(file, csv);
110
+ }
111
+ exports.writeTableAsCsv = writeTableAsCsv;
112
+ /**
113
+ * Reads a file line by line and calls the given function for each line.
114
+ * The `lineNumber` starts at `0`.
115
+ *
116
+ * See {@link readLineByLineSync} for a synchronous version.
117
+ */
118
+ async function readLineByLine(filePath, onLine) {
119
+ const reader = new n_readlines_1.default(filePath);
120
+ let line;
121
+ let counter = 0;
122
+ // eslint-disable-next-line no-cond-assign
123
+ while (line = reader.next()) {
124
+ await onLine(line, counter++);
125
+ }
126
+ }
127
+ exports.readLineByLine = readLineByLine;
128
+ /**
129
+ * Reads a file line by line and calls the given function for each line.
130
+ * The `lineNumber` starts at `0`.
131
+ *
132
+ * See {@link readLineByLine} for an asynchronous version.
133
+ */
134
+ function readLineByLineSync(filePath, onLine) {
135
+ const reader = new n_readlines_1.default(filePath);
136
+ let line;
137
+ let counter = 0;
138
+ // eslint-disable-next-line no-cond-assign
139
+ while (line = reader.next()) {
140
+ onLine(line, counter++);
141
+ }
142
+ }
143
+ exports.readLineByLineSync = readLineByLineSync;
144
+ //# sourceMappingURL=files.js.map
package/util/json.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function jsonReplacer(key: any, value: any): any;
2
+ export declare function jsonRetriever(key: string, value: unknown): unknown;
package/util/json.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonRetriever = exports.jsonReplacer = void 0;
4
+ // to get the types within JSON.stringify
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ function jsonReplacer(key, value) {
7
+ if (value instanceof Map || value instanceof Set) {
8
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
9
+ return [...value];
10
+ }
11
+ else if (typeof value === 'bigint') {
12
+ return `${value.toString()}n`;
13
+ }
14
+ else {
15
+ return value;
16
+ }
17
+ }
18
+ exports.jsonReplacer = jsonReplacer;
19
+ function jsonRetriever(key, value) {
20
+ if (typeof value === 'string' && value.endsWith('n')) {
21
+ return BigInt(value.slice(0, -1));
22
+ }
23
+ else {
24
+ return value;
25
+ }
26
+ }
27
+ exports.jsonRetriever = jsonRetriever;
28
+ //# sourceMappingURL=json.js.map
package/util/log.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { type ILogObj, type ISettingsParam, Logger } from 'tslog';
2
+ import { type Options } from 'rotating-file-stream';
3
+ export declare class FlowrLogger extends Logger<ILogObj> {
4
+ /** by keeping track of all children we can propagate updates of the settings (e.g., in tests) */
5
+ private readonly childLoggers;
6
+ getSubLogger(settings?: ISettingsParam<ILogObj>, logObj?: ILogObj): Logger<ILogObj>;
7
+ updateSettings(updater: (logger: Logger<ILogObj>) => void): void;
8
+ /**
9
+ * make the logger log to a file as well
10
+ */
11
+ logToFile(filename?: string, options?: Options): void;
12
+ }
13
+ export declare const enum LogLevel {
14
+ Silly = 0,
15
+ Trace = 1,
16
+ Debug = 2,
17
+ Info = 3,
18
+ Warn = 4,
19
+ Error = 5,
20
+ Fatal = 6
21
+ }
22
+ export declare const log: FlowrLogger;
package/util/log.js ADDED
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.log = exports.FlowrLogger = void 0;
4
+ const tslog_1 = require("tslog");
5
+ const rotating_file_stream_1 = require("rotating-file-stream");
6
+ class FlowrLogger extends tslog_1.Logger {
7
+ /** by keeping track of all children we can propagate updates of the settings (e.g., in tests) */
8
+ childLoggers = [];
9
+ getSubLogger(settings, logObj) {
10
+ const newSubLogger = super.getSubLogger(settings, logObj);
11
+ this.childLoggers.push(newSubLogger);
12
+ return newSubLogger;
13
+ }
14
+ updateSettings(updater) {
15
+ updater(this);
16
+ this.childLoggers.forEach((child) => {
17
+ updater(child);
18
+ });
19
+ }
20
+ /**
21
+ * make the logger log to a file as well
22
+ */
23
+ logToFile(filename = 'flowr.log', options = {
24
+ size: '10M',
25
+ interval: '1d',
26
+ compress: 'gzip',
27
+ }) {
28
+ const stream = (0, rotating_file_stream_1.createStream)(filename, options);
29
+ exports.log.attachTransport((logObj) => {
30
+ stream.write(`${JSON.stringify(logObj)}\n`);
31
+ });
32
+ }
33
+ }
34
+ exports.FlowrLogger = FlowrLogger;
35
+ function getActiveLog() {
36
+ return new FlowrLogger({
37
+ type: 'pretty',
38
+ name: 'main',
39
+ stylePrettyLogs: true,
40
+ prettyLogStyles: {
41
+ logLevelName: {
42
+ '*': ['bold', 'black', 'dim']
43
+ }
44
+ }
45
+ });
46
+ }
47
+ exports.log = getActiveLog();
48
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1,6 @@
1
+ import { RNodeWithParent } from '../../r-bridge';
2
+ export declare function normalizedAstToMermaid(ast: RNodeWithParent, prefix?: string): string;
3
+ /**
4
+ * Use mermaid to visualize the normalized AST.
5
+ */
6
+ export declare function normalizedAstToMermaidUrl(ast: RNodeWithParent, prefix?: string): string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizedAstToMermaidUrl = exports.normalizedAstToMermaid = void 0;
4
+ const r_bridge_1 = require("../../r-bridge");
5
+ const mermaid_1 = require("./mermaid");
6
+ function normalizedAstToMermaid(ast, prefix = '') {
7
+ let output = prefix + 'flowchart TD\n';
8
+ (0, r_bridge_1.visitAst)(ast, n => {
9
+ const name = `${n.type} (${n.info.id})\\n${n.lexeme ?? ' '}`;
10
+ output += ` n${n.info.id}(["${(0, mermaid_1.escapeMarkdown)(name)}"])\n`;
11
+ if (n.info.parent !== undefined) {
12
+ const context = n.info;
13
+ const roleSuffix = context.role === "expr-list-child" /* RoleInParent.ExpressionListChild */ || context.role === "call-argument" /* RoleInParent.FunctionCallArgument */ || context.role === "function-def-param" /* RoleInParent.FunctionDefinitionParameter */ ? `-${context.index}` : '';
14
+ output += ` n${n.info.parent} -->|"${context.role}${roleSuffix}"| n${n.info.id}\n`;
15
+ }
16
+ return false;
17
+ });
18
+ return output;
19
+ }
20
+ exports.normalizedAstToMermaid = normalizedAstToMermaid;
21
+ /**
22
+ * Use mermaid to visualize the normalized AST.
23
+ */
24
+ function normalizedAstToMermaidUrl(ast, prefix = '') {
25
+ return (0, mermaid_1.mermaidCodeToUrl)(normalizedAstToMermaid(ast, prefix));
26
+ }
27
+ exports.normalizedAstToMermaidUrl = normalizedAstToMermaidUrl;
28
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1,7 @@
1
+ import { NormalizedAst } from '../../r-bridge';
2
+ import { ControlFlowInformation } from '../cfg';
3
+ export declare function cfgToMermaid(cfg: ControlFlowInformation, normalizedAst: NormalizedAst, prefix?: string): string;
4
+ /**
5
+ * Use mermaid to visualize the normalized AST.
6
+ */
7
+ export declare function cfgToMermaidUrl(cfg: ControlFlowInformation, normalizedAst: NormalizedAst, prefix?: string): string;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cfgToMermaidUrl = exports.cfgToMermaid = void 0;
4
+ const mermaid_1 = require("./mermaid");
5
+ function getLexeme(n) {
6
+ return n ? n.info.fullLexeme ?? n.lexeme ?? '<unknown>' : '';
7
+ }
8
+ function cfgToMermaid(cfg, normalizedAst, prefix = '') {
9
+ let output = prefix + 'flowchart TD\n';
10
+ for (const [id, vertex] of cfg.graph.vertices()) {
11
+ const normalizedVertex = normalizedAst.idMap.get(id);
12
+ const content = getLexeme(normalizedVertex);
13
+ if (content.length > 0) {
14
+ const name = `"\`${(0, mermaid_1.escapeMarkdown)(vertex.name)} (${id})\n${(0, mermaid_1.escapeMarkdown)(JSON.stringify(content))}\`"`;
15
+ output += ` n${id}[${name}]\n`;
16
+ }
17
+ else {
18
+ output += ` n${id}(( ))\n`;
19
+ }
20
+ }
21
+ for (const [from, targets] of cfg.graph.edges()) {
22
+ for (const [to, edge] of targets) {
23
+ const edgeType = edge.label === 'CD' ? '-->' : '-.->';
24
+ const edgeSuffix = edge.label === 'CD' ? ` (${edge.when})` : '';
25
+ output += ` n${from} ${edgeType}|"${(0, mermaid_1.escapeMarkdown)(edge.label)}${edgeSuffix}"| n${to}\n`;
26
+ }
27
+ }
28
+ for (const entryPoint of cfg.entryPoints) {
29
+ output += ` style n${entryPoint} stroke:cyan,stroke-width:6.5px;`;
30
+ }
31
+ for (const exitPoint of cfg.exitPoints) {
32
+ output += ` style n${exitPoint} stroke:green,stroke-width:6.5px;`;
33
+ }
34
+ return output;
35
+ }
36
+ exports.cfgToMermaid = cfgToMermaid;
37
+ /**
38
+ * Use mermaid to visualize the normalized AST.
39
+ */
40
+ function cfgToMermaidUrl(cfg, normalizedAst, prefix = '') {
41
+ return (0, mermaid_1.mermaidCodeToUrl)(cfgToMermaid(cfg, normalizedAst, prefix));
42
+ }
43
+ exports.cfgToMermaidUrl = cfgToMermaidUrl;
44
+ //# sourceMappingURL=cfg.js.map
@@ -0,0 +1,21 @@
1
+ import { NodeId } from '../../r-bridge';
2
+ import { SourceRange } from '../range';
3
+ import { DataflowGraph, DataflowMap } from '../../dataflow';
4
+ export declare function formatRange(range: SourceRange | undefined): string;
5
+ export declare function graphToMermaid(graph: DataflowGraph, dataflowIdMap: DataflowMap | undefined, prefix?: string | null, idPrefix?: string, includeEnvironments?: boolean, mark?: Set<NodeId>, rootGraph?: DataflowGraph): string;
6
+ /**
7
+ * Converts a dataflow graph to a mermaid url that visualizes the graph.
8
+ *
9
+ * @param graph - The graph to convert
10
+ * @param dataflowIdMap - ID map to use to get access to the graph id mappings
11
+ * @param includeEnvironments - Whether to include the environments in the mermaid graph code
12
+ * @param mark - Special nodes to mark (e.g. those included in the slice)
13
+ */
14
+ export declare function graphToMermaidUrl(graph: DataflowGraph, dataflowIdMap: DataflowMap, includeEnvironments?: boolean, mark?: Set<NodeId>): string;
15
+ export interface LabeledDiffGraph {
16
+ label: string;
17
+ graph: DataflowGraph;
18
+ }
19
+ /** uses same id map but ensures, it is different from the rhs so that mermaid can work with that */
20
+ export declare function diffGraphsToMermaid(left: LabeledDiffGraph, right: LabeledDiffGraph, dataflowIdMap: DataflowMap | undefined, prefix: string): string;
21
+ export declare function diffGraphsToMermaidUrl(left: LabeledDiffGraph, right: LabeledDiffGraph, dataflowIdMap: DataflowMap | undefined, prefix: string): string;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diffGraphsToMermaidUrl = exports.diffGraphsToMermaid = exports.graphToMermaidUrl = exports.graphToMermaid = exports.formatRange = void 0;
4
+ const dataflow_1 = require("../../dataflow");
5
+ const assert_1 = require("../assert");
6
+ const json_1 = require("../json");
7
+ const mermaid_1 = require("./mermaid");
8
+ function formatRange(range) {
9
+ if (range === undefined) {
10
+ return '??';
11
+ }
12
+ return `${range.start.line}.${range.start.column}-${range.end.line}.${range.end.column}`;
13
+ }
14
+ exports.formatRange = formatRange;
15
+ function scopeToMermaid(scope, when) {
16
+ const whenText = when === 'always' ? '' : `, ${when}`;
17
+ return `, *${scope.replace('<', '#lt;')}${whenText}*`;
18
+ }
19
+ function createArtificialExitPoints(exitPoints, mermaid, dataflowIdMap, idPrefix) {
20
+ for (const exitPoint of exitPoints) {
21
+ if (!mermaid.rootGraph.hasNode(exitPoint, true)) {
22
+ const node = dataflowIdMap.get(exitPoint);
23
+ (0, assert_1.guard)(node !== undefined, 'exit point not found');
24
+ mermaid.nodeLines.push(` ${idPrefix}${exitPoint}{{"${node.lexeme ?? '??'} (${exitPoint})\n ${formatRange(dataflowIdMap.get(exitPoint)?.location)}"}}`);
25
+ }
26
+ mermaid.nodeLines.push(` style ${idPrefix}${exitPoint} stroke-width:6.5px;`);
27
+ }
28
+ }
29
+ function subflowToMermaid(nodeId, exitPoints, subflow, dataflowIdMap, mermaid, idPrefix = '') {
30
+ if (subflow === undefined) {
31
+ return;
32
+ }
33
+ const subflowId = `${idPrefix}flow-${nodeId}`;
34
+ mermaid.nodeLines.push(`\nsubgraph "${subflowId}" [function ${nodeId}]`);
35
+ const subgraph = graphToMermaidGraph(subflow.graph, mermaid.rootGraph, dataflowIdMap, null, idPrefix, mermaid.includeEnvironments, mermaid.mark, mermaid.rootGraph);
36
+ mermaid.nodeLines.push(...subgraph.nodeLines);
37
+ mermaid.edgeLines.push(...subgraph.edgeLines);
38
+ for (const [color, pool] of [['purple', subflow.in], ['green', subflow.out], ['orange', subflow.unknownReferences]]) {
39
+ for (const out of pool) {
40
+ if (!mermaid.mark?.has(out.nodeId)) {
41
+ // in/out/active for unmarked
42
+ mermaid.nodeLines.push(` style ${idPrefix}${out.nodeId} stroke:${color},stroke-width:4px; `);
43
+ }
44
+ }
45
+ }
46
+ if (dataflowIdMap !== undefined) {
47
+ createArtificialExitPoints(exitPoints, mermaid, dataflowIdMap, idPrefix);
48
+ }
49
+ mermaid.nodeLines.push('end');
50
+ mermaid.edgeLines.push(`${idPrefix}${nodeId} -.-|function| ${subflowId}\n`);
51
+ }
52
+ function printArg(arg) {
53
+ if (arg === 'empty') {
54
+ return '';
55
+ }
56
+ if (arg === undefined || arg === '<value>') {
57
+ return '??';
58
+ }
59
+ return `${arg.nodeId}`;
60
+ }
61
+ function displayFunctionArgMapping(argMapping) {
62
+ const result = [];
63
+ for (const arg of argMapping) {
64
+ result.push(Array.isArray(arg) ? `${arg[0]} -> ${printArg(arg[1])}` : `${printArg(arg)}`);
65
+ }
66
+ return result.length === 0 ? '' : `\n (${result.join(', ')})`;
67
+ }
68
+ function encodeEdge(from, to, types, attribute) {
69
+ // sort from and to for same edges and relates be order independent
70
+ if (types.has(dataflow_1.EdgeType.SameReadRead) || types.has(dataflow_1.EdgeType.SameDefDef) || types.has(dataflow_1.EdgeType.Relates)) {
71
+ if (from > to) {
72
+ ({ from, to } = { from: to, to: from });
73
+ }
74
+ }
75
+ return `${from}->${to}["${[...types].join(':')} (${attribute})"]`;
76
+ }
77
+ function mermaidNodeBrackets(def, fCall) {
78
+ let open;
79
+ let close;
80
+ if (def) {
81
+ open = '[';
82
+ close = ']';
83
+ }
84
+ else if (fCall) {
85
+ open = '[[';
86
+ close = ']]';
87
+ }
88
+ else {
89
+ open = '([';
90
+ close = '])';
91
+ }
92
+ return { open, close };
93
+ }
94
+ function nodeToMermaid(graph, info, mermaid, id, idPrefix, dataflowIdMap, mark) {
95
+ const def = info.tag === 'variable-definition' || info.tag === 'function-definition';
96
+ const fCall = info.tag === 'function-call';
97
+ const defText = def ? scopeToMermaid(info.scope, info.when) : '';
98
+ const { open, close } = mermaidNodeBrackets(def, fCall);
99
+ if (mermaid.includeEnvironments) {
100
+ mermaid.nodeLines.push(` %% ${id}: ${JSON.stringify(info.environment, json_1.jsonReplacer)}`);
101
+ }
102
+ mermaid.nodeLines.push(` ${idPrefix}${id}${open}"\`${(0, mermaid_1.escapeMarkdown)(info.name)} (${id}${defText})\n *${formatRange(dataflowIdMap?.get(id)?.location)}*${fCall ? displayFunctionArgMapping(info.args) : ''}\`"${close}`);
103
+ if (mark?.has(id)) {
104
+ mermaid.nodeLines.push(` style ${idPrefix}${id} stroke:black,stroke-width:7px; `);
105
+ }
106
+ const edges = mermaid.rootGraph.get(id, true);
107
+ (0, assert_1.guard)(edges !== undefined, `node ${id} must be found`);
108
+ for (const [target, edge] of [...edges[1]]) {
109
+ const dotEdge = edge.types.has(dataflow_1.EdgeType.SameDefDef) || edge.types.has(dataflow_1.EdgeType.SameReadRead) || edge.types.has(dataflow_1.EdgeType.Relates);
110
+ const edgeId = encodeEdge(idPrefix + id, idPrefix + target, edge.types, edge.attribute);
111
+ if (!mermaid.presentEdges.has(edgeId)) {
112
+ mermaid.presentEdges.add(edgeId);
113
+ mermaid.edgeLines.push(` ${idPrefix}${id} ${dotEdge ? '-.-' : '-->'}|"${[...edge.types].join(', ')} (${edge.attribute})"| ${idPrefix}${target}`);
114
+ if (target === dataflow_1.BuiltIn) {
115
+ mermaid.hasBuiltIn = true;
116
+ }
117
+ }
118
+ }
119
+ if (info.tag === 'function-definition') {
120
+ subflowToMermaid(id, info.exitPoints, info.subflow, dataflowIdMap, mermaid, idPrefix);
121
+ }
122
+ }
123
+ // make the passing of root ids more performant again
124
+ function graphToMermaidGraph(rootIds, graph, dataflowIdMap, prefix = 'flowchart TD', idPrefix = '', includeEnvironments = true, mark, rootGraph) {
125
+ const mermaid = { nodeLines: prefix === null ? [] : [prefix], edgeLines: [], presentEdges: new Set(), hasBuiltIn: false, mark, rootGraph: rootGraph ?? graph, includeEnvironments };
126
+ for (const [id, info] of graph.vertices(true)) {
127
+ if (rootIds.has(id)) {
128
+ nodeToMermaid(graph, info, mermaid, id, idPrefix, dataflowIdMap, mark);
129
+ }
130
+ }
131
+ if (mermaid.hasBuiltIn) {
132
+ mermaid.nodeLines.push(` ${idPrefix}${dataflow_1.BuiltIn}["Built-in"]`);
133
+ }
134
+ return mermaid;
135
+ }
136
+ function graphToMermaid(graph, dataflowIdMap, prefix = 'flowchart TD', idPrefix = '', includeEnvironments, mark, rootGraph) {
137
+ const mermaid = graphToMermaidGraph(graph.rootIds(), graph, dataflowIdMap, prefix, idPrefix, includeEnvironments, mark, rootGraph);
138
+ return `${mermaid.nodeLines.join('\n')}\n${mermaid.edgeLines.join('\n')}`;
139
+ }
140
+ exports.graphToMermaid = graphToMermaid;
141
+ /**
142
+ * Converts a dataflow graph to a mermaid url that visualizes the graph.
143
+ *
144
+ * @param graph - The graph to convert
145
+ * @param dataflowIdMap - ID map to use to get access to the graph id mappings
146
+ * @param includeEnvironments - Whether to include the environments in the mermaid graph code
147
+ * @param mark - Special nodes to mark (e.g. those included in the slice)
148
+ */
149
+ function graphToMermaidUrl(graph, dataflowIdMap, includeEnvironments, mark) {
150
+ return (0, mermaid_1.mermaidCodeToUrl)(graphToMermaid(graph, dataflowIdMap, undefined, undefined, includeEnvironments, mark));
151
+ }
152
+ exports.graphToMermaidUrl = graphToMermaidUrl;
153
+ /** uses same id map but ensures, it is different from the rhs so that mermaid can work with that */
154
+ function diffGraphsToMermaid(left, right, dataflowIdMap, prefix) {
155
+ // we add the prefix ourselves
156
+ const leftGraph = graphToMermaid(left.graph, dataflowIdMap, '', `l-${left.label}`);
157
+ const rightGraph = graphToMermaid(right.graph, dataflowIdMap, '', `r-${right.label}`);
158
+ return `${prefix}flowchart TD\nsubgraph "${left.label}"\n${leftGraph}\nend\nsubgraph "${right.label}"\n${rightGraph}\nend`;
159
+ }
160
+ exports.diffGraphsToMermaid = diffGraphsToMermaid;
161
+ function diffGraphsToMermaidUrl(left, right, dataflowIdMap, prefix) {
162
+ return (0, mermaid_1.mermaidCodeToUrl)(diffGraphsToMermaid(left, right, dataflowIdMap, prefix));
163
+ }
164
+ exports.diffGraphsToMermaidUrl = diffGraphsToMermaidUrl;
165
+ //# sourceMappingURL=dfg.js.map
@@ -0,0 +1,3 @@
1
+ export * from './ast';
2
+ export * from './cfg';
3
+ export * from './dfg';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ast"), exports);
18
+ __exportStar(require("./cfg"), exports);
19
+ __exportStar(require("./dfg"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ export declare function escapeMarkdown(text: string): string;
2
+ /**
3
+ * Converts mermaid code (potentially produced by {@link graphToMermaid}) to an url that presents the graph in the mermaid editor.
4
+ *
5
+ * @param code - code to convert
6
+ */
7
+ export declare function mermaidCodeToUrl(code: string): string;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mermaidCodeToUrl = exports.escapeMarkdown = void 0;
4
+ function escapeMarkdown(text) {
5
+ return text.replaceAll(/([+*])/g, '\\$1').replaceAll('"', '\'\'');
6
+ }
7
+ exports.escapeMarkdown = escapeMarkdown;
8
+ /**
9
+ * Converts mermaid code (potentially produced by {@link graphToMermaid}) to an url that presents the graph in the mermaid editor.
10
+ *
11
+ * @param code - code to convert
12
+ */
13
+ function mermaidCodeToUrl(code) {
14
+ const obj = {
15
+ code,
16
+ mermaid: {},
17
+ updateEditor: false,
18
+ autoSync: true,
19
+ updateDiagram: false
20
+ };
21
+ return `https://mermaid.live/edit#base64:${Buffer.from(JSON.stringify(obj)).toString('base64')}`;
22
+ }
23
+ exports.mermaidCodeToUrl = mermaidCodeToUrl;
24
+ //# sourceMappingURL=mermaid.js.map
@@ -0,0 +1 @@
1
+ export declare function bigint2number(a: bigint | string): number;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bigint2number = void 0;
4
+ function bigint2number(a) {
5
+ // we have to remove the trailing `n`
6
+ return Number(String(a).slice(0, -1));
7
+ }
8
+ exports.bigint2number = bigint2number;
9
+ //# sourceMappingURL=numbers.js.map