@eagleoutice/flowr 2.6.0 → 2.6.2

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 (703) hide show
  1. package/README.md +142 -45
  2. package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
  4. package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
  5. package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
  6. package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
  7. package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
  8. package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
  9. package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
  10. package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
  11. package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
  12. package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
  13. package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
  14. package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
  15. package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
  16. package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
  17. package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
  18. package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
  19. package/abstract-interpretation/data-frame/semantics.js +171 -162
  20. package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
  21. package/abstract-interpretation/data-frame/shape-inference.js +7 -9
  22. package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
  23. package/abstract-interpretation/domains/abstract-domain.js +74 -1
  24. package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
  25. package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
  26. package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
  27. package/abstract-interpretation/domains/interval-domain.js +109 -50
  28. package/abstract-interpretation/domains/lattice.d.ts +19 -11
  29. package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
  30. package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
  31. package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
  32. package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
  33. package/abstract-interpretation/domains/product-domain.d.ts +18 -23
  34. package/abstract-interpretation/domains/product-domain.js +11 -19
  35. package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
  36. package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
  37. package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
  38. package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
  39. package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
  40. package/abstract-interpretation/domains/singleton-domain.js +52 -37
  41. package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
  42. package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
  43. package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
  44. package/abstract-interpretation/normalized-ast-fold.js +0 -5
  45. package/benchmark/slicer.d.ts +3 -7
  46. package/benchmark/slicer.js +14 -19
  47. package/benchmark/stats/print.d.ts +6 -0
  48. package/benchmark/stats/print.js +6 -0
  49. package/benchmark/stats/size-of.d.ts +0 -1
  50. package/benchmark/stats/size-of.js +0 -1
  51. package/benchmark/stats/stats.d.ts +2 -2
  52. package/benchmark/stopwatch.d.ts +11 -13
  53. package/benchmark/stopwatch.js +11 -13
  54. package/benchmark/summarizer/first-phase/input.d.ts +6 -0
  55. package/benchmark/summarizer/first-phase/input.js +6 -0
  56. package/benchmark/summarizer/first-phase/process.d.ts +13 -1
  57. package/benchmark/summarizer/first-phase/process.js +12 -0
  58. package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
  59. package/benchmark/summarizer/second-phase/graph.js +3 -0
  60. package/benchmark/summarizer/second-phase/process.d.ts +12 -0
  61. package/benchmark/summarizer/second-phase/process.js +12 -0
  62. package/benchmark/summarizer/summarizer.d.ts +1 -2
  63. package/cli/benchmark-app.js +0 -2
  64. package/cli/common/features.d.ts +7 -1
  65. package/cli/common/features.js +6 -0
  66. package/cli/common/script.d.ts +3 -1
  67. package/cli/common/script.js +3 -1
  68. package/cli/common/scripts-info.d.ts +3 -1
  69. package/cli/common/scripts-info.js +3 -0
  70. package/cli/flowr-main-options.d.ts +3 -0
  71. package/cli/flowr-main-options.js +3 -0
  72. package/cli/flowr.js +8 -4
  73. package/cli/repl/commands/repl-cfg.js +4 -4
  74. package/cli/repl/commands/repl-commands.d.ts +13 -0
  75. package/cli/repl/commands/repl-commands.js +15 -4
  76. package/cli/repl/commands/repl-dataflow.js +4 -4
  77. package/cli/repl/commands/repl-execute.d.ts +5 -1
  78. package/cli/repl/commands/repl-execute.js +12 -8
  79. package/cli/repl/commands/repl-main.d.ts +17 -14
  80. package/cli/repl/commands/repl-normalize.js +2 -2
  81. package/cli/repl/commands/repl-parse.js +4 -3
  82. package/cli/repl/commands/repl-query.js +18 -7
  83. package/cli/repl/commands/repl-quit.js +1 -1
  84. package/cli/repl/commands/repl-version.d.ts +1 -16
  85. package/cli/repl/commands/repl-version.js +2 -19
  86. package/cli/repl/core.d.ts +32 -14
  87. package/cli/repl/core.js +38 -35
  88. package/cli/repl/execute.d.ts +0 -2
  89. package/cli/repl/execute.js +0 -2
  90. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  91. package/cli/repl/parser/slice-query-parser.js +34 -0
  92. package/cli/repl/print-version.d.ts +6 -0
  93. package/cli/repl/print-version.js +8 -2
  94. package/cli/repl/server/compact.d.ts +8 -0
  95. package/cli/repl/server/compact.js +8 -0
  96. package/cli/repl/server/connection.d.ts +4 -3
  97. package/cli/repl/server/connection.js +9 -33
  98. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  99. package/cli/repl/server/messages/all-messages.js +0 -1
  100. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  101. package/cli/repl/server/messages/message-hello.d.ts +1 -1
  102. package/cli/repl/server/messages/message-query.d.ts +1 -1
  103. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  104. package/cli/repl/server/send.d.ts +6 -0
  105. package/cli/repl/server/send.js +6 -0
  106. package/cli/repl/server/server.d.ts +1 -1
  107. package/cli/repl/server/server.js +2 -2
  108. package/cli/repl/server/validate.d.ts +10 -1
  109. package/cli/repl/server/validate.js +9 -0
  110. package/cli/run-script.d.ts +1 -2
  111. package/cli/run-script.js +0 -1
  112. package/cli/script-core/statistics-core.d.ts +3 -0
  113. package/cli/script-core/statistics-core.js +3 -0
  114. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  115. package/cli/script-core/statistics-helper-core.js +3 -0
  116. package/cli/script-core/summarizer-core.d.ts +3 -0
  117. package/cli/script-core/summarizer-core.js +3 -0
  118. package/cli/summarizer-app.d.ts +2 -3
  119. package/cli/summarizer-app.js +2 -3
  120. package/config.d.ts +17 -3
  121. package/config.js +15 -0
  122. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  123. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  124. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  125. package/control-flow/control-flow-graph.d.ts +20 -12
  126. package/control-flow/control-flow-graph.js +16 -4
  127. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  128. package/control-flow/diff-cfg.d.ts +3 -5
  129. package/control-flow/diff-cfg.js +0 -1
  130. package/control-flow/extract-cfg.d.ts +3 -6
  131. package/control-flow/extract-cfg.js +0 -3
  132. package/control-flow/happens-before.d.ts +1 -1
  133. package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
  134. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  135. package/control-flow/simple-visitor.d.ts +1 -3
  136. package/control-flow/simple-visitor.js +0 -2
  137. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  138. package/control-flow/useless-loop.d.ts +0 -3
  139. package/control-flow/useless-loop.js +2 -5
  140. package/core/pipeline-executor.d.ts +8 -16
  141. package/core/pipeline-executor.js +9 -18
  142. package/core/print/dataflow-printer.d.ts +19 -0
  143. package/core/print/dataflow-printer.js +19 -0
  144. package/core/print/normalize-printer.d.ts +21 -1
  145. package/core/print/normalize-printer.js +20 -0
  146. package/core/print/parse-printer.d.ts +6 -1
  147. package/core/print/parse-printer.js +5 -0
  148. package/core/print/print.d.ts +0 -1
  149. package/core/print/print.js +0 -1
  150. package/core/print/slice-diff-ansi.d.ts +3 -0
  151. package/core/print/slice-diff-ansi.js +3 -0
  152. package/core/steps/all/core/00-parse.d.ts +1 -1
  153. package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
  154. package/core/steps/all/core/10-normalize.d.ts +3 -0
  155. package/core/steps/all/core/10-normalize.js +3 -0
  156. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
  157. package/core/steps/all/core/20-dataflow.d.ts +3 -1
  158. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  159. package/core/steps/pipeline/default-pipelines.d.ts +29 -13
  160. package/core/steps/pipeline/default-pipelines.js +0 -4
  161. package/core/steps/pipeline/pipeline.d.ts +1 -8
  162. package/core/steps/pipeline/pipeline.js +1 -3
  163. package/core/steps/pipeline-step.d.ts +0 -1
  164. package/core/steps/pipeline-step.js +0 -1
  165. package/dataflow/cluster.d.ts +3 -0
  166. package/dataflow/cluster.js +3 -0
  167. package/dataflow/environments/append.d.ts +1 -1
  168. package/dataflow/environments/built-in-config.d.ts +1 -5
  169. package/dataflow/environments/built-in-config.js +0 -1
  170. package/dataflow/environments/built-in.d.ts +10 -5
  171. package/dataflow/environments/built-in.js +6 -1
  172. package/dataflow/environments/clone.d.ts +1 -1
  173. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  174. package/dataflow/environments/default-builtin-config.js +12 -1
  175. package/dataflow/environments/diff.d.ts +11 -2
  176. package/dataflow/environments/diff.js +9 -0
  177. package/dataflow/environments/environment.d.ts +3 -3
  178. package/dataflow/environments/environment.js +8 -6
  179. package/dataflow/environments/identifier.d.ts +0 -4
  180. package/dataflow/environments/identifier.js +0 -1
  181. package/dataflow/environments/overwrite.d.ts +4 -1
  182. package/dataflow/environments/overwrite.js +3 -0
  183. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  184. package/dataflow/environments/resolve-by-name.js +3 -2
  185. package/dataflow/environments/scoping.d.ts +4 -1
  186. package/dataflow/environments/scoping.js +3 -0
  187. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  188. package/dataflow/eval/resolve/alias-tracking.js +13 -14
  189. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  190. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  191. package/dataflow/eval/resolve/resolve.js +3 -5
  192. package/dataflow/eval/values/general.d.ts +1 -3
  193. package/dataflow/eval/values/general.js +0 -1
  194. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  195. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  196. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  197. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  198. package/dataflow/eval/values/r-value.d.ts +16 -1
  199. package/dataflow/eval/values/r-value.js +14 -0
  200. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  201. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  202. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  203. package/dataflow/eval/values/sets/set-constants.js +6 -0
  204. package/dataflow/eval/values/string/string-constants.d.ts +10 -1
  205. package/dataflow/eval/values/string/string-constants.js +9 -0
  206. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  207. package/dataflow/extractor.d.ts +5 -2
  208. package/dataflow/extractor.js +7 -5
  209. package/dataflow/fn/higher-order-function.d.ts +9 -0
  210. package/dataflow/fn/higher-order-function.js +75 -0
  211. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  212. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  213. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  214. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  215. package/dataflow/graph/edge.d.ts +9 -0
  216. package/dataflow/graph/edge.js +9 -0
  217. package/dataflow/graph/graph.d.ts +6 -19
  218. package/dataflow/graph/graph.js +4 -15
  219. package/dataflow/graph/invert-dfg.d.ts +3 -0
  220. package/dataflow/graph/invert-dfg.js +3 -0
  221. package/dataflow/graph/quads.d.ts +1 -1
  222. package/dataflow/graph/unknown-replacement.d.ts +6 -0
  223. package/dataflow/graph/unknown-replacement.js +6 -0
  224. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  225. package/dataflow/graph/unknown-side-effect.js +8 -0
  226. package/dataflow/graph/vertex.d.ts +9 -9
  227. package/dataflow/graph/vertex.js +9 -1
  228. package/dataflow/info.d.ts +9 -10
  229. package/dataflow/info.js +6 -1
  230. package/dataflow/internal/linker.d.ts +25 -9
  231. package/dataflow/internal/linker.js +23 -7
  232. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  233. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
  234. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  235. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  236. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
  237. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  238. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
  239. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  240. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  241. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
  242. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  243. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
  244. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  245. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
  246. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  247. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
  248. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  249. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  250. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  251. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
  252. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  253. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  254. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  255. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
  257. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  258. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  259. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
  260. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
  261. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  262. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
  263. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  264. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  265. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
  266. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
  267. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
  268. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
  269. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  270. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  271. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
  272. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  273. package/dataflow/internal/process/functions/call/common.js +6 -0
  274. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
  275. package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
  276. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  277. package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
  278. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  279. package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
  280. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  281. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  282. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  283. package/dataflow/internal/process/functions/process-argument.js +6 -0
  284. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  285. package/dataflow/internal/process/functions/process-parameter.js +3 -0
  286. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  287. package/dataflow/internal/process/process-symbol.js +3 -0
  288. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  289. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  290. package/dataflow/internal/process/process-value.d.ts +3 -0
  291. package/dataflow/internal/process/process-value.js +3 -0
  292. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  293. package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
  294. package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
  295. package/dataflow/processor.d.ts +0 -1
  296. package/dataflow/processor.js +0 -1
  297. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
  298. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  299. package/documentation/data/faq/faqs.d.ts +5 -0
  300. package/documentation/data/faq/faqs.js +78 -0
  301. package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
  302. package/documentation/data/faq/wiki-faq-store.js +75 -0
  303. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  304. package/documentation/data/server/doc-data-server-messages.js +4 -63
  305. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  306. package/documentation/doc-util/doc-auto-gen.js +6 -0
  307. package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
  308. package/documentation/doc-util/doc-benchmarks.js +12 -0
  309. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  310. package/documentation/doc-util/doc-cfg.js +9 -0
  311. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  312. package/documentation/doc-util/doc-cli-option.js +9 -0
  313. package/documentation/doc-util/doc-code.d.ts +24 -0
  314. package/documentation/doc-util/doc-code.js +24 -0
  315. package/documentation/doc-util/doc-dfg.d.ts +7 -1
  316. package/documentation/doc-util/doc-dfg.js +9 -0
  317. package/documentation/doc-util/doc-env.d.ts +3 -0
  318. package/documentation/doc-util/doc-env.js +3 -0
  319. package/documentation/doc-util/doc-escape.d.ts +0 -1
  320. package/documentation/doc-util/doc-escape.js +0 -1
  321. package/documentation/doc-util/doc-files.d.ts +11 -0
  322. package/documentation/doc-util/doc-files.js +15 -4
  323. package/documentation/doc-util/doc-general.d.ts +6 -0
  324. package/documentation/doc-util/doc-general.js +6 -0
  325. package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
  326. package/documentation/doc-util/doc-normalized-ast.js +6 -0
  327. package/documentation/doc-util/doc-query.d.ts +15 -0
  328. package/documentation/doc-util/doc-query.js +17 -2
  329. package/documentation/doc-util/doc-repl.d.ts +6 -0
  330. package/documentation/doc-util/doc-repl.js +11 -2
  331. package/documentation/doc-util/doc-search.d.ts +15 -0
  332. package/documentation/doc-util/doc-search.js +17 -2
  333. package/documentation/doc-util/doc-server-message.d.ts +13 -1
  334. package/documentation/doc-util/doc-server-message.js +13 -1
  335. package/documentation/doc-util/doc-structure.d.ts +9 -0
  336. package/documentation/doc-util/doc-structure.js +10 -1
  337. package/documentation/doc-util/doc-types.d.ts +42 -0
  338. package/documentation/doc-util/doc-types.js +42 -0
  339. package/documentation/print-analyzer-wiki.js +4 -0
  340. package/documentation/print-core-wiki.d.ts +3 -0
  341. package/documentation/print-core-wiki.js +5 -2
  342. package/documentation/print-dataflow-graph-wiki.js +7 -7
  343. package/documentation/print-faq-wiki.js +3 -75
  344. package/documentation/print-interface-wiki.js +1 -1
  345. package/documentation/print-onboarding-wiki.js +1 -1
  346. package/documentation/print-query-wiki.js +24 -34
  347. package/documentation/print-readme.js +106 -1
  348. package/engines.d.ts +1 -1
  349. package/linter/linter-executor.d.ts +6 -3
  350. package/linter/linter-executor.js +3 -0
  351. package/linter/linter-format.d.ts +8 -0
  352. package/linter/linter-format.js +8 -0
  353. package/linter/rules/absolute-path.d.ts +3 -4
  354. package/linter/rules/dataframe-access-validation.d.ts +3 -4
  355. package/linter/rules/dataframe-access-validation.js +9 -11
  356. package/linter/rules/dead-code.d.ts +1 -1
  357. package/linter/rules/deprecated-functions.d.ts +1 -1
  358. package/linter/rules/file-path-validity.d.ts +1 -2
  359. package/linter/rules/function-finder-util.d.ts +1 -2
  360. package/linter/rules/naming-convention.d.ts +13 -2
  361. package/linter/rules/naming-convention.js +13 -1
  362. package/linter/rules/network-functions.d.ts +1 -1
  363. package/linter/rules/seeded-randomness.d.ts +1 -2
  364. package/linter/rules/unused-definition.d.ts +2 -3
  365. package/linter/rules/useless-loop.d.ts +1 -2
  366. package/package.json +2 -2
  367. package/project/cache/flowr-analyzer-cache.d.ts +8 -14
  368. package/project/cache/flowr-analyzer-cache.js +21 -19
  369. package/project/cfg-kind.d.ts +17 -0
  370. package/project/cfg-kind.js +22 -0
  371. package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
  372. package/project/context/flowr-analyzer-context.d.ts +9 -6
  373. package/project/context/flowr-analyzer-context.js +11 -0
  374. package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
  375. package/project/context/flowr-analyzer-dependencies-context.js +4 -0
  376. package/project/context/flowr-analyzer-files-context.d.ts +3 -4
  377. package/project/context/flowr-analyzer-files-context.js +4 -0
  378. package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
  379. package/project/context/flowr-analyzer-loading-order-context.js +6 -0
  380. package/project/context/flowr-file.d.ts +0 -1
  381. package/project/flowr-analyzer-builder.d.ts +1 -3
  382. package/project/flowr-analyzer-builder.js +5 -6
  383. package/project/flowr-analyzer.d.ts +42 -32
  384. package/project/flowr-analyzer.js +14 -8
  385. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
  386. package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
  387. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  388. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  389. package/queries/base-query-format.d.ts +2 -2
  390. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  391. package/queries/catalog/call-context-query/call-context-query-executor.js +5 -1
  392. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  393. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
  394. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
  395. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  396. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  397. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  398. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  399. package/queries/catalog/config-query/config-query-executor.js +3 -0
  400. package/queries/catalog/config-query/config-query-format.d.ts +6 -3
  401. package/queries/catalog/config-query/config-query-format.js +13 -16
  402. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  403. package/queries/catalog/control-flow-query/control-flow-query-executor.js +5 -1
  404. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  405. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  406. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  407. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  408. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  409. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  410. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  411. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  412. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  413. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  414. package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
  415. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  416. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  417. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  418. package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
  419. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
  420. package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
  421. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  422. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  423. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  424. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  425. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +6 -0
  426. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
  427. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
  428. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
  429. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  430. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  431. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  432. package/queries/catalog/linter-query/linter-query-format.js +67 -0
  433. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  434. package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
  435. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  436. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  437. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  438. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  439. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  440. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  441. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  442. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  443. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  444. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  445. package/queries/catalog/project-query/project-query-executor.js +3 -0
  446. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  447. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  448. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  449. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  450. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  451. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  452. package/queries/catalog/search-query/search-query-executor.js +3 -0
  453. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  454. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  455. package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
  456. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  457. package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
  458. package/queries/query-print.d.ts +20 -4
  459. package/queries/query-print.js +18 -2
  460. package/queries/query.d.ts +91 -53
  461. package/queries/query.js +37 -23
  462. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  463. package/r-bridge/data/get.d.ts +6 -0
  464. package/r-bridge/data/get.js +6 -0
  465. package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
  466. package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
  467. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  468. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  469. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  470. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  471. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  472. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  473. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  474. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  475. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  476. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
  477. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
  478. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  479. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  480. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  481. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  482. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  483. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  484. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  485. package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
  486. package/r-bridge/lang-4.x/ast/model/type.js +4 -5
  487. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  488. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  489. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
  490. package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
  491. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  492. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  493. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  494. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  495. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  496. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  497. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  498. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  499. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  500. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  501. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  502. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  503. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  504. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  505. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  506. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  507. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  508. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  509. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  510. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  511. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  512. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  513. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  514. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  515. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  516. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  517. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  518. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  519. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  520. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  521. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  522. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  523. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  524. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  525. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  526. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  527. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  528. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  529. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  530. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  531. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  532. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  533. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  534. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  535. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  536. package/r-bridge/lang-4.x/convert-values.js +12 -1
  537. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  538. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
  539. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
  540. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
  541. package/r-bridge/parser.d.ts +30 -2
  542. package/r-bridge/retriever.d.ts +16 -1
  543. package/r-bridge/retriever.js +15 -0
  544. package/r-bridge/shell-executor.d.ts +3 -3
  545. package/r-bridge/shell-executor.js +6 -1
  546. package/r-bridge/shell.d.ts +24 -23
  547. package/r-bridge/shell.js +37 -31
  548. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
  549. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  550. package/reconstruct/auto-select/magic-comments.js +1 -2
  551. package/reconstruct/reconstruct.d.ts +1 -3
  552. package/reconstruct/reconstruct.js +0 -2
  553. package/search/flowr-search-builder.d.ts +12 -5
  554. package/search/flowr-search-builder.js +7 -2
  555. package/search/flowr-search-executor.d.ts +3 -3
  556. package/search/flowr-search-filters.d.ts +14 -1
  557. package/search/flowr-search-filters.js +13 -0
  558. package/search/flowr-search-printer.d.ts +6 -0
  559. package/search/flowr-search-printer.js +6 -0
  560. package/search/flowr-search-traverse.d.ts +1 -1
  561. package/search/flowr-search.d.ts +3 -3
  562. package/search/search-executor/search-enrichers.d.ts +9 -6
  563. package/search/search-executor/search-enrichers.js +5 -1
  564. package/search/search-executor/search-generators.d.ts +19 -10
  565. package/search/search-executor/search-generators.js +49 -2
  566. package/search/search-executor/search-mappers.d.ts +8 -5
  567. package/search/search-executor/search-mappers.js +3 -0
  568. package/search/search-executor/search-transformer.d.ts +19 -16
  569. package/search/search-executor/search-transformer.js +3 -0
  570. package/slicing/criterion/collect-all.d.ts +10 -10
  571. package/slicing/criterion/parse.d.ts +4 -2
  572. package/slicing/criterion/parse.js +4 -2
  573. package/slicing/static/fingerprint.d.ts +9 -1
  574. package/slicing/static/fingerprint.js +8 -0
  575. package/slicing/static/slice-call.d.ts +2 -2
  576. package/slicing/static/static-slicer.d.ts +8 -4
  577. package/slicing/static/static-slicer.js +5 -1
  578. package/slicing/static/visiting-queue.d.ts +1 -1
  579. package/statistics/features/common-syntax-probability.d.ts +10 -1
  580. package/statistics/features/common-syntax-probability.js +9 -0
  581. package/statistics/features/feature.d.ts +0 -4
  582. package/statistics/features/feature.js +0 -1
  583. package/statistics/features/post-processing.d.ts +6 -0
  584. package/statistics/features/post-processing.js +6 -0
  585. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  586. package/statistics/features/supported/assignments/post-process.js +3 -0
  587. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  588. package/statistics/features/supported/comments/post-process.js +3 -0
  589. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  590. package/statistics/features/supported/control-flow/post-process.js +3 -0
  591. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  592. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  593. package/statistics/features/supported/data-access/post-process.js +3 -0
  594. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  595. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  596. package/statistics/features/supported/expression-list/post-process.js +3 -0
  597. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  598. package/statistics/features/supported/loops/post-process.js +3 -0
  599. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  600. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  601. package/statistics/features/supported/used-packages/post-process.js +3 -0
  602. package/statistics/features/supported/values/post-process.d.ts +3 -0
  603. package/statistics/features/supported/values/post-process.js +3 -0
  604. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  605. package/statistics/features/supported/variables/post-process.js +6 -0
  606. package/statistics/meta-statistics.d.ts +8 -9
  607. package/statistics/output/file-provider.d.ts +5 -6
  608. package/statistics/output/file-provider.js +5 -6
  609. package/statistics/output/print-stats.d.ts +13 -1
  610. package/statistics/output/print-stats.js +12 -0
  611. package/statistics/output/statistics-file.d.ts +1 -2
  612. package/statistics/output/statistics-file.js +0 -1
  613. package/statistics/statistics.d.ts +3 -4
  614. package/statistics/statistics.js +1 -2
  615. package/statistics/summarizer/auto-detect.d.ts +3 -0
  616. package/statistics/summarizer/auto-detect.js +3 -0
  617. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  618. package/statistics/summarizer/post-process/clusterer.js +0 -2
  619. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  620. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  621. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  622. package/statistics/summarizer/post-process/histogram.js +0 -2
  623. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  624. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  625. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  626. package/statistics/summarizer/second-phase/process.js +3 -1
  627. package/statistics/summarizer/summarizer.d.ts +1 -2
  628. package/util/assert.d.ts +52 -2
  629. package/util/assert.js +52 -2
  630. package/util/collections/arrays.d.ts +10 -5
  631. package/util/collections/arrays.js +10 -5
  632. package/util/collections/defaultmap.d.ts +11 -11
  633. package/util/collections/defaultmap.js +11 -11
  634. package/util/containers.d.ts +2 -7
  635. package/util/containers.js +0 -5
  636. package/util/diff-graph.d.ts +0 -1
  637. package/util/diff-graph.js +0 -1
  638. package/util/diff.d.ts +3 -1
  639. package/util/diff.js +3 -1
  640. package/util/files.d.ts +11 -11
  641. package/util/files.js +10 -10
  642. package/util/formats/adapter.d.ts +9 -0
  643. package/util/formats/adapter.js +9 -0
  644. package/util/formats/adapters/rmd-adapter.d.ts +10 -1
  645. package/util/formats/adapters/rmd-adapter.js +10 -1
  646. package/util/html-hover-over.d.ts +5 -0
  647. package/util/html-hover-over.js +5 -0
  648. package/util/json.d.ts +13 -0
  649. package/util/json.js +13 -0
  650. package/util/log.d.ts +2 -2
  651. package/util/log.js +2 -2
  652. package/util/mermaid/ast.d.ts +3 -0
  653. package/util/mermaid/ast.js +3 -0
  654. package/util/mermaid/cfg.d.ts +1 -1
  655. package/util/mermaid/dfg.d.ts +12 -4
  656. package/util/mermaid/dfg.js +9 -1
  657. package/util/mermaid/mermaid.d.ts +6 -1
  658. package/util/mermaid/mermaid.js +6 -1
  659. package/util/numbers.d.ts +7 -0
  660. package/util/numbers.js +7 -0
  661. package/util/objects.d.ts +0 -2
  662. package/util/os.d.ts +3 -0
  663. package/util/os.js +3 -0
  664. package/util/parallel.d.ts +4 -4
  665. package/util/parallel.js +4 -4
  666. package/util/prefix.d.ts +0 -1
  667. package/util/prefix.js +0 -1
  668. package/util/quads.d.ts +14 -17
  669. package/util/quads.js +3 -5
  670. package/util/r-value.d.ts +11 -2
  671. package/util/r-value.js +23 -0
  672. package/util/random.d.ts +3 -0
  673. package/util/random.js +3 -0
  674. package/util/range.d.ts +9 -3
  675. package/util/range.js +15 -2
  676. package/util/schema.d.ts +14 -1
  677. package/util/schema.js +15 -2
  678. package/util/simple-df/dfg-view.d.ts +4 -1
  679. package/util/simple-df/dfg-view.js +4 -1
  680. package/util/summarizer.d.ts +9 -1
  681. package/util/summarizer.js +9 -0
  682. package/util/text/ansi.d.ts +3 -0
  683. package/util/text/ansi.js +3 -0
  684. package/util/text/args.d.ts +2 -4
  685. package/util/text/args.js +7 -5
  686. package/util/text/text.d.ts +4 -0
  687. package/util/text/text.js +4 -0
  688. package/util/text/time.d.ts +0 -1
  689. package/util/text/time.js +0 -1
  690. package/util/version.d.ts +26 -0
  691. package/util/version.js +37 -1
  692. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  693. package/abstract-interpretation/data-frame/domain.js +0 -315
  694. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  695. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  696. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  697. package/cli/repl/commands/repl-lineage.js +0 -67
  698. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  699. package/cli/repl/server/messages/message-lineage.js +0 -25
  700. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  701. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  702. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  703. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
