@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
package/core/slicer.js ADDED
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SteppingSlicer = void 0;
4
+ const steps_1 = require("./steps");
5
+ const assert_1 = require("../util/assert");
6
+ /**
7
+ * This is ultimately the root of flowR's static slicing procedure.
8
+ * It clearly defines the steps that are to be executed and splits them into two stages.
9
+ * - `once-per-file`: for steps that are executed once per file. These can be performed *without* the knowledge of a slicing criteria,
10
+ * and they can be cached and re-used if you want to slice the same file multiple times.
11
+ * - `once-per-slice`: for steps that are executed once per slice. These can only be performed *with* a slicing criteria.
12
+ *
13
+ * Furthermore, this stepper follows an iterable fashion to be *as flexible as possible* (e.g., to be instrumented with measurements).
14
+ * So, you can use the stepping slicer like this:
15
+ *
16
+ * ```ts
17
+ * const slicer = new SteppingSlicer({ ... })
18
+ * while(slicer.hasNextStep()) {
19
+ * await slicer.nextStep()
20
+ * }
21
+ *
22
+ * slicer.switchToSliceStage()
23
+ *
24
+ * while(slicer.hasNextStep()) {
25
+ * await slicer.nextStep()
26
+ * }
27
+ *
28
+ * const result = slicer.getResults()
29
+ * ```
30
+ *
31
+ * Of course, you might think, that this is rather overkill if you simply want to receive the slice of a given input source or in general
32
+ * the result of any step. And this is true. Therefore, if you do not want to perform some kind of magic in-between steps, you can use the
33
+ * **{@link allRemainingSteps}** function like this:
34
+ *
35
+ * ```ts
36
+ * const slicer = new SteppingSlicer({ ... })
37
+ * const result = await slicer.allRemainingSteps()
38
+ * ```
39
+ *
40
+ * As the name suggest, you can combine this name with previous calls to {@link nextStep} to only execute the remaining steps.
41
+ *
42
+ * Giving the **step of interest** allows you to declare the maximum step to execute.
43
+ * So, if you pass `dataflow` as the step of interest, the stepping slicer will stop after the dataflow step.
44
+ * If you do not pass a step, the stepping slicer will execute all steps.
45
+ *
46
+ * By default, the {@link SteppingSlicer} does not offer an automatic way to repeat the per-slice steps for multiple slices (this is mostly to prevent accidental errors).
47
+ * However, you can use the **{@link updateCriterion}** function to reset the per-slice steps and re-execute them for a new slice. This allows something like the following:
48
+ *
49
+ * ```ts
50
+ * const slicer = new SteppingSlicer({ ... })
51
+ * const result = await slicer.allRemainingSteps()
52
+ *
53
+ * slicer.updateCriterion(...)
54
+ * const result2 = await slicer.allRemainingSteps()
55
+ * ```
56
+ *
57
+ * @note Even though, using the stepping slicer introduces some performance overhead, we consider
58
+ * it to be the baseline for performance benchmarking. It may very well be possible to squeeze out some more performance by
59
+ * directly constructing the steps in the right order. However, we consider this to be negligible when compared with the time required
60
+ * for, for example, the dataflow analysis.
61
+ *
62
+ * @see retrieveResultOfStep
63
+ * @see SteppingSlicer#doNextStep
64
+ * @see StepName
65
+ */
66
+ class SteppingSlicer {
67
+ static maximumNumberOfStepsPerFile = Object.keys(steps_1.STEPS_PER_FILE).length;
68
+ static maximumNumberOfStepsPerSlice = SteppingSlicer.maximumNumberOfStepsPerFile + Object.keys(steps_1.STEPS_PER_SLICE).length;
69
+ shell;
70
+ stepOfInterest;
71
+ request;
72
+ hooks;
73
+ getId;
74
+ criterion;
75
+ results = {};
76
+ stage = 'once-per-file';
77
+ stepCounter = 0;
78
+ reachedWanted = false;
79
+ /**
80
+ * Create a new stepping slicer. For more details on the arguments please see {@link SteppingSlicerInput}.
81
+ */
82
+ constructor(input) {
83
+ this.shell = input.shell;
84
+ this.request = input.request;
85
+ this.hooks = input.hooks;
86
+ this.getId = input.getId;
87
+ this.stepOfInterest = (input.stepOfInterest ?? steps_1.LAST_STEP);
88
+ this.criterion = input.criterion;
89
+ }
90
+ /**
91
+ * Retrieve the current stage the stepping slicer is in.
92
+ * @see StepRequired
93
+ * @see switchToSliceStage
94
+ */
95
+ getCurrentStage() {
96
+ return this.stage;
97
+ }
98
+ /**
99
+ * Switch to the next stage of the stepping slicer.
100
+ * @see SteppingSlicer
101
+ * @see getCurrentStage
102
+ */
103
+ switchToSliceStage() {
104
+ (0, assert_1.guard)(this.stepCounter === SteppingSlicer.maximumNumberOfStepsPerFile, 'First need to complete all steps before switching');
105
+ (0, assert_1.guard)(this.stage === 'once-per-file', 'Cannot switch to next stage, already in once-per-slice stage');
106
+ this.stage = 'once-per-slice';
107
+ }
108
+ /**
109
+ * Returns the result of the step of interest, as well as the results of all steps before it.
110
+ *
111
+ * @param intermediate - normally you can only receive the results *after* the stepper completed the step of interested.
112
+ * However, if you pass `true` to this parameter, you can also receive the results *before* the step of interest,
113
+ * although the typing system then can not guarantee which of the steps have already happened.
114
+ */
115
+ getResults(intermediate = false) {
116
+ (0, assert_1.guard)(intermediate || this.reachedWanted, 'Before reading the results, we need to reach the step we are interested in');
117
+ return this.results;
118
+ }
119
+ /**
120
+ * Returns true only if 1) there are more steps to-do for the current stage and 2) we have not yet reached the step we are interested in
121
+ */
122
+ hasNextStep() {
123
+ return !this.reachedWanted && (this.stage === 'once-per-file' ?
124
+ this.stepCounter < SteppingSlicer.maximumNumberOfStepsPerFile
125
+ : this.stepCounter < SteppingSlicer.maximumNumberOfStepsPerSlice);
126
+ }
127
+ /**
128
+ * Execute the next step (guarded with {@link hasNextStep}) and return the name of the step that was executed, so you can guard if the step differs from what you are interested in.
129
+ * Furthermore, it returns the step's result.
130
+ *
131
+ * The `step` parameter is a safeguard if you want to retrieve the result.
132
+ * If given, it causes the execution to fail if the next step is not the one you expect.
133
+ * *Without step, please refrain from accessing the result.*
134
+ */
135
+ async nextStep(expectedStepName) {
136
+ (0, assert_1.guard)(this.hasNextStep(), 'No more steps to do');
137
+ const guardStep = this.getGuardStep(expectedStepName);
138
+ const { step, result } = await this.doNextStep(guardStep);
139
+ this.results[step] = result;
140
+ this.stepCounter += 1;
141
+ if (this.stepOfInterest === step) {
142
+ this.reachedWanted = true;
143
+ }
144
+ return { name: step, result: result };
145
+ }
146
+ getGuardStep(expectedStepName) {
147
+ return expectedStepName === undefined ?
148
+ (name) => name
149
+ :
150
+ (name) => {
151
+ (0, assert_1.guard)(expectedStepName === name, `Expected step ${expectedStepName} but got ${name}`);
152
+ return name;
153
+ };
154
+ }
155
+ async doNextStep(guardStep) {
156
+ let step;
157
+ let result;
158
+ switch (this.stepCounter) {
159
+ case 0:
160
+ step = guardStep('parse');
161
+ result = await (0, steps_1.executeSingleSubStep)(step, this.request, this.shell);
162
+ break;
163
+ case 1:
164
+ step = guardStep('normalize');
165
+ result = await (0, steps_1.executeSingleSubStep)(step, this.results.parse, await this.shell.tokenMap(), this.hooks, this.getId);
166
+ break;
167
+ case 2:
168
+ step = guardStep('dataflow');
169
+ result = (0, steps_1.executeSingleSubStep)(step, this.results.normalize);
170
+ break;
171
+ case 3:
172
+ (0, assert_1.guard)(this.criterion !== undefined, 'Cannot decode criteria without a criterion');
173
+ step = guardStep('slice');
174
+ result = (0, steps_1.executeSingleSubStep)(step, this.results.dataflow.graph, this.results.normalize, this.criterion);
175
+ break;
176
+ case 4:
177
+ step = guardStep('reconstruct');
178
+ result = (0, steps_1.executeSingleSubStep)(step, this.results.normalize, this.results.slice.result);
179
+ break;
180
+ default:
181
+ throw new Error(`Unknown step ${this.stepCounter}, reaching this should not happen!`);
182
+ }
183
+ return { step, result };
184
+ }
185
+ /**
186
+ * This only makes sense if you have already sliced a file (e.g., by running up to the `slice` step) and want to do so again while caching the results.
187
+ * Or if for whatever reason you did not pass a criterion with the constructor.
188
+ *
189
+ * @param newCriterion - the new slicing criterion to use for the next slice
190
+ */
191
+ updateCriterion(newCriterion) {
192
+ (0, assert_1.guard)(this.stepCounter >= SteppingSlicer.maximumNumberOfStepsPerFile, 'Cannot reset slice prior to once-per-slice stage');
193
+ this.criterion = newCriterion;
194
+ this.stepCounter = SteppingSlicer.maximumNumberOfStepsPerFile;
195
+ this.results.slice = undefined;
196
+ this.results.reconstruct = undefined;
197
+ if (this.stepOfInterest === 'slice' || this.stepOfInterest === 'reconstruct') {
198
+ this.reachedWanted = false;
199
+ }
200
+ }
201
+ /**
202
+ * Execute all remaining steps and automatically call {@link switchToSliceStage} if necessary.
203
+ * @param canSwitchStage - if true, automatically switch to the slice stage if necessary
204
+ * (i.e., this is what you want if you have never executed {@link nextStep} and you want to execute *all* steps).
205
+ * However, passing false allows you to only execute the steps of the 'once-per-file' stage (i.e., the steps that can be cached).
206
+ *
207
+ * @note There is a small type difference if you pass 'false' and already have manually switched to the 'once-per-slice' stage.
208
+ * Because now, the results of these steps are no longer part of the result type (although they are still included).
209
+ * In such a case, you may be better off with simply passing 'true' as the function will detect that the stage is already switched.
210
+ * We could solve this type problem by separating the SteppingSlicer class into two for each stage, but this would break the improved readability and unified handling
211
+ * of the slicer that I wanted to achieve with this class.
212
+ */
213
+ async allRemainingSteps(canSwitchStage = true) {
214
+ while (this.hasNextStep()) {
215
+ await this.nextStep();
216
+ }
217
+ if (canSwitchStage && !this.reachedWanted && this.stage === 'once-per-file') {
218
+ this.switchToSliceStage();
219
+ while (this.hasNextStep()) {
220
+ await this.nextStep();
221
+ }
222
+ }
223
+ return this.reachedWanted ? this.getResults() : this.getResults(true);
224
+ }
225
+ }
226
+ exports.SteppingSlicer = SteppingSlicer;
227
+ //# sourceMappingURL=slicer.js.map
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SteppingSlicer = void 0;
4
+ const steps_1 = require("./steps");
5
+ const pipeline_1 = require("./steps/pipeline");
6
+ const _00_parse_1 = require("./steps/all/core/00-parse");
7
+ const _10_normalize_1 = require("./steps/all/core/10-normalize");
8
+ const _20_dataflow_1 = require("./steps/all/core/20-dataflow");
9
+ const _00_slice_1 = require("./steps/all/static-slicing/00-slice");
10
+ const _10_reconstruct_1 = require("./steps/all/static-slicing/10-reconstruct");
11
+ const pipeline_executor_1 = require("./pipeline-executor");
12
+ const legacyPipelines = {
13
+ // brrh, but who cares, it is legacy!
14
+ 'parse': (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP),
15
+ 'normalize': (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE),
16
+ 'dataflow': (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.LEGACY_STATIC_DATAFLOW),
17
+ 'slice': (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.LEGACY_STATIC_DATAFLOW, _00_slice_1.STATIC_SLICE),
18
+ 'reconstruct': (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.LEGACY_STATIC_DATAFLOW, _00_slice_1.STATIC_SLICE, _10_reconstruct_1.NAIVE_RECONSTRUCT)
19
+ };
20
+ function getLegacyPipeline(interestedIn) {
21
+ return legacyPipelines[interestedIn];
22
+ }
23
+ /**
24
+ * This is ultimately the root of flowR's static slicing procedure.
25
+ * It clearly defines the steps that are to be executed and splits them into two stages.
26
+ * - `once-per-file`: for steps that are executed once per file. These can be performed *without* the knowledge of a slicing criteria,
27
+ * and they can be cached and re-used if you want to slice the same file multiple times.
28
+ * - `once-per-slice`: for steps that are executed once per slice. These can only be performed *with* a slicing criteria.
29
+ *
30
+ * Furthermore, this stepper follows an iterable fashion to be *as flexible as possible* (e.g., to be instrumented with measurements).
31
+ * So, you can use the stepping slicer like this:
32
+ *
33
+ * ```ts
34
+ * const slicer = new SteppingSlicer({ ... })
35
+ * while(slicer.hasNextStep()) {
36
+ * await slicer.nextStep()
37
+ * }
38
+ *
39
+ * slicer.switchToSliceStage()
40
+ *
41
+ * while(slicer.hasNextStep()) {
42
+ * await slicer.nextStep()
43
+ * }
44
+ *
45
+ * const result = slicer.getResults()
46
+ * ```
47
+ *
48
+ * Of course, you might think, that this is rather overkill if you simply want to receive the slice of a given input source or in general
49
+ * the result of any step. And this is true. Therefore, if you do not want to perform some kind of magic in-between steps, you can use the
50
+ * **{@link allRemainingSteps}** function like this:
51
+ *
52
+ * ```ts
53
+ * const slicer = new SteppingSlicer({ ... })
54
+ * const result = await slicer.allRemainingSteps()
55
+ * ```
56
+ *
57
+ * As the name suggest, you can combine this name with previous calls to {@link nextStep} to only execute the remaining steps.
58
+ *
59
+ * Giving the **step of interest** allows you to declare the maximum step to execute.
60
+ * So, if you pass `dataflow` as the step of interest, the stepping slicer will stop after the dataflow step.
61
+ * If you do not pass a step, the stepping slicer will execute all steps.
62
+ *
63
+ * By default, the {@link SteppingSlicer} does not offer an automatic way to repeat the per-slice steps for multiple slices (this is mostly to prevent accidental errors).
64
+ * However, you can use the **{@link updateCriterion}** function to reset the per-slice steps and re-execute them for a new slice. This allows something like the following:
65
+ *
66
+ * ```ts
67
+ * const slicer = new SteppingSlicer({ ... })
68
+ * const result = await slicer.allRemainingSteps()
69
+ *
70
+ * slicer.updateCriterion(...)
71
+ * const result2 = await slicer.allRemainingSteps()
72
+ * ```
73
+ *
74
+ * @note Even though, using the stepping slicer introduces some performance overhead, we consider
75
+ * it to be the baseline for performance benchmarking. It may very well be possible to squeeze out some more performance by
76
+ * directly constructing the steps in the right order. However, we consider this to be negligible when compared with the time required
77
+ * for, for example, the dataflow analysis.
78
+ *
79
+ * @see retrieveResultOfStep
80
+ * @see StepName
81
+ */
82
+ class SteppingSlicer {
83
+ executor;
84
+ /**
85
+ * Create a new stepping slicer. For more details on the arguments please see {@link SteppingSlicerInput}.
86
+ */
87
+ constructor(input) {
88
+ this.executor = new pipeline_executor_1.PipelineExecutor(getLegacyPipeline(input.stepOfInterest ?? steps_1.LAST_STEP), input);
89
+ }
90
+ /**
91
+ * Retrieve the current stage the stepping slicer is in.
92
+ * @see PipelineStepStage
93
+ * @see switchToSliceStage
94
+ */
95
+ getCurrentStage() {
96
+ return this.executor.getCurrentStage();
97
+ }
98
+ /**
99
+ * Switch to the next stage of the stepping slicer.
100
+ * @see SteppingSlicer
101
+ * @see getCurrentStage
102
+ */
103
+ switchToSliceStage() {
104
+ this.executor.switchToRequestStage();
105
+ }
106
+ /**
107
+ * Returns the result of the step of interest, as well as the results of all steps before it.
108
+ *
109
+ * @param intermediate - normally you can only receive the results *after* the stepper completed the step of interested.
110
+ * However, if you pass `true` to this parameter, you can also receive the results *before* the step of interest,
111
+ * although the typing system then can not guarantee which of the steps have already happened.
112
+ */
113
+ getResults(intermediate = false) {
114
+ return this.executor.getResults(intermediate);
115
+ }
116
+ /**
117
+ * Returns true only if 1) there are more steps to-do for the current stage and 2) we have not yet reached the step we are interested in
118
+ */
119
+ hasNextStep() {
120
+ return this.executor.hasNextStep();
121
+ }
122
+ /**
123
+ * Execute the next step (guarded with {@link hasNextStep}) and return the name of the step that was executed, so you can guard if the step differs from what you are interested in.
124
+ * Furthermore, it returns the step's result.
125
+ *
126
+ * The `step` parameter is a safeguard if you want to retrieve the result.
127
+ * If given, it causes the execution to fail if the next step is not the one you expect.
128
+ * *Without step, please refrain from accessing the result.*
129
+ */
130
+ async nextStep(expectedStepName) {
131
+ return this.executor.nextStep(expectedStepName);
132
+ }
133
+ /**
134
+ * This only makes sense if you have already sliced a file (e.g., by running up to the `slice` step) and want to do so again while caching the results.
135
+ * Or if for whatever reason you did not pass a criterion with the constructor.
136
+ *
137
+ * @param newCriterion - the new slicing criterion to use for the next slice
138
+ */
139
+ updateCriterion(newCriterion) {
140
+ // @ts-expect-error -- it is legacy
141
+ this.executor.updateRequest({ criterion: newCriterion });
142
+ }
143
+ /**
144
+ * Execute all remaining steps and automatically call {@link switchToSliceStage} if necessary.
145
+ * @param canSwitchStage - if true, automatically switch to the slice stage if necessary
146
+ * (i.e., this is what you want if you have never executed {@link nextStep} and you want to execute *all* steps).
147
+ * However, passing false allows you to only execute the steps of the 'once-per-file' stage (i.e., the steps that can be cached).
148
+ *
149
+ * @note There is a small type difference if you pass 'false' and already have manually switched to the 'once-per-slice' stage.
150
+ * Because now, the results of these steps are no longer part of the result type (although they are still included).
151
+ * In such a case, you may be better off with simply passing 'true' as the function will detect that the stage is already switched.
152
+ * We could solve this type problem by separating the SteppingSlicer class into two for each stage, but this would break the improved readability and unified handling
153
+ * of the slicer that I wanted to achieve with this class.
154
+ */
155
+ async allRemainingSteps(canSwitchStage = true) {
156
+ return this.executor.allRemainingSteps(canSwitchStage);
157
+ }
158
+ }
159
+ exports.SteppingSlicer = SteppingSlicer;
160
+ //# sourceMappingURL=stepping-slicer.js.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PARSE_WITH_R_SHELL_STEP = void 0;
4
+ const print_1 = require("../../print/print");
5
+ const parse_printer_1 = require("../../print/parse-printer");
6
+ const r_bridge_1 = require("../../../r-bridge");
7
+ exports.PARSE_WITH_R_SHELL_STEP = {
8
+ name: 'parse',
9
+ description: 'Parse the given R code into an AST',
10
+ processor: r_bridge_1.retrieveXmlFromRCode,
11
+ required: 'once-per-file',
12
+ printer: {
13
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
14
+ [2 /* StepOutputFormat.Json */]: text => text,
15
+ [5 /* StepOutputFormat.RdfQuads */]: parse_printer_1.parseToQuads
16
+ },
17
+ dependencies: []
18
+ };
19
+ //# sourceMappingURL=00-parse.js.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NORMALIZE = void 0;
4
+ const r_bridge_1 = require("../../../r-bridge");
5
+ const print_1 = require("../../print/print");
6
+ const normalize_printer_1 = require("../../print/normalize-printer");
7
+ exports.NORMALIZE = {
8
+ name: 'normalize',
9
+ description: 'Normalize the AST to flowR\'s AST (first step of the normalization)',
10
+ processor: r_bridge_1.normalize,
11
+ required: 'once-per-file',
12
+ printer: {
13
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
14
+ [2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
15
+ [5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
16
+ [3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
17
+ [4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
18
+ },
19
+ dependencies: ['parse']
20
+ };
21
+ //# sourceMappingURL=10-normalize.js.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LEGACY_STATIC_DATAFLOW = void 0;
4
+ const print_1 = require("../../print/print");
5
+ const dataflow_1 = require("../../../dataflow");
6
+ const dataflow_printer_1 = require("../../print/dataflow-printer");
7
+ exports.LEGACY_STATIC_DATAFLOW = {
8
+ name: 'dataflow',
9
+ description: 'Construct the dataflow graph',
10
+ processor: dataflow_1.produceDataFlowGraph,
11
+ required: 'once-per-file',
12
+ printer: {
13
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
14
+ [2 /* StepOutputFormat.Json */]: dataflow_printer_1.dataflowGraphToJson,
15
+ [5 /* StepOutputFormat.RdfQuads */]: dataflow_printer_1.dataflowGraphToQuads,
16
+ [3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
17
+ [4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
18
+ },
19
+ dependencies: ['normalize']
20
+ };
21
+ //# sourceMappingURL=20-dataflow.js.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STATIC_SLICE = void 0;
4
+ const print_1 = require("../../print/print");
5
+ const slicing_1 = require("../../../slicing");
6
+ exports.STATIC_SLICE = {
7
+ name: 'slice',
8
+ description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
9
+ processor: slicing_1.staticSlicing,
10
+ required: 'once-per-slice',
11
+ printer: {
12
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
13
+ },
14
+ dependencies: ['dataflow']
15
+ };
16
+ //# sourceMappingURL=30-slice.js.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NAIVE_RECONSTRUCT = void 0;
4
+ const print_1 = require("../../print/print");
5
+ const slicing_1 = require("../../../slicing");
6
+ exports.NAIVE_RECONSTRUCT = {
7
+ name: 'reconstruct',
8
+ description: 'Reconstruct R code from the static slice',
9
+ processor: slicing_1.reconstructToCode,
10
+ required: 'once-per-slice',
11
+ printer: {
12
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
13
+ },
14
+ dependencies: ['slice']
15
+ };
16
+ //# sourceMappingURL=40-reconstruct.js.map
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PARSE_WITH_R_SHELL_STEP = void 0;
4
+ const print_1 = require("../../../print/print");
5
+ const parse_printer_1 = require("../../../print/parse-printer");
6
+ const r_bridge_1 = require("../../../../r-bridge");
7
+ function processor(_results, input) {
8
+ return (0, r_bridge_1.retrieveXmlFromRCode)(input.request, input.shell);
9
+ }
10
+ exports.PARSE_WITH_R_SHELL_STEP = {
11
+ name: 'parse',
12
+ humanReadableName: 'parse with R shell',
13
+ description: 'Parse the given R code into an AST',
14
+ processor,
15
+ executed: 0 /* PipelineStepStage.OncePerFile */,
16
+ printer: {
17
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
18
+ [2 /* StepOutputFormat.Json */]: text => text,
19
+ [5 /* StepOutputFormat.RdfQuads */]: parse_printer_1.parseToQuads
20
+ },
21
+ dependencies: [],
22
+ requiredInput: undefined
23
+ };
24
+ //# sourceMappingURL=00-parse.js.map
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DESUGAR_NORMALIZE = exports.NORMALIZE = void 0;
4
+ const r_bridge_1 = require("../../../../r-bridge");
5
+ const print_1 = require("../../../print/print");
6
+ const normalize_printer_1 = require("../../../print/normalize-printer");
7
+ const normalize_1 = require("../../../../r-bridge/lang-4.x/ast/parser/xml/v2/normalize");
8
+ async function processor(results, input) {
9
+ return (0, r_bridge_1.normalize)(results.parse, await input.shell.tokenMap(), input.hooks, input.getId);
10
+ }
11
+ exports.NORMALIZE = {
12
+ name: 'normalize',
13
+ humanReadableName: 'v1 normalize',
14
+ description: 'Normalize the AST to flowR\'s AST',
15
+ processor,
16
+ executed: 0 /* PipelineStepStage.OncePerFile */,
17
+ printer: {
18
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
19
+ [2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
20
+ [5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
21
+ [3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
22
+ [4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
23
+ },
24
+ dependencies: ['parse'],
25
+ requiredInput: undefined
26
+ };
27
+ async function desugarProcessor(results, input) {
28
+ return (0, normalize_1.normalize)(results.parse, await input.shell.tokenMap(), input.getId);
29
+ }
30
+ exports.DESUGAR_NORMALIZE = {
31
+ name: 'normalize',
32
+ humanReadableName: 'v2 normalize',
33
+ description: 'Normalize the AST to flowR\'s AST (v2, with desugaring)',
34
+ processor: desugarProcessor,
35
+ executed: 0 /* PipelineStepStage.OncePerFile */,
36
+ printer: {
37
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
38
+ [2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
39
+ [5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
40
+ [3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
41
+ [4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
42
+ },
43
+ dependencies: ['parse'],
44
+ requiredInput: undefined
45
+ };
46
+ //# sourceMappingURL=10-normalize.js.map
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.V2_STATIC_DATAFLOW = exports.LEGACY_STATIC_DATAFLOW = void 0;
4
+ const print_1 = require("../../../print/print");
5
+ const v1_1 = require("../../../../dataflow/v1");
6
+ const dataflow_printer_1 = require("../../../print/dataflow-printer");
7
+ const entry_1 = require("../../../../dataflow/v2/entry");
8
+ const staticDataflowCommon = {
9
+ name: 'dataflow',
10
+ description: 'Construct the dataflow graph',
11
+ executed: 0 /* PipelineStepStage.OncePerFile */,
12
+ printer: {
13
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
14
+ [2 /* StepOutputFormat.Json */]: dataflow_printer_1.dataflowGraphToJson,
15
+ [5 /* StepOutputFormat.RdfQuads */]: dataflow_printer_1.dataflowGraphToQuads,
16
+ [3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
17
+ [4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
18
+ },
19
+ dependencies: ['normalize'],
20
+ };
21
+ function legacyProcessor(results) {
22
+ return (0, v1_1.produceDataFlowGraph)(results.normalize);
23
+ }
24
+ exports.LEGACY_STATIC_DATAFLOW = {
25
+ ...staticDataflowCommon,
26
+ humanReadableName: 'v1 dataflow',
27
+ processor: legacyProcessor,
28
+ requiredInput: {}
29
+ };
30
+ function v2Processor() {
31
+ return (0, entry_1.produceDataFlowGraph)();
32
+ }
33
+ exports.V2_STATIC_DATAFLOW = {
34
+ ...staticDataflowCommon,
35
+ humanReadableName: 'v2 dataflow',
36
+ processor: v2Processor,
37
+ requiredInput: {}
38
+ };
39
+ //# sourceMappingURL=20-dataflow.js.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STATIC_SLICE = void 0;
4
+ const print_1 = require("../../../print/print");
5
+ const slicing_1 = require("../../../../slicing");
6
+ function processor(results, input) {
7
+ return (0, slicing_1.staticSlicing)(results.dataflow.graph, results.normalize, input.criterion, input.threshold);
8
+ }
9
+ exports.STATIC_SLICE = {
10
+ name: 'slice',
11
+ humanReadableName: 'static slice',
12
+ description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
13
+ processor,
14
+ executed: 1 /* PipelineStepStage.OncePerRequest */,
15
+ printer: {
16
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
17
+ },
18
+ dependencies: ['dataflow'],
19
+ requiredInput: undefined
20
+ };
21
+ //# sourceMappingURL=00-slice.js.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NAIVE_RECONSTRUCT = void 0;
4
+ const print_1 = require("../../../print/print");
5
+ const slicing_1 = require("../../../../slicing");
6
+ function processor(results, input) {
7
+ return (0, slicing_1.reconstructToCode)(results.normalize, results.slice.result, input.autoSelectIf);
8
+ }
9
+ exports.NAIVE_RECONSTRUCT = {
10
+ name: 'reconstruct',
11
+ humanReadableName: 'static code reconstruction',
12
+ description: 'Reconstruct R code from the static slice',
13
+ processor,
14
+ executed: 1 /* PipelineStepStage.OncePerRequest */,
15
+ printer: {
16
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
17
+ },
18
+ dependencies: ['slice'],
19
+ requiredInput: undefined
20
+ };
21
+ //# sourceMappingURL=10-reconstruct.js.map
@@ -0,0 +1,21 @@
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("./output"), exports);
18
+ __exportStar(require("./step"), exports);
19
+ __exportStar(require("./steps"), exports);
20
+ __exportStar(require("./input"), exports);
21
+ //# sourceMappingURL=index.js.map