@eagleoutice/flowr 1.5.1 → 2.0.0

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 (570) hide show
  1. package/abstract-interpretation/handler/binop/binop.d.ts +3 -4
  2. package/abstract-interpretation/handler/binop/binop.js +4 -2
  3. package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
  4. package/abstract-interpretation/handler/binop/operators.js +14 -28
  5. package/abstract-interpretation/processor.d.ts +3 -2
  6. package/abstract-interpretation/processor.js +2 -2
  7. package/benchmark/slicer.d.ts +101 -0
  8. package/benchmark/slicer.js +214 -0
  9. package/benchmark/stats/print.d.ts +7 -0
  10. package/benchmark/stats/print.js +151 -0
  11. package/benchmark/stats/stats.d.ts +42 -0
  12. package/benchmark/stats/stats.js +6 -0
  13. package/benchmark/stopwatch.d.ts +35 -0
  14. package/benchmark/stopwatch.js +79 -0
  15. package/benchmark/summarizer/data.d.ts +54 -0
  16. package/benchmark/summarizer/first-phase/input.d.ts +3 -0
  17. package/benchmark/summarizer/first-phase/input.js +76 -0
  18. package/benchmark/summarizer/first-phase/process.d.ts +11 -0
  19. package/benchmark/summarizer/first-phase/process.js +205 -0
  20. package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
  21. package/benchmark/summarizer/second-phase/graph.js +54 -0
  22. package/benchmark/summarizer/second-phase/process.d.ts +6 -0
  23. package/benchmark/summarizer/second-phase/process.js +127 -0
  24. package/benchmark/summarizer/summarizer.d.ts +31 -0
  25. package/benchmark/summarizer/summarizer.js +58 -0
  26. package/cli/benchmark-app.d.ts +10 -0
  27. package/cli/benchmark-app.js +67 -0
  28. package/cli/benchmark-helper-app.d.ts +9 -0
  29. package/cli/benchmark-helper-app.js +69 -0
  30. package/cli/common/features.d.ts +3 -0
  31. package/cli/common/features.js +30 -0
  32. package/cli/common/options.d.ts +20 -0
  33. package/cli/common/options.js +85 -0
  34. package/cli/common/script.d.ts +21 -0
  35. package/cli/common/script.js +61 -0
  36. package/cli/common/scripts-info.d.ts +25 -0
  37. package/cli/common/scripts-info.js +83 -0
  38. package/cli/export-quads-app.d.ts +7 -0
  39. package/cli/export-quads-app.js +43 -0
  40. package/cli/flowr.d.ts +29 -0
  41. package/cli/flowr.js +141 -0
  42. package/cli/repl/commands/cfg.d.ts +3 -0
  43. package/cli/repl/commands/cfg.js +37 -0
  44. package/cli/repl/commands/commands.d.ts +13 -0
  45. package/cli/repl/commands/commands.js +142 -0
  46. package/cli/repl/commands/dataflow.d.ts +3 -0
  47. package/cli/repl/commands/dataflow.js +34 -0
  48. package/cli/repl/commands/execute.d.ts +4 -0
  49. package/cli/repl/commands/execute.js +27 -0
  50. package/cli/repl/commands/main.d.ts +39 -0
  51. package/cli/repl/commands/main.js +14 -0
  52. package/cli/repl/commands/normalize.d.ts +3 -0
  53. package/cli/repl/commands/normalize.js +34 -0
  54. package/cli/repl/commands/parse.d.ts +2 -0
  55. package/cli/repl/commands/parse.js +110 -0
  56. package/cli/repl/commands/quit.d.ts +2 -0
  57. package/cli/repl/commands/quit.js +15 -0
  58. package/cli/repl/commands/version.d.ts +16 -0
  59. package/cli/repl/commands/version.js +28 -0
  60. package/cli/repl/core.d.ts +36 -0
  61. package/cli/repl/core.js +174 -0
  62. package/cli/repl/execute.d.ts +28 -0
  63. package/cli/repl/execute.js +79 -0
  64. package/cli/repl/print-version.d.ts +2 -0
  65. package/cli/repl/print-version.js +10 -0
  66. package/cli/repl/prompt.d.ts +2 -0
  67. package/cli/repl/prompt.js +9 -0
  68. package/cli/repl/server/connection.d.ts +21 -0
  69. package/cli/repl/server/connection.js +218 -0
  70. package/cli/repl/server/messages/analysis.d.ts +72 -0
  71. package/cli/repl/server/messages/analysis.js +21 -0
  72. package/cli/repl/server/messages/error.d.ts +11 -0
  73. package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
  74. package/cli/repl/server/messages/hello.d.ts +20 -0
  75. package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
  76. package/cli/repl/server/messages/messages.d.ts +35 -0
  77. package/cli/repl/server/messages/messages.js +40 -0
  78. package/cli/repl/server/messages/repl.d.ts +33 -0
  79. package/cli/repl/server/messages/repl.js +37 -0
  80. package/cli/repl/server/messages/slice.d.ts +26 -0
  81. package/cli/repl/server/messages/slice.js +37 -0
  82. package/cli/repl/server/net.d.ts +49 -0
  83. package/cli/repl/server/net.js +63 -0
  84. package/cli/repl/server/send.d.ts +4 -0
  85. package/cli/repl/server/send.js +18 -0
  86. package/cli/repl/server/server.d.ts +20 -0
  87. package/cli/repl/server/server.js +66 -0
  88. package/cli/repl/server/validate.d.ts +15 -0
  89. package/cli/repl/server/validate.js +34 -0
  90. package/cli/slicer-app.d.ts +11 -0
  91. package/cli/slicer-app.js +83 -0
  92. package/cli/statistics-app.d.ts +11 -0
  93. package/cli/statistics-app.js +99 -0
  94. package/cli/statistics-helper-app.d.ts +11 -0
  95. package/cli/statistics-helper-app.js +87 -0
  96. package/cli/summarizer-app.d.ts +18 -0
  97. package/cli/summarizer-app.js +66 -0
  98. package/core/pipeline-executor.d.ts +154 -0
  99. package/core/pipeline-executor.js +221 -0
  100. package/core/print/dataflow-printer.d.ts +3 -4
  101. package/core/print/dataflow-printer.js +5 -5
  102. package/core/print/normalize-printer.d.ts +1 -1
  103. package/core/print/normalize-printer.js +3 -3
  104. package/core/print/parse-printer.js +3 -3
  105. package/core/print/print.d.ts +13 -4
  106. package/core/print/print.js +13 -2
  107. package/core/print/slice-diff-ansi.d.ts +3 -2
  108. package/core/print/slice-diff-ansi.js +4 -4
  109. package/core/steps/all/core/00-parse.d.ts +28 -0
  110. package/core/steps/all/core/00-parse.js +24 -0
  111. package/core/steps/all/core/10-normalize.d.ts +29 -0
  112. package/core/steps/all/core/10-normalize.js +26 -0
  113. package/core/steps/all/core/20-dataflow.d.ts +27 -0
  114. package/core/steps/all/core/20-dataflow.js +29 -0
  115. package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
  116. package/core/steps/all/static-slicing/00-slice.js +21 -0
  117. package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
  118. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  119. package/core/steps/pipeline/create-pipeline.d.ts +6 -0
  120. package/core/steps/pipeline/create-pipeline.js +130 -0
  121. package/core/steps/pipeline/default-pipelines.d.ts +251 -0
  122. package/core/steps/pipeline/default-pipelines.js +18 -0
  123. package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
  124. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  125. package/core/steps/pipeline/pipeline.d.ts +60 -0
  126. package/core/steps/pipeline/pipeline.js +28 -0
  127. package/core/steps/pipeline-step.d.ts +85 -0
  128. package/core/steps/pipeline-step.js +8 -0
  129. package/dataflow/environments/append.d.ts +4 -4
  130. package/dataflow/environments/append.js +4 -4
  131. package/dataflow/environments/built-in.d.ts +25 -0
  132. package/dataflow/environments/built-in.js +123 -0
  133. package/dataflow/environments/clone.d.ts +2 -0
  134. package/dataflow/environments/clone.js +23 -0
  135. package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
  136. package/dataflow/environments/define.js +51 -0
  137. package/dataflow/environments/diff.d.ts +6 -0
  138. package/dataflow/environments/diff.js +85 -0
  139. package/dataflow/environments/environment.d.ts +10 -43
  140. package/dataflow/environments/environment.js +32 -138
  141. package/dataflow/environments/identifier.d.ts +31 -0
  142. package/dataflow/environments/identifier.js +3 -0
  143. package/dataflow/environments/overwrite.d.ts +4 -4
  144. package/dataflow/environments/overwrite.js +9 -22
  145. package/dataflow/environments/resolve-by-name.d.ts +7 -6
  146. package/dataflow/environments/resolve-by-name.js +35 -19
  147. package/dataflow/environments/scoping.js +1 -4
  148. package/dataflow/extractor.d.ts +6 -6
  149. package/dataflow/extractor.js +47 -57
  150. package/dataflow/graph/diff.d.ts +24 -7
  151. package/dataflow/graph/diff.js +114 -74
  152. package/dataflow/graph/edge.d.ts +66 -20
  153. package/dataflow/graph/edge.js +73 -27
  154. package/dataflow/graph/graph.d.ts +53 -29
  155. package/dataflow/graph/graph.js +84 -89
  156. package/dataflow/graph/quads.js +2 -2
  157. package/dataflow/graph/vertex.d.ts +37 -34
  158. package/dataflow/info.d.ts +49 -0
  159. package/dataflow/info.js +29 -0
  160. package/dataflow/internal/linker.d.ts +11 -10
  161. package/dataflow/internal/linker.js +64 -90
  162. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  163. package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
  164. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
  165. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
  166. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
  167. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
  168. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
  169. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
  170. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
  171. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
  172. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
  173. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
  174. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
  175. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
  176. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
  177. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
  178. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
  179. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
  180. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
  181. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
  182. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
  183. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
  184. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
  185. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
  186. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
  187. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
  188. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
  189. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
  190. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
  191. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
  192. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
  193. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
  194. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
  195. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
  196. package/dataflow/internal/process/functions/call/common.d.ts +35 -0
  197. package/dataflow/internal/process/functions/call/common.js +70 -0
  198. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  199. package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
  200. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
  201. package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
  202. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
  203. package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
  204. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
  205. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
  206. package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
  207. package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
  208. package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
  209. package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
  210. package/dataflow/internal/process/process-named-call.d.ts +6 -0
  211. package/dataflow/internal/process/process-named-call.js +17 -0
  212. package/dataflow/internal/process/process-symbol.d.ts +5 -0
  213. package/dataflow/internal/process/process-symbol.js +26 -0
  214. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
  215. package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
  216. package/dataflow/internal/process/process-value.d.ts +4 -0
  217. package/dataflow/internal/process/process-value.js +22 -0
  218. package/dataflow/logger.d.ts +1 -0
  219. package/dataflow/logger.js +6 -0
  220. package/dataflow/processor.d.ts +18 -13
  221. package/dataflow/processor.js +1 -1
  222. package/package.json +48 -85
  223. package/r-bridge/data/data.d.ts +603 -0
  224. package/r-bridge/data/data.js +753 -0
  225. package/r-bridge/data/get.d.ts +19 -0
  226. package/r-bridge/data/get.js +51 -0
  227. package/r-bridge/data/print.d.ts +1 -0
  228. package/r-bridge/data/print.js +58 -0
  229. package/r-bridge/data/types.d.ts +33 -0
  230. package/r-bridge/data/types.js +3 -0
  231. package/r-bridge/init.d.ts +3 -0
  232. package/r-bridge/init.js +22 -0
  233. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
  234. package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
  235. package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
  236. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
  237. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
  238. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
  239. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
  240. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
  241. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
  242. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
  243. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
  244. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
  245. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
  246. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
  247. package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
  248. package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
  249. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
  250. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
  251. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
  252. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
  253. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
  254. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
  255. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
  256. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
  257. package/r-bridge/lang-4.x/ast/model/type.js +13 -6
  258. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
  259. package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
  260. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
  261. package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
  262. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
  263. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
  264. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
  265. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
  266. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
  267. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
  268. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
  269. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
  270. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
  271. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
  272. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
  273. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
  274. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
  275. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
  276. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
  277. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
  278. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
  279. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
  280. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
  281. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
  282. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
  283. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
  284. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
  285. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
  286. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
  287. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
  288. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
  289. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
  290. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
  291. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
  292. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
  293. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
  294. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
  295. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
  296. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
  298. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
  299. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
  300. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
  301. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
  302. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
  303. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
  304. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
  305. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
  306. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
  307. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
  308. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
  309. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
  310. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
  311. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
  312. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
  313. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
  314. package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
  315. package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
  316. package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
  317. package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
  318. package/r-bridge/retriever.d.ts +5 -5
  319. package/r-bridge/retriever.js +11 -24
  320. package/r-bridge/shell-executor.d.ts +0 -1
  321. package/r-bridge/shell-executor.js +7 -12
  322. package/r-bridge/shell.d.ts +14 -12
  323. package/r-bridge/shell.js +52 -47
  324. package/reconstruct/reconstruct.d.ts +4 -2
  325. package/reconstruct/reconstruct.js +193 -185
  326. package/slicing/criterion/collect-all.d.ts +4 -3
  327. package/slicing/criterion/collect-all.js +5 -1
  328. package/slicing/criterion/filters/all-variables.js +14 -22
  329. package/slicing/criterion/parse.d.ts +4 -2
  330. package/slicing/criterion/parse.js +13 -11
  331. package/slicing/static/fingerprint.d.ts +5 -0
  332. package/slicing/static/fingerprint.js +17 -0
  333. package/slicing/static/slice-call.d.ts +10 -0
  334. package/slicing/static/slice-call.js +86 -0
  335. package/slicing/static/slicer-types.d.ts +33 -0
  336. package/slicing/static/slicer-types.js +3 -0
  337. package/slicing/static/static-slicer.d.ts +6 -24
  338. package/slicing/static/static-slicer.js +54 -155
  339. package/slicing/static/visiting-queue.d.ts +23 -0
  340. package/slicing/static/visiting-queue.js +53 -0
  341. package/statistics/features/common-syntax-probability.d.ts +29 -0
  342. package/statistics/features/common-syntax-probability.js +159 -0
  343. package/statistics/features/feature.d.ts +182 -0
  344. package/statistics/features/feature.js +39 -0
  345. package/statistics/features/post-processing.d.ts +12 -0
  346. package/statistics/features/post-processing.js +21 -0
  347. package/statistics/features/supported/assignments/assignments.d.ts +12 -0
  348. package/statistics/features/supported/assignments/assignments.js +55 -0
  349. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  350. package/statistics/features/supported/assignments/post-process.js +124 -0
  351. package/statistics/features/supported/comments/comments.d.ts +18 -0
  352. package/statistics/features/supported/comments/comments.js +133 -0
  353. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  354. package/statistics/features/supported/comments/post-process.js +49 -0
  355. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  356. package/statistics/features/supported/control-flow/control-flow.js +68 -0
  357. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  358. package/statistics/features/supported/control-flow/post-process.js +64 -0
  359. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  360. package/statistics/features/supported/data-access/data-access.js +120 -0
  361. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  362. package/statistics/features/supported/data-access/post-process.js +106 -0
  363. package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
  364. package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
  365. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  366. package/statistics/features/supported/defined-functions/post-process.js +169 -0
  367. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  368. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  369. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  370. package/statistics/features/supported/expression-list/post-process.js +43 -0
  371. package/statistics/features/supported/loops/loops.d.ts +20 -0
  372. package/statistics/features/supported/loops/loops.js +79 -0
  373. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  374. package/statistics/features/supported/loops/post-process.js +71 -0
  375. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  376. package/statistics/features/supported/used-functions/post-process.js +178 -0
  377. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  378. package/statistics/features/supported/used-functions/used-functions.js +97 -0
  379. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  380. package/statistics/features/supported/used-packages/post-process.js +120 -0
  381. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  382. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  383. package/statistics/features/supported/values/post-process.d.ts +3 -0
  384. package/statistics/features/supported/values/post-process.js +71 -0
  385. package/statistics/features/supported/values/values.d.ts +14 -0
  386. package/statistics/features/supported/values/values.js +101 -0
  387. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  388. package/statistics/features/supported/variables/post-process.js +121 -0
  389. package/statistics/features/supported/variables/variables.d.ts +15 -0
  390. package/statistics/features/supported/variables/variables.js +60 -0
  391. package/statistics/meta-statistics.d.ts +33 -0
  392. package/statistics/meta-statistics.js +17 -0
  393. package/statistics/output/file-provider.d.ts +37 -0
  394. package/statistics/output/file-provider.js +97 -0
  395. package/statistics/output/print-stats.d.ts +17 -0
  396. package/statistics/output/print-stats.js +69 -0
  397. package/statistics/output/statistics-file.d.ts +37 -0
  398. package/statistics/output/statistics-file.js +69 -0
  399. package/statistics/statistics.d.ts +28 -0
  400. package/statistics/statistics.js +108 -0
  401. package/statistics/summarizer/auto-detect.d.ts +2 -0
  402. package/statistics/summarizer/auto-detect.js +32 -0
  403. package/statistics/summarizer/first-phase/process.d.ts +6 -0
  404. package/statistics/summarizer/first-phase/process.js +81 -0
  405. package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
  406. package/statistics/summarizer/post-process/clusterer.js +43 -0
  407. package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
  408. package/statistics/summarizer/post-process/file-based-count.js +49 -0
  409. package/statistics/summarizer/post-process/histogram.d.ts +59 -0
  410. package/statistics/summarizer/post-process/histogram.js +128 -0
  411. package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
  412. package/statistics/summarizer/post-process/post-process-output.js +105 -0
  413. package/statistics/summarizer/second-phase/process.d.ts +11 -0
  414. package/statistics/summarizer/second-phase/process.js +116 -0
  415. package/statistics/summarizer/summarizer.d.ts +35 -0
  416. package/statistics/summarizer/summarizer.js +135 -0
  417. package/util/ansi.d.ts +2 -2
  418. package/util/ansi.js +2 -2
  419. package/util/arrays.d.ts +11 -1
  420. package/util/arrays.js +34 -1
  421. package/util/assert.d.ts +1 -0
  422. package/util/assert.js +5 -1
  423. package/util/cfg/cfg.d.ts +3 -2
  424. package/util/cfg/cfg.js +17 -28
  425. package/util/cfg/visitor.d.ts +1 -1
  426. package/util/defaultmap.d.ts +1 -1
  427. package/util/defaultmap.js +1 -1
  428. package/util/diff.d.ts +4 -4
  429. package/util/files.d.ts +2 -2
  430. package/util/files.js +1 -1
  431. package/util/log.d.ts +1 -0
  432. package/util/log.js +7 -1
  433. package/util/logic.d.ts +1 -0
  434. package/util/logic.js +3 -0
  435. package/util/mermaid/ast.d.ts +1 -1
  436. package/util/mermaid/ast.js +2 -2
  437. package/util/mermaid/cfg.d.ts +1 -1
  438. package/util/mermaid/dfg.d.ts +34 -8
  439. package/util/mermaid/dfg.js +99 -70
  440. package/util/mermaid/mermaid.d.ts +1 -1
  441. package/util/mermaid/mermaid.js +6 -7
  442. package/util/objects.js +4 -0
  443. package/util/quads.d.ts +3 -3
  444. package/util/quads.js +0 -1
  445. package/util/range.d.ts +27 -14
  446. package/util/range.js +31 -27
  447. package/util/version.js +1 -1
  448. package/core/index.d.ts +0 -4
  449. package/core/index.js +0 -23
  450. package/core/input.d.ts +0 -42
  451. package/core/output.d.ts +0 -15
  452. package/core/slicer.d.ts +0 -124
  453. package/core/slicer.js +0 -227
  454. package/core/steps.d.ts +0 -508
  455. package/core/steps.js +0 -100
  456. package/dataflow/environments/index.d.ts +0 -7
  457. package/dataflow/environments/index.js +0 -23
  458. package/dataflow/environments/register.js +0 -40
  459. package/dataflow/environments/scopes.d.ts +0 -6
  460. package/dataflow/environments/scopes.js +0 -6
  461. package/dataflow/graph/index.d.ts +0 -4
  462. package/dataflow/graph/index.js +0 -21
  463. package/dataflow/index.d.ts +0 -5
  464. package/dataflow/index.js +0 -24
  465. package/dataflow/internal/info.d.ts +0 -21
  466. package/dataflow/internal/info.js +0 -16
  467. package/dataflow/internal/process/access.d.ts +0 -4
  468. package/dataflow/internal/process/access.js +0 -53
  469. package/dataflow/internal/process/expression-list.d.ts +0 -8
  470. package/dataflow/internal/process/expression-list.js +0 -144
  471. package/dataflow/internal/process/functions/argument.d.ts +0 -8
  472. package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
  473. package/dataflow/internal/process/functions/exit-points.js +0 -121
  474. package/dataflow/internal/process/functions/function-call.d.ts +0 -5
  475. package/dataflow/internal/process/functions/function-call.js +0 -105
  476. package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
  477. package/dataflow/internal/process/functions/function-definition.js +0 -176
  478. package/dataflow/internal/process/functions/source.d.ts +0 -8
  479. package/dataflow/internal/process/functions/source.js +0 -81
  480. package/dataflow/internal/process/if-then-else.d.ts +0 -4
  481. package/dataflow/internal/process/if-then-else.js +0 -56
  482. package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
  483. package/dataflow/internal/process/loops/for-loop.js +0 -54
  484. package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
  485. package/dataflow/internal/process/loops/repeat-loop.js +0 -21
  486. package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
  487. package/dataflow/internal/process/loops/while-loop.js +0 -31
  488. package/dataflow/internal/process/operators/assignment.d.ts +0 -4
  489. package/dataflow/internal/process/operators/assignment.js +0 -129
  490. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
  491. package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
  492. package/dataflow/internal/process/operators/pipe.d.ts +0 -4
  493. package/dataflow/internal/process/operators/pipe.js +0 -46
  494. package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
  495. package/dataflow/internal/process/operators/unary-op.js +0 -10
  496. package/dataflow/internal/process/symbol.d.ts +0 -4
  497. package/dataflow/internal/process/symbol.js +0 -21
  498. package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
  499. package/dataflow/internal/process/uninteresting-leaf.js +0 -9
  500. package/index.d.ts +0 -4
  501. package/index.js +0 -21
  502. package/r-bridge/index.d.ts +0 -11
  503. package/r-bridge/index.js +0 -28
  504. package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
  505. package/r-bridge/lang-4.x/ast/index.js +0 -22
  506. package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
  507. package/r-bridge/lang-4.x/ast/model/index.js +0 -23
  508. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
  509. package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
  510. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
  511. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
  512. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
  513. package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
  514. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
  515. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
  516. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
  517. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
  518. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
  519. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
  520. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
  521. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
  522. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
  523. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
  524. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
  525. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
  526. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
  527. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
  528. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
  529. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
  530. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
  531. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
  532. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
  533. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
  534. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
  535. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
  536. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
  537. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
  538. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
  539. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
  540. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
  541. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
  542. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
  543. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
  545. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
  546. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
  547. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
  548. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
  549. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
  550. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
  551. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
  552. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
  553. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
  554. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
  555. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
  556. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
  557. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
  558. package/r-bridge/lang-4.x/index.d.ts +0 -2
  559. package/r-bridge/lang-4.x/index.js +0 -19
  560. package/slicing/criterion/filters/index.d.ts +0 -1
  561. package/slicing/criterion/filters/index.js +0 -18
  562. package/slicing/criterion/index.d.ts +0 -3
  563. package/slicing/criterion/index.js +0 -20
  564. package/slicing/index.d.ts +0 -3
  565. package/slicing/index.js +0 -20
  566. package/slicing/static/index.d.ts +0 -1
  567. package/slicing/static/index.js +0 -18
  568. package/util/mermaid/index.d.ts +0 -3
  569. package/util/mermaid/index.js +0 -20
  570. /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