@@ -1,13 +1,10 @@
1
- import type { OutputFormatter } from '../../../util/text/ansi';
2
- import type { KnownParser } from '../../../r-bridge/parser';
3
- import type { FlowrConfigOptions } from '../../../config';
4
- import type { FlowrAnalysisProvider } from '../../../project/flowr-analyzer';
1
+ import { type OutputFormatter } from '../../../util/text/ansi';
2
+ import type { FlowrAnalysisProvider, ReadonlyFlowrAnalysisProvider } from '../../../project/flowr-analyzer';
5
3
  /**
6
4
  * Defines the main interface for output of the repl.
7
5
  * This allows us to redirect it (e.g., in the case of a server connection or tests).
8
6
  *
9
7
  * The formatter allows to dynamically change the use of ansi escape sequences (see {@link OutputFormatter})
10
- *
11
8
  * @see standardReplOutput
12
9
  */
13
10
  export interface ReplOutput {
@@ -26,9 +23,8 @@ export declare const standardReplOutput: ReplOutput;
26
23
  export interface ReplCommandInformation {
27
24
  output: ReplOutput;
28
25
  allowRSessionAccess: boolean;
29
- parser: KnownParser;
26
+ analyzer: ReadonlyFlowrAnalysisProvider;
30
27
  remainingLine: string;
31
- config: FlowrConfigOptions;
32
28
  }
33
29
  /**
34
30
  * Information passed to each {@link ReplCodeCommand#fn}.
@@ -54,28 +50,35 @@ export interface ReplBaseCommand {
54
50
  usageExample: string;
55
51
  }
56
52
  export interface ReplCommand extends ReplBaseCommand {
57
- usesAnalyzer: false;
53
+ isCodeCommand: false;
58
54
  /**
59
55
  * Function to execute when the command is invoked, it must not write to the command line but instead use the output handler.
60
56
  * Furthermore, it has to obey the formatter defined in the {@link ReplOutput}.
61
57
  */
62
58
  fn: (info: ReplCommandInformation) => Promise<void> | void;
63
59
  }
