@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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyAndBuildPipeline = void 0;
4
+ const invalid_pipeline_error_1 = require("./invalid-pipeline-error");
5
+ const json_1 = require("../../../util/json");
6
+ const arrays_1 = require("../../../util/arrays");
7
+ /**
8
+ * Given a set of {@link IPipelineStep|steps} with their dependencies, this function verifies all requirements of {@link createPipeline}.
9
+ */
10
+ function verifyAndBuildPipeline(steps) {
11
+ if (steps.length === 0) {
12
+ throw new invalid_pipeline_error_1.InvalidPipelineError('0) Pipeline is empty');
13
+ }
14
+ const [perFileSteps, perRequestSteps] = (0, arrays_1.partitionArray)(steps, s => s.executed === 0 /* PipelineStepStage.OncePerFile */);
15
+ // we construct a map linking each name to its respective step
16
+ const perFileStepMap = new Map();
17
+ const initsPerFile = [];
18
+ const visited = new Set();
19
+ // we start by working on the per-file steps
20
+ initializeSteps(perFileSteps, perFileStepMap, initsPerFile, visited);
21
+ // first, we sort the per-file steps
22
+ const sortedPerFile = topologicalSort(initsPerFile, perFileStepMap, visited);
23
+ validateStepOutput(sortedPerFile, perFileStepMap, steps);
24
+ const perRequestStepMap = new Map(perFileStepMap);
25
+ // we track all elements without dependencies, i.e., those that start the pipeline
26
+ const initsPerRequest = [];
27
+ // now, we do the same for the per-request steps, keeping the per-file steps known
28
+ initializeSteps(perRequestSteps, perRequestStepMap, initsPerRequest, visited);
29
+ const sortedPerRequest = topologicalSort(initsPerRequest, perRequestStepMap, visited);
30
+ const sorted = [...sortedPerFile, ...sortedPerRequest];
31
+ validateStepOutput(sorted, perRequestStepMap, steps);
32
+ return {
33
+ steps: perRequestStepMap,
34
+ order: sorted,
35
+ firstStepPerRequest: sortedPerFile.length
36
+ };
37
+ }
38
+ exports.verifyAndBuildPipeline = verifyAndBuildPipeline;
39
+ function validateStepOutput(sorted, stepMap, steps) {
40
+ if (sorted.length !== stepMap.size) {
41
+ // check if any of the dependencies in the map are invalid
42
+ checkForInvalidDependency(steps, stepMap);
43
+ // otherwise, we assume a cycle
44
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`3) Pipeline contains at least one cycle; sorted: ${JSON.stringify(sorted)}, steps: ${JSON.stringify([...stepMap.keys()])}`);
45
+ }
46
+ }
47
+ function allDependenciesAreVisited(step, visited) {
48
+ return step.dependencies.every(d => visited.has(d));
49
+ }
50
+ function handleStep(step, init, visited, sorted, elem, decoratorsOfLastOthers, inits) {
51
+ if (step.decorates === init) {
52
+ if (allDependenciesAreVisited(step, visited)) {
53
+ sorted.push(elem);
54
+ visited.add(elem);
55
+ }
56
+ else {
57
+ decoratorsOfLastOthers.add(elem);
58
+ }
59
+ }
60
+ else if (step.decorates === undefined && allDependenciesAreVisited(step, visited)) {
61
+ inits.push(elem);
62
+ }
63
+ }
64
+ function topologicalSort(inits, stepMap, visited) {
65
+ const sorted = [];
66
+ while (inits.length > 0) {
67
+ const init = inits.pop();
68
+ sorted.push(init);
69
+ visited.add(init);
70
+ // these decorators still have dependencies open; we have to check if they can be satisfied by the other steps to add
71
+ const decoratorsOfLastOthers = new Set();
72
+ for (const [elem, step] of stepMap.entries()) {
73
+ if (visited.has(elem)) {
74
+ continue;
75
+ }
76
+ handleStep(step, init, visited, sorted, elem, decoratorsOfLastOthers, inits);
77
+ }
78
+ // for the other decorators we have to cycle until we find a solution, or know, that no solution exists
79
+ topologicallyInsertDecoratorElements(decoratorsOfLastOthers, stepMap, visited, sorted);
80
+ }
81
+ return sorted;
82
+ }
83
+ function topologicallyInsertDecoratorElements(decoratorsOfLastOthers, stepMap, visited, sorted) {
84
+ if (decoratorsOfLastOthers.size === 0) {
85
+ return;
86
+ }
87
+ let changed = true;
88
+ while (changed) {
89
+ changed = false;
90
+ for (const elem of [...decoratorsOfLastOthers]) {
91
+ const step = stepMap.get(elem);
92
+ if (allDependenciesAreVisited(step, visited)) {
93
+ decoratorsOfLastOthers.delete(elem);
94
+ sorted.push(elem);
95
+ visited.add(elem);
96
+ changed = true;
97
+ }
98
+ }
99
+ }
100
+ if (decoratorsOfLastOthers.size > 0) {
101
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`5) Pipeline contains at least one decoration cycle: ${JSON.stringify(decoratorsOfLastOthers, json_1.jsonReplacer)}`);
102
+ }
103
+ }
104
+ function checkForInvalidDependency(steps, stepMap) {
105
+ for (const step of steps) {
106
+ for (const dep of step.dependencies) {
107
+ if (!stepMap.has(dep)) {
108
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`2) Step "${step.name}" depends on step "${dep}" which does not exist`);
109
+ }
110
+ }
111
+ if (step.decorates && !stepMap.has(step.decorates)) {
112
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`4) Step "${step.name}" decorates step "${step.decorates}" which does not exist`);
113
+ }
114
+ }
115
+ }
116
+ function initializeSteps(steps, stepMap, inits, visited) {
117
+ for (const step of steps) {
118
+ const name = step.name;
119
+ // if the name is already in the map we have a duplicate
120
+ if (stepMap.has(name)) {
121
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`1) Step name "${name}" is not unique in the pipeline`);
122
+ }
123
+ stepMap.set(name, step);
124
+ // only steps that have no dependencies and do not decorate others can be initial steps
125
+ if (allDependenciesAreVisited(step, visited) && (step.decorates === undefined || visited.has(step.decorates))) {
126
+ inits.push(name);
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.V2_DATAFLOW_PIPELINE = exports.DEFAULT_SLICING_PIPELINE = void 0;
4
+ /**
5
+ * Contains the default pipeline for working with flowr
6
+ */
7
+ const pipeline_1 = require("./pipeline");
8
+ const _00_parse_1 = require("../all/core/00-parse");
9
+ const _10_normalize_1 = require("../all/core/10-normalize");
10
+ const _20_dataflow_1 = require("../all/core/20-dataflow");
11
+ const _00_slice_1 = require("../all/static-slicing/00-slice");
12
+ const _10_reconstruct_1 = require("../all/static-slicing/10-reconstruct");
13
+ exports.DEFAULT_SLICING_PIPELINE = (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);
14
+ exports.V2_DATAFLOW_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.DESUGAR_NORMALIZE, _20_dataflow_1.V2_STATIC_DATAFLOW);
15
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyPipeline = void 0;
4
+ const invalid_pipeline_error_1 = require("./invalid-pipeline-error");
5
+ /**
6
+ * Given a set of {@link IStep|steps} with their dependencies, this function verifies that
7
+ * 1) all names of steps are unique for the given pipeline
8
+ * 2) all dependencies of steps are valid (i.e., refer to existing steps)
9
+ * 3) there are no cycles in the dependency graph
10
+ * If successful, it returns the topologically sorted list of steps in order of desired execution.
11
+ */
12
+ function verifyPipeline(steps) {
13
+ if (steps.length === 0) {
14
+ throw new invalid_pipeline_error_1.InvalidPipelineError('Pipeline is empty');
15
+ }
16
+ // we construct a map linking each name to its respective step
17
+ const stepMap = new Map();
18
+ // we track all elements without dependencies, i.e. those that start the pipeline
19
+ const inits = [];
20
+ initializeSteps(steps, stepMap, inits);
21
+ if (inits.length === 0) {
22
+ throw new invalid_pipeline_error_1.InvalidPipelineError('Pipeline has no initial steps (i.e., it contains no step without dependencies)');
23
+ }
24
+ const sorted = topoSort(inits, stepMap);
25
+ if (sorted.length !== stepMap.size) {
26
+ // check if any of the dependencies in the map are invalid
27
+ checkForInvalidDependency(steps, stepMap);
28
+ // otherwise, we assume a cycle
29
+ throw new invalid_pipeline_error_1.InvalidPipelineError('Pipeline contains at least one cycle');
30
+ }
31
+ return {
32
+ steps: stepMap,
33
+ order: sorted
34
+ };
35
+ }
36
+ exports.verifyPipeline = verifyPipeline;
37
+ function topoSort(inits, stepMap) {
38
+ // now, we topo-sort the steps
39
+ const sorted = [];
40
+ const visited = new Set();
41
+ while (inits.length > 0) {
42
+ const init = inits.pop();
43
+ sorted.push(init);
44
+ visited.add(init);
45
+ // TODO: improve this check, maybe really remove?
46
+ for (const [key, step] of stepMap.entries()) {
47
+ if (!visited.has(key) && step.dependencies.filter(dep => !visited.has(dep)).length === 0) {
48
+ inits.push(key);
49
+ }
50
+ }
51
+ }
52
+ return sorted;
53
+ }
54
+ function checkForInvalidDependency(steps, stepMap) {
55
+ for (const step of steps) {
56
+ for (const dep of step.dependencies) {
57
+ if (!stepMap.has(dep)) {
58
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`Step "${step.name}" depends on step "${dep}" which does not exist`);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ function initializeSteps(steps, stepMap, inits) {
64
+ for (const step of steps) {
65
+ const name = step.name;
66
+ // if the name is already in the map we have a duplicate
67
+ if (stepMap.has(name)) {
68
+ throw new invalid_pipeline_error_1.InvalidPipelineError(`Step name "${name}" is not unique in the pipeline`);
69
+ }
70
+ stepMap.set(name, step);
71
+ if (step.dependencies.length === 0) {
72
+ inits.push(name);
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=dependency-checker.js.map
@@ -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("./pipeline"), exports);
18
+ __exportStar(require("./invalid-pipeline-error"), exports);
19
+ __exportStar(require("./default"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidPipelineError = void 0;
4
+ /**
5
+ * Thrown if for whatever reason, the pipeline is invalid.
6
+ */
7
+ class InvalidPipelineError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'InvalidPipelineError';
11
+ }
12
+ }
13
+ exports.InvalidPipelineError = InvalidPipelineError;
14
+ //# sourceMappingURL=invalid-pipeline-error.js.map
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPipeline = void 0;
4
+ const create_1 = require("./create");
5
+ /**
6
+ * Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
7
+ * In order to be valid, the collection of {@link IPipelineStep|steps} must satisfy the following set of constraints
8
+ * (which should be logical, when you consider what a pipeline should accomplish):
9
+ *
10
+ * 0) the collection of {@link IPipelineStep|steps} is not empty
11
+ * 1) all {@link IPipelineStepOrder#name|names} of {@link IPipelineStep|steps} are unique for the given pipeline
12
+ * 2) all {@link IPipelineStepOrder#dependencies|dependencies} of all {@link IPipelineStep|steps} are exist
13
+ * 3) there are no cycles in the dependency graph
14
+ * 4) the target of a {@link IPipelineStepOrder#decorates|step's decoration} exists
15
+ * 5) if a {@link IPipelineStepOrder#decorates|decoration} applies, all of its {@link IPipelineStepOrder#dependencies|dependencies} are already in the pipeline
16
+ * 6) in the resulting {@link Pipeline|pipeline}, there is a strict cut between {@link IPipelineStep|steps} that are executed
17
+ * {@link PipelineStepStage#OncePerFile|once per file} and {@link PipelineStepStage#OncePerRequest|once per request}.
18
+ *
19
+ * @returns The function will try to order your collection steps so that all the constraints hold.
20
+ * If it succeeds it will return the resulting {@link Pipeline|pipeline}, otherwise it will throw an {@link InvalidPipelineError}.
21
+ *
22
+ * @throws InvalidPipelineError If any of the constraints listed above are not satisfied.
23
+ */
24
+ function createPipeline(...steps) {
25
+ return (0, create_1.verifyAndBuildPipeline)(steps);
26
+ }
27
+ exports.createPipeline = createPipeline;
28
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Defines the {@link IPipelineStep} interface which specifies all data available for a single step.
4
+ *
5
+ * @module
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=steps-provider.js.map
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * This file defines *all* steps of the slicing process and the data they require.
4
+ *
5
+ * Note, that the order of elements here also describes the *desired* order of their desired execution for readability.
6
+ * However, it is the {@link SteppingSlicer} which controls the order of execution and the steps required to achieve a given result.
7
+ *
8
+ * If you add a new step, you have to (at least) update the {@link SteppingSlicer} as well as the corresponding type predicate {@link SteppingSlicerInput}.
9
+ * Furthermore, if your step is the new *last* step, please update {@link LAST_STEP}.
10
+ *
11
+ * Please note that the combination of `satisfies` and `as` seems to be required.
12
+ * With `satisfies` we make sure that the respective element has all the keys it requires, and the `as` force the type to be exactly the given one
13
+ *
14
+ * @module
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.LAST_STEP = exports.LAST_PER_FILE_STEP = exports.STEPS = exports.STEPS_PER_SLICE = exports.STEPS_PER_FILE = void 0;
18
+ const _00_parse_1 = require("./all/core/00-parse");
19
+ const _10_normalize_1 = require("./all/core/10-normalize");
20
+ const _20_dataflow_1 = require("./all/core/20-dataflow");
21
+ const _00_slice_1 = require("./all/static-slicing/00-slice");
22
+ const _10_reconstruct_1 = require("./all/static-slicing/10-reconstruct");
23
+ exports.STEPS_PER_FILE = {
24
+ 'parse': _00_parse_1.PARSE_WITH_R_SHELL_STEP,
25
+ 'normalize': _10_normalize_1.NORMALIZE,
26
+ 'dataflow': _20_dataflow_1.LEGACY_STATIC_DATAFLOW
27
+ };
28
+ exports.STEPS_PER_SLICE = {
29
+ 'slice': _00_slice_1.STATIC_SLICE,
30
+ 'reconstruct': _10_reconstruct_1.NAIVE_RECONSTRUCT
31
+ };
32
+ exports.STEPS = { ...exports.STEPS_PER_FILE, ...exports.STEPS_PER_SLICE };
33
+ exports.LAST_PER_FILE_STEP = 'dataflow';
34
+ exports.LAST_STEP = 'reconstruct';
35
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1,166 @@
1
+ /**
2
+ * This file defines *all* steps of the slicing process and the data they require.
3
+ *
4
+ * Note, that the order of elements here also describes the *desired* order of their desired execution for readability.
5
+ * However, it is the {@link SteppingSlicer} which controls the order of execution and the steps required to achieve a given result.
6
+ *
7
+ * If you add a new step, you have to (at least) update the {@link SteppingSlicer} as well as the corresponding type predicate {@link SteppingSlicerInput}.
8
+ * Furthermore, if your step is the new *last* step, please update {@link LAST_STEP}.
9
+ *
10
+ * Please note that the combination of `satisfies` and `as` seems to be required.
11
+ * With `satisfies` we make sure that the respective element has all the keys it requires, and the `as` force the type to be exactly the given one
12
+ *
13
+ * @module
14
+ */
15
+ import { MergeableRecord } from '../util/objects';
16
+ import { normalize, retrieveXmlFromRCode } from '../r-bridge';
17
+ import { produceDataFlowGraph } from '../dataflow';
18
+ import { reconstructToCode, staticSlicing } from '../slicing';
19
+ import { internalPrinter, IStepPrinter, StepOutputFormat } from './print/print';
20
+ import { normalizedAstToJson, normalizedAstToQuads, printNormalizedAstToMermaid, printNormalizedAstToMermaidUrl } from './print/normalize-printer';
21
+ import { dataflowGraphToJson, dataflowGraphToMermaid, dataflowGraphToMermaidUrl, dataflowGraphToQuads } from './print/dataflow-printer';
22
+ import { parseToQuads } from './print/parse-printer';
23
+ /**
24
+ * This represents close a function that we know completely nothing about.
25
+ * Nevertheless, this is the basis of what a step processor should look like.
26
+ */
27
+ export type StepFunction = (...args: never[]) => unknown;
28
+ /**
29
+ * This represents the required execution frequency of a step.
30
+ */
31
+ export type StepRequired = 'once-per-file' | 'once-per-slice';
32
+ /**
33
+ * Defines what is to be known of a single step in the slicing process.
34
+ */
35
+ export interface IStep<Fn extends StepFunction> extends MergeableRecord {
36
+ /** Human-readable description of this step */
37
+ description: string;
38
+ /** The main processor that essentially performs the logic of this step */
39
+ processor: (...input: Parameters<Fn>) => ReturnType<Fn>;
40
+ required: StepRequired;
41
+ printer: {
42
+ [K in StepOutputFormat]?: IStepPrinter<Fn, K, never[]>;
43
+ } & {
44
+ [StepOutputFormat.Internal]: IStepPrinter<Fn, StepOutputFormat.Internal, []>;
45
+ };
46
+ }
47
+ export declare const STEPS_PER_FILE: {
48
+ readonly parse: {
49
+ description: string;
50
+ processor: typeof retrieveXmlFromRCode;
51
+ required: "once-per-file";
52
+ printer: {
53
+ 0: typeof internalPrinter;
54
+ 2: (text: string) => string;
55
+ 5: typeof parseToQuads;
56
+ };
57
+ };
58
+ readonly normalize: {
59
+ description: string;
60
+ processor: typeof normalize;
61
+ required: "once-per-file";
62
+ printer: {
63
+ 0: typeof internalPrinter;
64
+ 2: typeof normalizedAstToJson;
65
+ 5: typeof normalizedAstToQuads;
66
+ 3: typeof printNormalizedAstToMermaid;
67
+ 4: typeof printNormalizedAstToMermaidUrl;
68
+ };
69
+ };
70
+ readonly dataflow: {
71
+ description: string;
72
+ processor: typeof produceDataFlowGraph;
73
+ required: "once-per-file";
74
+ printer: {
75
+ 0: typeof internalPrinter;
76
+ 2: typeof dataflowGraphToJson;
77
+ 5: typeof dataflowGraphToQuads;
78
+ 3: typeof dataflowGraphToMermaid;
79
+ 4: typeof dataflowGraphToMermaidUrl;
80
+ };
81
+ };
82
+ };
83
+ export declare const STEPS_PER_SLICE: {
84
+ readonly slice: {
85
+ description: string;
86
+ processor: typeof staticSlicing;
87
+ required: "once-per-slice";
88
+ printer: {
89
+ 0: typeof internalPrinter;
90
+ };
91
+ };
92
+ readonly reconstruct: {
93
+ description: string;
94
+ processor: typeof reconstructToCode;
95
+ required: "once-per-slice";
96
+ printer: {
97
+ 0: typeof internalPrinter;
98
+ };
99
+ };
100
+ };
101
+ export declare const STEPS: {
102
+ readonly slice: {
103
+ description: string;
104
+ processor: typeof staticSlicing;
105
+ required: "once-per-slice";
106
+ printer: {
107
+ 0: typeof internalPrinter;
108
+ };
109
+ };
110
+ readonly reconstruct: {
111
+ description: string;
112
+ processor: typeof reconstructToCode;
113
+ required: "once-per-slice";
114
+ printer: {
115
+ 0: typeof internalPrinter;
116
+ };
117
+ };
118
+ readonly parse: {
119
+ description: string;
120
+ processor: typeof retrieveXmlFromRCode;
121
+ required: "once-per-file";
122
+ printer: {
123
+ 0: typeof internalPrinter;
124
+ 2: (text: string) => string;
125
+ 5: typeof parseToQuads;
126
+ };
127
+ };
128
+ readonly normalize: {
129
+ description: string;
130
+ processor: typeof normalize;
131
+ required: "once-per-file";
132
+ printer: {
133
+ 0: typeof internalPrinter;
134
+ 2: typeof normalizedAstToJson;
135
+ 5: typeof normalizedAstToQuads;
136
+ 3: typeof printNormalizedAstToMermaid;
137
+ 4: typeof printNormalizedAstToMermaidUrl;
138
+ };
139
+ };
140
+ readonly dataflow: {
141
+ description: string;
142
+ processor: typeof produceDataFlowGraph;
143
+ required: "once-per-file";
144
+ printer: {
145
+ 0: typeof internalPrinter;
146
+ 2: typeof dataflowGraphToJson;
147
+ 5: typeof dataflowGraphToQuads;
148
+ 3: typeof dataflowGraphToMermaid;
149
+ 4: typeof dataflowGraphToMermaidUrl;
150
+ };
151
+ };
152
+ };
153
+ export declare const LAST_PER_FILE_STEP: "dataflow";
154
+ export declare const LAST_STEP: "reconstruct";
155
+ export type StepName = keyof typeof STEPS;
156
+ export type Step<Name extends StepName> = typeof STEPS[Name];
157
+ export type StepProcessor<Name extends StepName> = Step<Name>['processor'];
158
+ export type StepResult<Name extends StepName> = Awaited<ReturnType<StepProcessor<Name>>>;
159
+ export declare function executeSingleSubStep<Name extends StepName, Processor extends StepProcessor<Name>>(subStep: Name, ...input: Parameters<Processor>): ReturnType<Processor>;
160
+ type Tail<T extends unknown[]> = T extends [infer _, ...infer Rest] ? Rest : never;
161
+ /**
162
+ * For a `step` of the given name, which returned the given `data`. Convert that data into the given `format`.
163
+ * Depending on your step and the format this may require `additional` inputs.
164
+ */
165
+ export declare function printStepResult<Name extends StepName, Processor extends StepProcessor<Name>, Format extends Exclude<keyof (typeof STEPS)[Name]['printer'], StepOutputFormat.Internal> & number, Printer extends (typeof STEPS)[Name]['printer'][Format], AdditionalInput extends Tail<Parameters<Printer>>>(step: Name, data: Awaited<ReturnType<Processor>>, format: Format, ...additional: AdditionalInput): Promise<string>;
166
+ export {};
package/core/steps.js ADDED
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * This file defines *all* steps of the slicing process and the data they require.
4
+ *
5
+ * Note, that the order of elements here also describes the *desired* order of their desired execution for readability.
6
+ * However, it is the {@link SteppingSlicer} which controls the order of execution and the steps required to achieve a given result.
7
+ *
8
+ * If you add a new step, you have to (at least) update the {@link SteppingSlicer} as well as the corresponding type predicate {@link SteppingSlicerInput}.
9
+ * Furthermore, if your step is the new *last* step, please update {@link LAST_STEP}.
10
+ *
11
+ * Please note that the combination of `satisfies` and `as` seems to be required.
12
+ * With `satisfies` we make sure that the respective element has all the keys it requires, and the `as` force the type to be exactly the given one
13
+ *
14
+ * @module
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.printStepResult = exports.executeSingleSubStep = exports.LAST_STEP = exports.LAST_PER_FILE_STEP = exports.STEPS = exports.STEPS_PER_SLICE = exports.STEPS_PER_FILE = void 0;
18
+ const r_bridge_1 = require("../r-bridge");
19
+ const dataflow_1 = require("../dataflow");
20
+ const slicing_1 = require("../slicing");
21
+ const print_1 = require("./print/print");
22
+ const normalize_printer_1 = require("./print/normalize-printer");
23
+ const assert_1 = require("../util/assert");
24
+ const dataflow_printer_1 = require("./print/dataflow-printer");
25
+ const parse_printer_1 = require("./print/parse-printer");
26
+ exports.STEPS_PER_FILE = {
27
+ 'parse': {
28
+ description: 'Parse the given R code into an AST',
29
+ processor: r_bridge_1.retrieveXmlFromRCode,
30
+ required: 'once-per-file',
31
+ printer: {
32
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
33
+ [2 /* StepOutputFormat.Json */]: text => text,
34
+ [5 /* StepOutputFormat.RdfQuads */]: parse_printer_1.parseToQuads
35
+ }
36
+ },
37
+ 'normalize': {
38
+ description: 'Normalize the AST to flowR\'s AST (first step of the normalization)',
39
+ processor: r_bridge_1.normalize,
40
+ required: 'once-per-file',
41
+ printer: {
42
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
43
+ [2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
44
+ [5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
45
+ [3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
46
+ [4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
47
+ }
48
+ },
49
+ 'dataflow': {
50
+ description: 'Construct the dataflow graph',
51
+ processor: dataflow_1.produceDataFlowGraph,
52
+ required: 'once-per-file',
53
+ printer: {
54
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
55
+ [2 /* StepOutputFormat.Json */]: dataflow_printer_1.dataflowGraphToJson,
56
+ [5 /* StepOutputFormat.RdfQuads */]: dataflow_printer_1.dataflowGraphToQuads,
57
+ [3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
58
+ [4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
59
+ }
60
+ }
61
+ };
62
+ exports.STEPS_PER_SLICE = {
63
+ 'slice': {
64
+ description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
65
+ processor: slicing_1.staticSlicing,
66
+ required: 'once-per-slice',
67
+ printer: {
68
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
69
+ }
70
+ },
71
+ 'reconstruct': {
72
+ description: 'Reconstruct R code from the static slice',
73
+ processor: slicing_1.reconstructToCode,
74
+ required: 'once-per-slice',
75
+ printer: {
76
+ [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
77
+ }
78
+ }
79
+ };
80
+ exports.STEPS = { ...exports.STEPS_PER_FILE, ...exports.STEPS_PER_SLICE };
81
+ exports.LAST_PER_FILE_STEP = 'dataflow';
82
+ exports.LAST_STEP = 'reconstruct';
83
+ function executeSingleSubStep(subStep, ...input) {
84
+ // @ts-expect-error - this is safe, as we know that the function arguments are correct by 'satisfies', this saves an explicit cast with 'as'
85
+ return exports.STEPS[subStep].processor(...input);
86
+ }
87
+ exports.executeSingleSubStep = executeSingleSubStep;
88
+ /**
89
+ * For a `step` of the given name, which returned the given `data`. Convert that data into the given `format`.
90
+ * Depending on your step and the format this may require `additional` inputs.
91
+ */
92
+ function printStepResult(step, data, format, ...additional) {
93
+ const base = exports.STEPS[step].printer;
94
+ const printer = base[format];
95
+ (0, assert_1.guard)(printer !== undefined, `printer for ${step} does not support ${String(format)}`);
96
+ return printer(data, ...additional);
97
+ }
98
+ exports.printStepResult = printStepResult;
99
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendEnvironments = void 0;
4
+ const assert_1 = require("../../../util/assert");
5
+ const environment_1 = require("./environment");
6
+ function uniqueMergeValues(old, value) {
7
+ const result = old;
8
+ for (const v of value) {
9
+ const find = result.findIndex(o => o.nodeId === v.nodeId && o.definedAt === v.definedAt);
10
+ if (find < 0) {
11
+ result.push(v);
12
+ }
13
+ }
14
+ return result;
15
+ }
16
+ function appendIEnvironmentWith(base, next) {
17
+ (0, assert_1.guard)(base !== undefined && next !== undefined, 'can not append environments with undefined');
18
+ (0, assert_1.guard)(base.name === next.name, 'cannot overwrite environments with different names');
19
+ const map = new Map(base.memory);
20
+ for (const [key, value] of next.memory) {
21
+ const old = map.get(key);
22
+ if (old) {
23
+ map.set(key, uniqueMergeValues(old, value));
24
+ }
25
+ else {
26
+ map.set(key, value);
27
+ }
28
+ }
29
+ const parent = base.parent === undefined ? undefined : appendIEnvironmentWith(base.parent, next.parent);
30
+ const out = new environment_1.Environment(base.name, parent);
31
+ out.memory = map;
32
+ return out;
33
+ }
34
+ function appendEnvironments(base, next) {
35
+ if (base === undefined) {
36
+ return next;
37
+ }
38
+ else if (next === undefined) {
39
+ return base;
40
+ }
41
+ (0, assert_1.guard)(base.level === next.level, 'environments must have the same level to be handled, it is up to the caller to ensure that');
42
+ return {
43
+ current: appendIEnvironmentWith(base.current, next.current),
44
+ level: base.level,
45
+ };
46
+ }
47
+ exports.appendEnvironments = appendEnvironments;
48
+ //# sourceMappingURL=append.js.map