@@ -0,0 +1,25 @@
1
+ import { internalPrinter } from '../../../print/print';
2
+ import { PipelineStepStage } from '../../pipeline-step';
3
+ import type { SliceResult } from '../../../../slicing/static/slicer-types';
4
+ import type { AutoSelectPredicate } from '../../../../reconstruct/reconstruct';
5
+ import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
6
+ export interface ReconstructRequiredInput {
7
+ autoSelectIf?: AutoSelectPredicate;
8
+ }
9
+ declare function processor(results: {
10
+ normalize?: NormalizedAst;
11
+ slice?: SliceResult;
12
+ }, input: Partial<ReconstructRequiredInput>): import("../../../../reconstruct/reconstruct").ReconstructionResult;
13
+ export declare const NAIVE_RECONSTRUCT: {
14
+ readonly name: "reconstruct";
15
+ readonly humanReadableName: "static code reconstruction";
16
+ readonly description: "Reconstruct R code from the static slice";
17
+ readonly processor: typeof processor;
18
+ readonly executed: PipelineStepStage.OncePerRequest;
19
+ readonly printer: {
20
+ readonly 0: typeof internalPrinter;
21
+ };
22
+ readonly dependencies: readonly ["slice"];
23
+ readonly requiredInput: ReconstructRequiredInput;
24
+ };
25
+ export {};
@@ -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 reconstruct_1 = require("../../../../reconstruct/reconstruct");
6
+ function processor(results, input) {
7
+ return (0, reconstruct_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,6 @@
1
+ import type { IPipelineStep } from '../pipeline-step';
2
+ import type { Pipeline } from './pipeline';
3
+ /**
4
+ * Given a set of {@link IPipelineStep|steps} with their dependencies, this function verifies all requirements of {@link createPipeline}.
5
+ */
6
+ export declare function verifyAndBuildPipeline(steps: readonly IPipelineStep[]): Pipeline;
@@ -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-pipeline.js.map
@@ -0,0 +1,251 @@
1
+ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
2
+ readonly name: "parse";
3
+ readonly humanReadableName: "parse with R shell";
4
+ readonly description: "Parse the given R code into an AST";
5
+ readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
6
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
7
+ readonly printer: {
8
+ readonly 0: typeof import("../../print/print").internalPrinter;
9
+ readonly 2: (text: string) => string;
10
+ readonly 5: typeof import("../../print/parse-printer").parseToQuads;
11
+ };
12
+ readonly dependencies: readonly [];
13
+ readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
14
+ } | {
15
+ readonly name: "normalize";
16
+ readonly humanReadableName: "normalize";
17
+ readonly description: "Normalize the AST to flowR's AST";
18
+ readonly processor: (results: {
19
+ parse?: string | undefined;
20
+ }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
21
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
22
+ readonly printer: {
23
+ readonly 0: typeof import("../../print/print").internalPrinter;
24
+ readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
25
+ readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
26
+ readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
27
+ readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
28
+ };
29
+ readonly dependencies: readonly ["parse"];
30
+ readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
31
+ } | {
32
+ readonly humanReadableName: "dataflow";
33
+ readonly processor: (results: {
34
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
35
+ }, input: {
36
+ request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
37
+ }) => import("../../../dataflow/info").DataflowInformation;
38
+ readonly requiredInput: {};
39
+ readonly name: "dataflow";
40
+ readonly description: "Construct the dataflow graph";
41
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
42
+ readonly printer: {
43
+ readonly 0: typeof import("../../print/print").internalPrinter;
44
+ readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
45
+ readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
46
+ readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
47
+ readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
48
+ };
49
+ readonly dependencies: readonly ["normalize"];
50
+ } | {
51
+ readonly name: "slice";
52
+ readonly humanReadableName: "static slice";
53
+ readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
54
+ readonly processor: (results: {
55
+ dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
56
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
57
+ }, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
58
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
59
+ readonly printer: {
60
+ readonly 0: typeof import("../../print/print").internalPrinter;
61
+ };
62
+ readonly dependencies: readonly ["dataflow"];
63
+ readonly requiredInput: import("../all/static-slicing/00-slice").SliceRequiredInput;
64
+ } | {
65
+ readonly name: "reconstruct";
66
+ readonly humanReadableName: "static code reconstruction";
67
+ readonly description: "Reconstruct R code from the static slice";
68
+ readonly processor: (results: {
69
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
70
+ slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
71
+ }, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
72
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
73
+ readonly printer: {
74
+ readonly 0: typeof import("../../print/print").internalPrinter;
75
+ };
76
+ readonly dependencies: readonly ["slice"];
77
+ readonly requiredInput: import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput;
78
+ }>;
79
+ export declare const DEFAULT_RECONSTRUCT_PIPELINE: import("./pipeline").Pipeline<{
80
+ readonly name: "parse";
81
+ readonly humanReadableName: "parse with R shell";
82
+ readonly description: "Parse the given R code into an AST";
83
+ readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
84
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
85
+ readonly printer: {
86
+ readonly 0: typeof import("../../print/print").internalPrinter;
87
+ readonly 2: (text: string) => string;
88
+ readonly 5: typeof import("../../print/parse-printer").parseToQuads;
89
+ };
90
+ readonly dependencies: readonly [];
91
+ readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
92
+ } | {
93
+ readonly name: "normalize";
94
+ readonly humanReadableName: "normalize";
95
+ readonly description: "Normalize the AST to flowR's AST";
96
+ readonly processor: (results: {
97
+ parse?: string | undefined;
98
+ }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
99
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
100
+ readonly printer: {
101
+ readonly 0: typeof import("../../print/print").internalPrinter;
102
+ readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
103
+ readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
104
+ readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
105
+ readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
106
+ };
107
+ readonly dependencies: readonly ["parse"];
108
+ readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
109
+ } | {
110
+ readonly humanReadableName: "dataflow";
111
+ readonly processor: (results: {
112
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
113
+ }, input: {
114
+ request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
115
+ }) => import("../../../dataflow/info").DataflowInformation;
116
+ readonly requiredInput: {};
117
+ readonly name: "dataflow";
118
+ readonly description: "Construct the dataflow graph";
119
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
120
+ readonly printer: {
121
+ readonly 0: typeof import("../../print/print").internalPrinter;
122
+ readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
123
+ readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
124
+ readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
125
+ readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
126
+ };
127
+ readonly dependencies: readonly ["normalize"];
128
+ } | {
129
+ readonly name: "slice";
130
+ readonly humanReadableName: "static slice";
131
+ readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
132
+ readonly processor: (results: {
133
+ dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
134
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
135
+ }, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
136
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
137
+ readonly printer: {
138
+ readonly 0: typeof import("../../print/print").internalPrinter;
139
+ };
140
+ readonly dependencies: readonly ["dataflow"];
141
+ readonly requiredInput: import("../all/static-slicing/00-slice").SliceRequiredInput;
142
+ } | {
143
+ readonly name: "reconstruct";
144
+ readonly humanReadableName: "static code reconstruction";
145
+ readonly description: "Reconstruct R code from the static slice";
146
+ readonly processor: (results: {
147
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
148
+ slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
149
+ }, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
150
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
151
+ readonly printer: {
152
+ readonly 0: typeof import("../../print/print").internalPrinter;
153
+ };
154
+ readonly dependencies: readonly ["slice"];
155
+ readonly requiredInput: import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput;
156
+ }>;
157
+ export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
158
+ readonly name: "parse";
159
+ readonly humanReadableName: "parse with R shell";
160
+ readonly description: "Parse the given R code into an AST";
161
+ readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
162
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
163
+ readonly printer: {
164
+ readonly 0: typeof import("../../print/print").internalPrinter;
165
+ readonly 2: (text: string) => string;
166
+ readonly 5: typeof import("../../print/parse-printer").parseToQuads;
167
+ };
168
+ readonly dependencies: readonly [];
169
+ readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
170
+ } | {
171
+ readonly name: "normalize";
172
+ readonly humanReadableName: "normalize";
173
+ readonly description: "Normalize the AST to flowR's AST";
174
+ readonly processor: (results: {
175
+ parse?: string | undefined;
176
+ }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
177
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
178
+ readonly printer: {
179
+ readonly 0: typeof import("../../print/print").internalPrinter;
180
+ readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
181
+ readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
182
+ readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
183
+ readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
184
+ };
185
+ readonly dependencies: readonly ["parse"];
186
+ readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
187
+ } | {
188
+ readonly humanReadableName: "dataflow";
189
+ readonly processor: (results: {
190
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
191
+ }, input: {
192
+ request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
193
+ }) => import("../../../dataflow/info").DataflowInformation;
194
+ readonly requiredInput: {};
195
+ readonly name: "dataflow";
196
+ readonly description: "Construct the dataflow graph";
197
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
198
+ readonly printer: {
199
+ readonly 0: typeof import("../../print/print").internalPrinter;
200
+ readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
201
+ readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
202
+ readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
203
+ readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
204
+ };
205
+ readonly dependencies: readonly ["normalize"];
206
+ }>;
207
+ export declare const DEFAULT_NORMALIZE_PIPELINE: import("./pipeline").Pipeline<{
208
+ readonly name: "parse";
209
+ readonly humanReadableName: "parse with R shell";
210
+ readonly description: "Parse the given R code into an AST";
211
+ readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
212
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
213
+ readonly printer: {
214
+ readonly 0: typeof import("../../print/print").internalPrinter;
215
+ readonly 2: (text: string) => string;
216
+ readonly 5: typeof import("../../print/parse-printer").parseToQuads;
217
+ };
218
+ readonly dependencies: readonly [];
219
+ readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
220
+ } | {
221
+ readonly name: "normalize";
222
+ readonly humanReadableName: "normalize";
223
+ readonly description: "Normalize the AST to flowR's AST";
224
+ readonly processor: (results: {
225
+ parse?: string | undefined;
226
+ }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
227
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
228
+ readonly printer: {
229
+ readonly 0: typeof import("../../print/print").internalPrinter;
230
+ readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
231
+ readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
232
+ readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
233
+ readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
234
+ };
235
+ readonly dependencies: readonly ["parse"];
236
+ readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
237
+ }>;
238
+ export declare const DEFAULT_PARSE_PIPELINE: import("./pipeline").Pipeline<{
239
+ readonly name: "parse";
240
+ readonly humanReadableName: "parse with R shell";
241
+ readonly description: "Parse the given R code into an AST";
242
+ readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
243
+ readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
244
+ readonly printer: {
245
+ readonly 0: typeof import("../../print/print").internalPrinter;
246
+ readonly 2: (text: string) => string;
247
+ readonly 5: typeof import("../../print/parse-printer").parseToQuads;
248
+ };
249
+ readonly dependencies: readonly [];
250
+ readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
251
+ }>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_PARSE_PIPELINE = exports.DEFAULT_NORMALIZE_PIPELINE = exports.DEFAULT_DATAFLOW_PIPELINE = exports.DEFAULT_RECONSTRUCT_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.STATIC_DATAFLOW, _00_slice_1.STATIC_SLICE, _10_reconstruct_1.NAIVE_RECONSTRUCT);
14
+ exports.DEFAULT_RECONSTRUCT_PIPELINE = exports.DEFAULT_SLICING_PIPELINE;
15
+ exports.DEFAULT_DATAFLOW_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.STATIC_DATAFLOW);
16
+ exports.DEFAULT_NORMALIZE_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE);
17
+ exports.DEFAULT_PARSE_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP);
18
+ //# sourceMappingURL=default-pipelines.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Thrown if for whatever reason, the pipeline is invalid.
3
+ */
4
+ export declare class InvalidPipelineError extends Error {
5
+ constructor(message: string);
6
+ }
@@ -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,60 @@
1
+ import type { IPipelineStep, PipelineStepName, PipelineStepStage } from '../pipeline-step';
2
+ import type { DeepReadonly, UnionToIntersection } from 'ts-essentials';
3
+ /**
4
+ * A pipeline is a collection of {@link Pipeline#steps|steps} that are executed in a certain {@link Pipeline#order|order}.
5
+ * It is to be created {@link createPipeline}.
6
+ *
7
+ * If you want to get the type of all steps in the pipeline (given they are created canonically using const step names), refer to {@link PipelineStepNames}.
8
+ */
9
+ export interface Pipeline<T extends IPipelineStep = IPipelineStep> {
10
+ readonly steps: ReadonlyMap<PipelineStepName, DeepReadonly<IPipelineStep>>;
11
+ readonly order: readonly T['name'][];
12
+ /**
13
+ * In the order, this is the index of the first step that
14
+ * is executed {@link PipelineStepStage#OncePerRequest|once per request}.
15
+ * If it is "out of bounds" (i.e., the number of steps), all steps are executed {@link PipelineStepStage#OncePerFile|once per file}.
16
+ */
17
+ readonly firstStepPerRequest: number;
18
+ }
19
+ /**
20
+ * Returns the types of all step names in the given pipeline.
21
+ *
22
+ * @see Pipeline for details
23
+ */
24
+ export type PipelineStepNames<P extends Pipeline> = PipelineStep<P>['name'];
25
+ export type PipelineStep<P extends Pipeline> = P extends Pipeline<infer U> ? U : never;
26
+ export type PipelineStepWithName<P extends Pipeline, Name extends PipelineStepName> = P extends Pipeline<infer U> ? U extends IPipelineStep<Name> ? U : never : never;
27
+ export type PipelineStepProcessorWithName<P extends Pipeline, Name extends PipelineStepName> = PipelineStepWithName<P, Name>['processor'];
28
+ export type PipelineStepPrintersWithName<P extends Pipeline, Name extends PipelineStepName> = PipelineStepWithName<P, Name>['printer'];
29
+ export type PipelineStepOutputWithName<P extends Pipeline, Name extends PipelineStepName> = Awaited<ReturnType<PipelineStepProcessorWithName<P, Name>>>;
30
+ export type PipelineInput<P extends Pipeline> = UnionToIntersection<PipelineStep<P>['requiredInput']>;
31
+ /**
32
+ * Only gets the union of 'requiredInput' of those PipelineSteps which have a 'execute' field of type 'OncePerRequest'.
33
+ * In other words, information that you may want to change for another request (e.g., another slice) with the same file.
34
+ */
35
+ export type PipelinePerRequestInput<P extends Pipeline> = {
36
+ [K in PipelineStepNames<P>]: PipelineStepWithName<P, K>['executed'] extends PipelineStepStage.OncePerFile ? never : PipelineStepWithName<P, K>['requiredInput'];
37
+ }[PipelineStepNames<P>];
38
+ export type PipelineOutput<P extends Pipeline> = {
39
+ [K in PipelineStepNames<P>]: PipelineStepOutputWithName<P, K>;
40
+ };
41
+ /**
42
+ * Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
43
+ * In order to be valid, the collection of {@link IPipelineStep|steps} must satisfy the following set of constraints
44
+ * (which should be logical, when you consider what a pipeline should accomplish):
45
+ *
46
+ * 0) the collection of {@link IPipelineStep|steps} is not empty
47
+ * 1) all {@link IPipelineStepOrder#name|names} of {@link IPipelineStep|steps} are unique for the given pipeline
48
+ * 2) all {@link IPipelineStepOrder#dependencies|dependencies} of all {@link IPipelineStep|steps} are exist
49
+ * 3) there are no cycles in the dependency graph
50
+ * 4) the target of a {@link IPipelineStepOrder#decorates|step's decoration} exists
51
+ * 5) if a {@link IPipelineStepOrder#decorates|decoration} applies, all of its {@link IPipelineStepOrder#dependencies|dependencies} are already in the pipeline
52
+ * 6) in the resulting {@link Pipeline|pipeline}, there is a strict cut between {@link IPipelineStep|steps} that are executed
53
+ * {@link PipelineStepStage#OncePerFile|once per file} and {@link PipelineStepStage#OncePerRequest|once per request}.
54
+ *
55
+ * @returns The function will try to order your collection steps so that all the constraints hold.
56
+ * If it succeeds it will return the resulting {@link Pipeline|pipeline}, otherwise it will throw an {@link InvalidPipelineError}.
57
+ *
58
+ * @throws InvalidPipelineError If any of the constraints listed above are not satisfied.
59
+ */
60
+ export declare function createPipeline<T extends readonly IPipelineStep[]>(...steps: T): Pipeline<T[number]>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPipeline = void 0;
4
+ const create_pipeline_1 = require("./create-pipeline");
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_pipeline_1.verifyAndBuildPipeline)(steps);
26
+ }
27
+ exports.createPipeline = createPipeline;
28
+ //# sourceMappingURL=pipeline.js.map