60
+ /**
61
+ * Result of parsing a REPL code command line.
62
+ * `rCode` may be undefined, in which case the R code of a previous REPL command will be re-used.
63
+ */
64
+ interface ParsedReplLine {
65
+ rCode: string | undefined;
66
+ remaining: string[];
67
+ }
64
68
  /**
65
69
  * Repl command that uses the {@link FlowrAnalyzer}
66
70
  */
67
71
  export interface ReplCodeCommand extends ReplBaseCommand {
68
- usesAnalyzer: true;
72
+ isCodeCommand: true;
69
73
  /**
70
74
  * Function to execute when the command is invoked, it must not write to the command line but instead use the output handler.
71
75
  * Furthermore, it has to obey the formatter defined in the {@link ReplOutput}.
72
76
  */
73
77
  fn: (info: ReplCodeCommandInformation) => Promise<void> | void;
74
78
  /**
75
- * Argument parser function which handles the input given after the repl command
79
+ * Argument parser function which handles the input given after the repl command.
80
+ * If no R code is returned, the input R code of a previous REPL command will be re-used for processing the current REPL command.
76
81
  */
77
- argsParser: (remainingLine: string) => {
78
- input: string;
79
- remaining: string[];
80
- };
82
+ argsParser: (remainingLine: string) => ParsedReplLine;
81
83
  }
84
+ export {};
@@ -43,7 +43,7 @@ function formatInfo(out, type, meta) {
43
43
  }
44
44
  exports.normalizeCommand = {
45
45
  description: `Get mermaid code for the normalized AST of R code, start with '${retriever_1.fileProtocol}' to indicate a file`,
46
- usesAnalyzer: true,
46
+ isCodeCommand: true,
47
47
  usageExample: ':normalize',
48
48
  aliases: ['n'],
49
49
  script: false,
@@ -62,7 +62,7 @@ exports.normalizeCommand = {
62
62
  };
63
63
  exports.normalizeStarCommand = {
64
64
  description: 'Returns the URL to mermaid.live',
65
- usesAnalyzer: true,
65
+ isCodeCommand: true,
66
66
  usageExample: ':normalize*',
67
67
  aliases: ['n*'],
68
68
  script: false,
@@ -126,20 +126,21 @@ function depthListToTextTree(list, f) {
126
126
  }
127
127
  exports.parseCommand = {
128
128
  description: `Prints ASCII Art of the parsed, unmodified AST, start with '${retriever_1.fileProtocol}' to indicate a file`,
129
- usesAnalyzer: true,
129
+ isCodeCommand: true,
130
130
  usageExample: ':parse',
131
131
  aliases: ['p'],
132
132
  script: false,
133
133
  argsParser: (line) => {
134
134
  return {
135
135
  // Threat the whole input line as R code
136
- input: (0, retriever_1.removeRQuotes)(line.trim()),
136
+ rCode: (0, retriever_1.removeRQuotes)(line.trim()),
137
137
  remaining: []
138
138
  };
139
139
  },
140
140
  fn: async ({ output, analyzer }) => {
141
141
  const result = await analyzer.parse();
142
- if (analyzer.parserName() === 'r-shell') {
142
+ const parserInfo = analyzer.parserInformation();
143
+ if (parserInfo.name === 'r-shell') {
143
144
  const object = (0, format_1.convertPreparedParsedData)((0, format_1.prepareParsedData)(result.parsed));
144
145
  output.stdout(depthListToTextTree(toDepthMap(object), output.formatter));
145
146
  }
@@ -29,15 +29,19 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
29
29
  return;
30
30
  }
31
31
  let parsedQuery;
32
+ let input;
32
33
  if (query.startsWith('@')) {
33
34
  const queryName = query.slice(1);
34
35
  const queryObj = query_1.SupportedQueries[queryName];
35
36
  if (queryObj?.fromLine) {
36
- const q = queryObj.fromLine(remainingArgs, analyzer.flowrConfig);
37
+ const parseResult = queryObj.fromLine(output, remainingArgs, analyzer.flowrConfig);
38
+ const q = parseResult.query;
37
39
  parsedQuery = q ? (Array.isArray(q) ? q : [q]) : [];
40
+ input = parseResult.rCode;
38
41
  }
39
42
  else {
40
43
  parsedQuery = [{ type: query.slice(1) }];
44
+ input = remainingArgs.join(' ').trim();
41
45
  }
42
46
  const validationResult = (0, query_1.QueriesSchema)().validate(parsedQuery);
43
47
  if (validationResult.error) {
@@ -54,10 +58,15 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
54
58
  printHelp(output);
55
59
  return;
56
60
  }
61
+ input = remainingArgs.join(' ').trim();
57
62
  }
58
63
  else {
59
64
  parsedQuery = [{ type: 'call-context', callName: query }];
60
65
  }
66
+ if (input) {
67
+ analyzer.reset();
68
+ analyzer.addRequest((0, retriever_1.requestFromInput)(input));
69
+ }
61
70
  return {
62
71
  query: await (0, query_1.executeQueries)({
63
72
  analyzer,
@@ -68,19 +77,19 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
68
77
  }
69
78
  /**
70
79
  * Function for splitting the input line.
71
- * The first token is the query command.
72
- * The rest of the line is treated as input code.
80
+ * All input is treated as arguments, no R code is separated so that the individual queries can handle it.
81
+ * @param line - The input line
73
82
  */
74
83
  function parseArgs(line) {
75
84
  const args = (0, args_1.splitAtEscapeSensitive)(line);
76
85
  return {
77
- input: args.join(' ').trim(),
86
+ rCode: undefined,
78
87
  remaining: args
79
88
  };
80
89
  }
81
90
  exports.queryCommand = {
82
91
  description: `Query the given R code, start with '${retriever_1.fileProtocol}' to indicate a file. The query is to be a valid query in json format (use 'help' to get more information).`,
83
- usesAnalyzer: true,
92
+ isCodeCommand: true,
84
93
  usageExample: ':query "<query>" <code>',
85
94
  aliases: [],
86
95
  script: false,
@@ -96,7 +105,7 @@ exports.queryCommand = {
96
105
  };
97
106
  exports.queryStarCommand = {
98
107
  description: 'Similar to query, but returns the output in json format.',
99
- usesAnalyzer: true,
108
+ isCodeCommand: true,
100
109
  usageExample: ':query* <query> <code>',
101
110
  aliases: [],
102
111
  script: false,
@@ -104,7 +113,9 @@ exports.queryStarCommand = {
104
113
  fn: async ({ output, analyzer, remainingArgs }) => {
105
114
  const results = await processQueryArgs(output, analyzer, remainingArgs);
106
115
  if (results) {
107
- output.stdout(JSON.stringify(results.query, json_1.jsonReplacer));
116
+ const json = Object.fromEntries(Object.entries(results.query)
117
+ .map(([query, queryResults]) => [query, query_1.SupportedQueries[query]?.jsonFormatter?.(queryResults) ?? queryResults]));
118
+ output.stdout(JSON.stringify(json, json_1.jsonReplacer));
108
119
  }
109
120
  }
110
121
  };
@@ -4,7 +4,7 @@ exports.quitCommand = void 0;
4
4
  const log_1 = require("../../../util/log");
5
5
  exports.quitCommand = {
6
6
  description: 'End the repl',
7
- usesAnalyzer: false,
7
+ isCodeCommand: false,
8
8
  aliases: ['q', 'exit'],
9
9
  usageExample: ':quit',
10
10
  script: false,
@@ -1,17 +1,2 @@
1
- import type { ReplCommand, ReplOutput } from './repl-main';
2
- import type { KnownParser } from '../../../r-bridge/parser';
3
- type Version = `${number}.${number}.${number}`;
4
- /**
5
- * Describes the version of flowR and the used R interpreter.
6
- */
7
- export interface VersionInformation {
8
- /** The version of flowR */
9
- flowr: Version;
10
- /** The version of R identified by the underlying {@link RShell} */
11
- r: Version | 'unknown' | 'none';
12
- engine: string;
13
- }
14
- export declare function retrieveVersionInformation(parser: KnownParser): Promise<VersionInformation>;
15
- export declare function printVersionInformation(output: ReplOutput, parser: KnownParser): Promise<void>;
1
+ import type { ReplCommand } from './repl-main';
16
2
  export declare const versionCommand: ReplCommand;
17
- export {};
@@ -1,30 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.versionCommand = void 0;
4
- exports.retrieveVersionInformation = retrieveVersionInformation;
5
- exports.printVersionInformation = printVersionInformation;
6
4
  const version_1 = require("../../../util/version");
7
- const assert_1 = require("../../../util/assert");
8
- const versionRegex = /^\d+\.\d+\.\d+/m;
9
- async function retrieveVersionInformation(parser) {
10
- const flowr = (0, version_1.flowrVersion)().toString();
11
- const r = await parser.rVersion();
12
- (0, assert_1.guard)(versionRegex.test(flowr), `flowR version ${flowr} does not match the expected format!`);
13
- (0, assert_1.guard)(r === 'unknown' || r === 'none' || versionRegex.test(r), `R version ${r} does not match the expected format!`);
14
- return { flowr: flowr, r: r, engine: parser.name };
15
- }
16
- async function printVersionInformation(output, parser) {
17
- const { flowr, r, engine } = await retrieveVersionInformation(parser);
18
- output.stdout(`Engine: ${engine}`);
19
- output.stdout(` flowR: ${flowr}`);
20
- output.stdout(` R: ${r}`);
21
- }
22
5
  exports.versionCommand = {
23
6
  description: 'Prints the version of flowR as well as the current version of R',
24
- usesAnalyzer: false,
7
+ isCodeCommand: false,
25
8
  aliases: [],
26
9
  usageExample: ':version',
27
10
  script: false,
28
- fn: ({ output, parser }) => printVersionInformation(output, parser)
11
+ fn: ({ output, analyzer }) => (0, version_1.printVersionInformation)(output, analyzer)
29
12
  };
30
13
  //# sourceMappingURL=repl-version.js.map
@@ -1,36 +1,54 @@
1
1
  import * as readline from 'readline';
2
- import type { ReplOutput } from './commands/repl-main';
2
+ import { type ReplOutput } from './commands/repl-main';
3
3
  import type { MergeableRecord } from '../../util/objects';
4
- import type { KnownParser } from '../../r-bridge/parser';
5
4
  import type { FlowrConfigOptions } from '../../config';
5
+ import type { FlowrAnalyzer } from '../../project/flowr-analyzer';
6
+ /**
7
+ * Completion suggestions for a specific REPL command
8
+ */
9
+ export interface CommandCompletions {
10
+ /** The possible completions for the current argument */
11
+ readonly completions: string[];
12
+ /**
13
+ * The current argument fragment being completed, if any.
14
+ * This is relevant if an argument is composed of multiple parts (e.g. comma-separated lists).
15
+ */
16
+ readonly argumentPart?: string;
17
+ }
6
18
  /**
7
19
  * Used by the repl to provide automatic completions for a given (partial) input line
8
20
  */
9
21
  export declare function replCompleter(line: string, config: FlowrConfigOptions): [string[], string];
22
+ /**
23
+ * Produces default readline options for the flowR REPL
24
+ */
10
25
  export declare function makeDefaultReplReadline(config: FlowrConfigOptions): readline.ReadLineOptions;
26
+ /**
27
+ * Handles a string input for the REPL, returning the parsed string and any remaining input.
28
+ */
11
29
  export declare function handleString(code: string): {
12
- input: string;
30
+ rCode: string | undefined;
13
31
  remaining: never[];
14
32
  };
15
33
  /**
16
34
  * This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
17
- *
18
- * @param config - flowr Config
35
+ * @param analyzer - The flowR analyzer to use.
19
36
  * @param output - Defines two methods that every function in the repl uses to output its data.
20
37
  * @param expr - The expression to process.
21
- * @param parser - The {@link RShell} or {@link TreeSitterExecutor} to use (see {@link repl}).
22
38
  * @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
23
39
  */
24
- export declare function replProcessAnswer(config: FlowrConfigOptions, output: ReplOutput, expr: string, parser: KnownParser, allowRSessionAccess: boolean): Promise<void>;
40
+ export declare function replProcessAnswer(analyzer: FlowrAnalyzer, output: ReplOutput, expr: string, allowRSessionAccess: boolean): Promise<void>;
25
41
  /**
26
42
  * Options for the {@link repl} function.
27
43
  */
28
44
  export interface FlowrReplOptions extends MergeableRecord {
29
- /** The shell to use, if you do not pass one it will automatically create a new one with the `revive` option set to 'always'. */
30
- readonly parser?: KnownParser;
45
+ /**
46
+ * The flowR analyzer to use.
47
+ */
48
+ readonly analyzer: FlowrAnalyzer;
31
49
  /**
32
50
  * A potentially customized readline interface to be used for the repl to *read* from the user, we write the output with the {@link ReplOutput | `output` } interface.
33
- * If you want to provide a custom one but use the same `completer`, refer to {@link replCompleter}.
51
+ * If you want to provide a custom one but use the same `completer`, refer to {@link replCompleter}.
34
52
  */
35
53
  readonly rl?: readline.Interface;
36
54
  /** Defines two methods that every function in the repl uses to output its data. */
@@ -46,12 +64,12 @@ export interface FlowrReplOptions extends MergeableRecord {
46
64
  * The repl allows for two kinds of inputs:
47
65
  * - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
48
66
  * - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
49
- *
50
67
  * @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
51
- * @param config - The flowr config
52
68
  *
53
69
  * For the execution, this function makes use of {@link replProcessAnswer}.
54
- *
55
70
  */
56
- export declare function repl(config: FlowrConfigOptions, { parser, rl, output, historyFile, allowRSessionAccess }: FlowrReplOptions): Promise<void>;
71
+ export declare function repl({ analyzer, rl, output, historyFile, allowRSessionAccess }: FlowrReplOptions): Promise<void>;
72
+ /**
73
+ * Loads the REPL history from the given file.
74
+ */
57
75
  export declare function loadReplHistory(historyFile: string): string[] | undefined;
package/cli/repl/core.js CHANGED
@@ -44,7 +44,6 @@ exports.repl = repl;
44
44
  exports.loadReplHistory = loadReplHistory;
45
45
  /**
46
46
  * Basically a helper file to allow the main 'flowr' script (located in the source root) to provide its repl
47
- *
48
47
  * @module
49
48
  */
50
49
  const prompt_1 = require("./prompt");
@@ -58,11 +57,9 @@ const repl_commands_1 = require("./commands/repl-commands");
58
57
  const scripts_info_1 = require("../common/scripts-info");
59
58
  const retriever_1 = require("../../r-bridge/retriever");
60
59
  const repl_main_1 = require("./commands/repl-main");
61
- const shell_1 = require("../../r-bridge/shell");
62
60
  const log_1 = require("../../util/log");
63
- const config_1 = require("../../config");
64
61
  const query_1 = require("../../queries/query");
65
- const flowr_analyzer_builder_1 = require("../../project/flowr-analyzer-builder");
62
+ const strings_1 = require("../../util/text/strings");
66
63
  let _replCompleterKeywords = undefined;
67
64
  function replCompleterKeywords() {
68
65
  if (_replCompleterKeywords === undefined) {
@@ -82,44 +79,50 @@ function replCompleter(line, config) {
82
79
  if (splitLine.length > 1 || startingNewArg) {
83
80
  const commandNameColon = replCompleterKeywords().find(k => splitLine[0] === k);
84
81
  if (commandNameColon) {
85
- const completions = [];
82
+ let completions = [];
83
+ let currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
86
84
  const commandName = commandNameColon.slice(1);
87
85
  const cmd = (0, repl_commands_1.getCommand)(commandName);
88
86
  if (cmd?.script === true) {
89
87
  // autocomplete script arguments
90
88
  const options = scripts_info_1.scripts[commandName].options;
91
- completions.push(...(0, scripts_info_1.getValidOptionsForCompletion)(options, splitLine).map(o => `${o} `));
89
+ completions = completions.concat((0, scripts_info_1.getValidOptionsForCompletion)(options, splitLine).map(o => `${o} `));
92
90
  }
93
91
  else if (commandName.startsWith('query')) {
94
- completions.push(...replQueryCompleter(splitLine, config));
92
+ const { completions: queryCompletions, argumentPart: splitArg } = replQueryCompleter(splitLine, startingNewArg, config);
93
+ if (splitArg !== undefined) {
94
+ currentArg = splitArg;
95
+ }
96
+ completions = completions.concat(queryCompletions);
95
97
  }
96
98
  else {
97
99
  // autocomplete command arguments (specifically, autocomplete the file:// protocol)
98
100
  completions.push(retriever_1.fileProtocol);
99
101
  }
100
- const currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
101
102
  return [completions.filter(a => a.startsWith(currentArg)), currentArg];
102
103
  }
103
104
  }
104
105
  // if no command is already typed, just return all commands that match
105
106
  return [replCompleterKeywords().filter(k => k.startsWith(line)).map(k => `${k} `), line];
106
107
  }
107
- function replQueryCompleter(splitLine, config) {
108
+ function replQueryCompleter(splitLine, startingNewArg, config) {
108
109
  const nonEmpty = splitLine.slice(1).map(s => s.trim()).filter(s => s.length > 0);
109
110
  const queryShorts = Object.keys(query_1.SupportedQueries).map(q => `@${q}`).concat(['help']);
110
- let candidates = [];
111
- if (nonEmpty.length == 0 || (nonEmpty.length == 1 && queryShorts.some(q => q.startsWith(nonEmpty[0]) && nonEmpty[0] !== q))) {
112
- candidates = candidates.concat(queryShorts.map(q => `${q} `));
111
+ if (nonEmpty.length == 0 || (nonEmpty.length == 1 && queryShorts.some(q => q.startsWith(nonEmpty[0]) && nonEmpty[0] !== q && !startingNewArg))) {
112
+ return { completions: queryShorts.map(q => `${q} `) };
113
113
  }
114
114
  else {
115
115
  const q = nonEmpty[0].slice(1);
116
116
  const queryElement = query_1.SupportedQueries[q];
117
117
  if (queryElement?.completer) {
118
- candidates = candidates.concat(queryElement.completer(nonEmpty.slice(1), config));
118
+ return queryElement.completer(nonEmpty.slice(1), startingNewArg, config);
119
119
  }
120
120
  }
121
- return candidates;
121
+ return { completions: [] };
122
122
  }
123
+ /**
124
+ * Produces default readline options for the flowR REPL
125
+ */
123
126
  function makeDefaultReplReadline(config) {
124
127
  return {
125
128
  input: process.stdin,
@@ -131,13 +134,16 @@ function makeDefaultReplReadline(config) {
131
134
  completer: (c) => replCompleter(c, config)
132
135
  };
133
136
  }
137
+ /**
138
+ * Handles a string input for the REPL, returning the parsed string and any remaining input.
139
+ */
134
140
  function handleString(code) {
135
141
  return {
136
- input: code.startsWith('"') ? JSON.parse(code) : code,
142
+ rCode: code.length == 0 ? undefined : (0, strings_1.startAndEndsWith)(code, '"') ? JSON.parse(code) : code,
137
143
  remaining: []
138
144
  };
139
145
  }
140
- async function replProcessStatement(output, statement, parser, allowRSessionAccess, config) {
146
+ async function replProcessStatement(output, statement, analyzer, allowRSessionAccess) {
141
147
  if (statement.startsWith(':')) {
142
148
  const command = statement.slice(1).split(' ')[0].toLowerCase();
143
149
  const processor = (0, repl_commands_1.getCommand)(command);
@@ -145,17 +151,16 @@ async function replProcessStatement(output, statement, parser, allowRSessionAcce
145
151
  if (processor) {
146
152
  try {
147
153
  const remainingLine = statement.slice(command.length + 2).trim();
148
- if (processor.usesAnalyzer) {
154
+ if (processor.isCodeCommand) {
149
155
  const args = processor.argsParser(remainingLine);
150
- const request = (0, retriever_1.requestFromInput)(args.input);
151
- const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder(request)
152
- .setConfig(config)
153
- .setParser(parser)
154
- .build();
156
+ if (args.rCode) {
157
+ analyzer.reset();
158
+ analyzer.addRequest((0, retriever_1.requestFromInput)(args.rCode));
159
+ }
155
160
  await processor.fn({ output, analyzer, remainingArgs: args.remaining });
156
161
  }
157
162
  else {
158
- await processor.fn({ output, parser, remainingLine, allowRSessionAccess, config });
163
+ await processor.fn({ output, analyzer, remainingLine, allowRSessionAccess });
159
164
  }
160
165
  }
161
166
  catch (e) {
@@ -170,22 +175,20 @@ async function replProcessStatement(output, statement, parser, allowRSessionAcce
170
175
  }
171
176
  }
172
177
  else {
173
- await (0, repl_execute_1.tryExecuteRShellCommand)({ output, parser, remainingLine: statement, allowRSessionAccess, config });
178
+ await (0, repl_execute_1.tryExecuteRShellCommand)({ output, analyzer, remainingLine: statement, allowRSessionAccess });
174
179
  }
175
180
  }
176
181
  /**
177
182
  * This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
178
- *
179
- * @param config - flowr Config
183
+ * @param analyzer - The flowR analyzer to use.
180
184
  * @param output - Defines two methods that every function in the repl uses to output its data.
181
185
  * @param expr - The expression to process.
182
- * @param parser - The {@link RShell} or {@link TreeSitterExecutor} to use (see {@link repl}).
183
186
  * @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
184
187
  */
185
- async function replProcessAnswer(config, output, expr, parser, allowRSessionAccess) {
186
- const statements = (0, args_1.splitAtEscapeSensitive)(expr, false, ';');
188
+ async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
189
+ const statements = (0, args_1.splitAtEscapeSensitive)(expr, false, /^;\s*:/);
187
190
  for (const statement of statements) {
188
- await replProcessStatement(output, statement, parser, allowRSessionAccess, config);
191
+ await replProcessStatement(output, statement.trim(), analyzer, allowRSessionAccess);
189
192
  }
190
193
  }
191
194
  /**
@@ -194,14 +197,11 @@ async function replProcessAnswer(config, output, expr, parser, allowRSessionAcce
194
197
  * The repl allows for two kinds of inputs:
195
198
  * - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
196
199
  * - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
197
- *
198
200
  * @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
199
- * @param config - The flowr config
200
201
  *
201
202
  * For the execution, this function makes use of {@link replProcessAnswer}.
202
- *
203
203
  */
204
- async function repl(config, { parser = new shell_1.RShell((0, config_1.getEngineConfig)(config, 'r-shell'), { revive: 2 /* RShellReviveOptions.Always */ }), rl = readline.createInterface(makeDefaultReplReadline(config)), output = repl_main_1.standardReplOutput, historyFile = defaultHistoryFile, allowRSessionAccess = false }) {
204
+ async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplReadline(analyzer.flowrConfig)), output = repl_main_1.standardReplOutput, historyFile = defaultHistoryFile, allowRSessionAccess = false }) {
205
205
  if (historyFile) {
206
206
  rl.on('history', h => fs_1.default.writeFileSync(historyFile, h.join('\n'), { encoding: 'utf-8' }));
207
207
  }
@@ -210,7 +210,7 @@ async function repl(config, { parser = new shell_1.RShell((0, config_1.getEngine
210
210
  await new Promise((resolve, reject) => {
211
211
  rl.question((0, prompt_1.prompt)(), answer => {
212
212
  rl.pause();
213
- replProcessAnswer(config, output, answer, parser, allowRSessionAccess).then(() => {
213
+ replProcessAnswer(analyzer, output, answer, allowRSessionAccess).then(() => {
214
214
  rl.resume();
215
215
  resolve();
216
216
  }).catch(reject);
@@ -218,6 +218,9 @@ async function repl(config, { parser = new shell_1.RShell((0, config_1.getEngine
218
218
  });
219
219
  }
220
220
  }
221
+ /**
222
+ * Loads the REPL history from the given file.
223
+ */
221
224
  function loadReplHistory(historyFile) {
222
225
  try {
223
226
  if (!fs_1.default.existsSync(historyFile)) {
@@ -3,7 +3,6 @@ type Stdio = [stdin: Writable | null, stdout: Readable | null, stderr: Readable
3
3
  export type StdioProcessor = (stdio: Stdio) => void;
4
4
  /**
5
5
  * Simply captures the output of the script executed by {@link waitOnScript}.
6
- *
7
6
  * @param stdio - The standard io tuple provided by {@link waitOnScript}
8
7
  * @param onStdOutLine - The callback is executed each time we receive a new line from the standard output channel.
9
8
  * @param onStdErrLine - The callback is executed each time we receive a new line from the standard error channel.
@@ -11,7 +10,6 @@ export type StdioProcessor = (stdio: Stdio) => void;
11
10
  export declare function stdioCaptureProcessor(stdio: Stdio, onStdOutLine: (msg: string) => void, onStdErrLine: (msg: string) => void): void;
12
11
  /**
13
12
  * Run the given module with the presented arguments, and wait for it to exit.
14
- *
15
13
  * @param module - The (flowR) module that you want to use for the fork.
16
14
  * It is probably best to use {@link __dirname} so you can specify the module relative to your
17
15
  * current one.
@@ -11,7 +11,6 @@ const assert_1 = require("../../util/assert");
11
11
  const log_1 = require("../../util/log");
12
12
  /**
13
13
  * Simply captures the output of the script executed by {@link waitOnScript}.
14
- *
15
14
  * @param stdio - The standard io tuple provided by {@link waitOnScript}
16
15
  * @param onStdOutLine - The callback is executed each time we receive a new line from the standard output channel.
17
16
  * @param onStdErrLine - The callback is executed each time we receive a new line from the standard error channel.
@@ -32,7 +31,6 @@ function stdioCaptureProcessor(stdio, onStdOutLine, onStdErrLine) {
32
31
  }
33
32
  /**
34
33
  * Run the given module with the presented arguments, and wait for it to exit.
35
- *
36
34
  * @param module - The (flowR) module that you want to use for the fork.
37
35
  * It is probably best to use {@link __dirname} so you can specify the module relative to your
38
36
  * current one.
@@ -0,0 +1,14 @@
1
+ import { SliceDirection } from '../../../core/steps/all/static-slicing/00-slice';
2
+ import type { SingleSlicingCriterion, SlicingCriteria } from '../../../slicing/criterion/parse';
3
+ /**
4
+ * Checks whether the given argument represents a slicing direction with an `f` suffix.
5
+ */
6
+ export declare function sliceDirectionParser(argument: string): SliceDirection;
7
+ /**
8
+ * Parses a single slicing criterion from the given argument.
9
+ */
10
+ export declare function sliceCriterionParser(argument: string | undefined): SingleSlicingCriterion | undefined;
11
+ /**
12
+ * Parses multiple slicing criteria from the given argument.
13
+ */
14
+ export declare function sliceCriteriaParser(argument: string | undefined): SlicingCriteria | undefined;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sliceDirectionParser = sliceDirectionParser;
4
+ exports.sliceCriterionParser = sliceCriterionParser;
5
+ exports.sliceCriteriaParser = sliceCriteriaParser;
6
+ const _00_slice_1 = require("../../../core/steps/all/static-slicing/00-slice");
7
+ /**
8
+ * Checks whether the given argument represents a slicing direction with an `f` suffix.
9
+ */
10
+ function sliceDirectionParser(argument) {
11
+ const endBracket = argument.indexOf(')');
12
+ return argument[endBracket + 1] === 'f' ? _00_slice_1.SliceDirection.Forward : _00_slice_1.SliceDirection.Backward;
13
+ }
14
+ /**
15
+ * Parses a single slicing criterion from the given argument.
16
+ */
17
+ function sliceCriterionParser(argument) {
18
+ if (argument?.startsWith('(') && argument.includes(')')) {
19
+ const endBracket = argument.indexOf(')');
20
+ return argument.slice(1, endBracket);
21
+ }
22
+ }
23
+ /**
24
+ * Parses multiple slicing criteria from the given argument.
25
+ */
26
+ function sliceCriteriaParser(argument) {
27
+ if (argument?.startsWith('(') && argument.includes(')')) {
28
+ const endBracket = argument.indexOf(')');
29
+ const criteriaPart = argument.slice(1, endBracket);
30
+ const criteria = criteriaPart.split(';');
31
+ return criteria;
32
+ }
33
+ }
34
+ //# sourceMappingURL=slice-query-parser.js.map
@@ -1,3 +1,9 @@
1
1
  import type { KnownParser } from '../../r-bridge/parser';
2
+ /**
3
+ * Returns a version string for the REPL including flowR and R version.
4
+ */
2
5
  export declare function versionReplString(parser: KnownParser): Promise<string>;
6
+ /**
7
+ * Prints the version information for the REPL including flowR and R version.
8
+ */
3
9
  export declare function printVersionRepl(parser: KnownParser): Promise<void>;
@@ -2,13 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.versionReplString = versionReplString;
4
4
  exports.printVersionRepl = printVersionRepl;
5
- const repl_version_1 = require("./commands/repl-version");
5
+ const version_1 = require("../../util/version");
6
+ /**
7
+ * Returns a version string for the REPL including flowR and R version.
8
+ */
6
9
  async function versionReplString(parser) {
7
- const version = await (0, repl_version_1.retrieveVersionInformation)(parser);
10
+ const version = await (0, version_1.retrieveVersionInformation)(parser);
8
11
  const rVersion = version.r === 'none' ? '' : version.r === 'unknown' ? ', R version unknown' : `, R v${version.r}`;
9
12
  const treeSitterVer = parser.name === 'tree-sitter' ? `, R grammar v${parser.treeSitterVersion()}` : '';
10
13
  return `flowR repl using flowR v${version.flowr}${rVersion}${treeSitterVer} (${version.engine} engine)`;
11
14
  }
15
+ /**
16
+ * Prints the version information for the REPL including flowR and R version.
17
+ */
12
18
  async function printVersionRepl(parser) {
13
19
  console.log(await versionReplString(parser));
14
20
  }