@eagleoutice/flowr 2.6.1 → 2.6.3

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 (808) hide show
  1. package/README.md +142 -39
  2. package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
  4. package/abstract-interpretation/data-frame/absint-visitor.js +17 -12
  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 +9 -10
  14. package/abstract-interpretation/data-frame/mappers/function-mapper.js +21 -18
  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 +179 -162
  20. package/abstract-interpretation/data-frame/shape-inference.d.ts +4 -7
  21. package/abstract-interpretation/data-frame/shape-inference.js +10 -12
  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 +2 -8
  44. package/abstract-interpretation/normalized-ast-fold.js +0 -5
  45. package/benchmark/slicer.d.ts +4 -7
  46. package/benchmark/slicer.js +27 -31
  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 +13 -1
  58. package/benchmark/summarizer/second-phase/graph.d.ts +5 -0
  59. package/benchmark/summarizer/second-phase/graph.js +5 -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/export-quads-app.js +1 -1
  71. package/cli/flowr-main-options.d.ts +3 -0
  72. package/cli/flowr-main-options.js +3 -0
  73. package/cli/repl/commands/repl-commands.d.ts +13 -0
  74. package/cli/repl/commands/repl-commands.js +13 -2
  75. package/cli/repl/commands/repl-dataflow.js +2 -1
  76. package/cli/repl/commands/repl-execute.d.ts +4 -0
  77. package/cli/repl/commands/repl-execute.js +6 -2
  78. package/cli/repl/commands/repl-main.d.ts +15 -9
  79. package/cli/repl/commands/repl-parse.js +18 -6
  80. package/cli/repl/commands/repl-query.js +16 -5
  81. package/cli/repl/core.d.ts +24 -6
  82. package/cli/repl/core.js +42 -30
  83. package/cli/repl/execute.d.ts +0 -2
  84. package/cli/repl/execute.js +0 -2
  85. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  86. package/cli/repl/parser/slice-query-parser.js +34 -0
  87. package/cli/repl/print-version.d.ts +6 -0
  88. package/cli/repl/print-version.js +6 -0
  89. package/cli/repl/server/compact.d.ts +8 -0
  90. package/cli/repl/server/compact.js +8 -0
  91. package/cli/repl/server/connection.d.ts +4 -3
  92. package/cli/repl/server/connection.js +5 -32
  93. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  94. package/cli/repl/server/messages/all-messages.js +0 -1
  95. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  96. package/cli/repl/server/messages/message-query.d.ts +1 -1
  97. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  98. package/cli/repl/server/send.d.ts +6 -0
  99. package/cli/repl/server/send.js +6 -0
  100. package/cli/repl/server/server.d.ts +1 -1
  101. package/cli/repl/server/validate.d.ts +10 -1
  102. package/cli/repl/server/validate.js +9 -0
  103. package/cli/run-script.d.ts +1 -2
  104. package/cli/run-script.js +0 -1
  105. package/cli/script-core/statistics-core.d.ts +3 -0
  106. package/cli/script-core/statistics-core.js +3 -0
  107. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  108. package/cli/script-core/statistics-helper-core.js +5 -1
  109. package/cli/script-core/summarizer-core.d.ts +3 -0
  110. package/cli/script-core/summarizer-core.js +3 -0
  111. package/cli/slicer-app.js +3 -4
  112. package/cli/summarizer-app.d.ts +2 -3
  113. package/cli/summarizer-app.js +2 -3
  114. package/cli/wiki.d.ts +4 -0
  115. package/cli/wiki.js +165 -0
  116. package/config.d.ts +21 -3
  117. package/config.js +21 -0
  118. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  119. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  120. package/control-flow/cfg-dead-code.js +13 -3
  121. package/control-flow/cfg-simplification.d.ts +5 -2
  122. package/control-flow/cfg-simplification.js +3 -0
  123. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  124. package/control-flow/control-flow-graph.d.ts +20 -12
  125. package/control-flow/control-flow-graph.js +16 -4
  126. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  127. package/control-flow/diff-cfg.d.ts +3 -5
  128. package/control-flow/diff-cfg.js +0 -1
  129. package/control-flow/extract-cfg.d.ts +12 -9
  130. package/control-flow/extract-cfg.js +44 -7
  131. package/control-flow/happens-before.d.ts +1 -1
  132. package/control-flow/semantic-cfg-guided-visitor.d.ts +4 -33
  133. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  134. package/control-flow/simple-visitor.d.ts +1 -3
  135. package/control-flow/simple-visitor.js +2 -4
  136. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  137. package/control-flow/useless-loop.d.ts +3 -6
  138. package/control-flow/useless-loop.js +16 -10
  139. package/core/pipeline-executor.d.ts +11 -22
  140. package/core/pipeline-executor.js +13 -25
  141. package/core/print/dataflow-printer.d.ts +19 -0
  142. package/core/print/dataflow-printer.js +19 -0
  143. package/core/print/normalize-printer.d.ts +21 -1
  144. package/core/print/normalize-printer.js +21 -1
  145. package/core/print/parse-printer.d.ts +6 -1
  146. package/core/print/parse-printer.js +5 -0
  147. package/core/print/print.d.ts +0 -1
  148. package/core/print/print.js +0 -1
  149. package/core/print/slice-diff-ansi.d.ts +3 -0
  150. package/core/print/slice-diff-ansi.js +3 -0
  151. package/core/steps/all/core/00-parse.d.ts +2 -2
  152. package/core/steps/all/core/00-parse.js +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 -6
  155. package/core/steps/all/core/10-normalize.js +1 -13
  156. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +5 -5
  157. package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
  158. package/core/steps/all/core/20-dataflow.d.ts +3 -4
  159. package/core/steps/all/core/20-dataflow.js +2 -2
  160. package/core/steps/all/static-slicing/00-slice.d.ts +1 -2
  161. package/core/steps/all/static-slicing/00-slice.js +1 -1
  162. package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
  163. package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
  164. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  165. package/core/steps/pipeline/default-pipelines.d.ts +94 -95
  166. package/core/steps/pipeline/default-pipelines.js +8 -12
  167. package/core/steps/pipeline/pipeline.d.ts +1 -8
  168. package/core/steps/pipeline/pipeline.js +1 -3
  169. package/core/steps/pipeline-step.d.ts +0 -1
  170. package/core/steps/pipeline-step.js +0 -1
  171. package/dataflow/cluster.d.ts +3 -0
  172. package/dataflow/cluster.js +3 -0
  173. package/dataflow/environments/append.d.ts +1 -1
  174. package/dataflow/environments/built-in-config.d.ts +1 -5
  175. package/dataflow/environments/built-in-config.js +0 -1
  176. package/dataflow/environments/built-in.d.ts +10 -5
  177. package/dataflow/environments/built-in.js +6 -1
  178. package/dataflow/environments/clone.d.ts +1 -2
  179. package/dataflow/environments/clone.js +12 -2
  180. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  181. package/dataflow/environments/default-builtin-config.js +4 -1
  182. package/dataflow/environments/diff.d.ts +11 -2
  183. package/dataflow/environments/diff.js +11 -2
  184. package/dataflow/environments/environment.d.ts +3 -3
  185. package/dataflow/environments/environment.js +8 -6
  186. package/dataflow/environments/identifier.d.ts +0 -4
  187. package/dataflow/environments/identifier.js +0 -1
  188. package/dataflow/environments/overwrite.d.ts +1 -2
  189. package/dataflow/environments/overwrite.js +3 -16
  190. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  191. package/dataflow/environments/resolve-by-name.js +3 -2
  192. package/dataflow/environments/scoping.d.ts +9 -2
  193. package/dataflow/environments/scoping.js +8 -1
  194. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  195. package/dataflow/eval/resolve/alias-tracking.js +11 -14
  196. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  197. package/dataflow/eval/resolve/resolve-argument.js +2 -2
  198. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  199. package/dataflow/eval/resolve/resolve.js +0 -5
  200. package/dataflow/eval/values/general.d.ts +1 -3
  201. package/dataflow/eval/values/general.js +0 -1
  202. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  203. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  204. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  205. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  206. package/dataflow/eval/values/r-value.d.ts +12 -0
  207. package/dataflow/eval/values/r-value.js +12 -0
  208. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  209. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  210. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  211. package/dataflow/eval/values/sets/set-constants.js +6 -0
  212. package/dataflow/eval/values/string/string-constants.d.ts +16 -1
  213. package/dataflow/eval/values/string/string-constants.js +15 -0
  214. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  215. package/dataflow/extractor.d.ts +3 -4
  216. package/dataflow/extractor.js +25 -22
  217. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  218. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  219. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  220. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  221. package/dataflow/graph/edge.d.ts +9 -0
  222. package/dataflow/graph/edge.js +9 -0
  223. package/dataflow/graph/graph.d.ts +9 -28
  224. package/dataflow/graph/graph.js +4 -28
  225. package/dataflow/graph/invert-dfg.d.ts +3 -0
  226. package/dataflow/graph/invert-dfg.js +3 -0
  227. package/dataflow/graph/quads.d.ts +1 -1
  228. package/dataflow/graph/unknown-replacement.d.ts +8 -0
  229. package/dataflow/graph/unknown-replacement.js +8 -0
  230. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  231. package/dataflow/graph/unknown-side-effect.js +8 -0
  232. package/dataflow/graph/vertex.d.ts +9 -9
  233. package/dataflow/graph/vertex.js +9 -1
  234. package/dataflow/info.d.ts +16 -10
  235. package/dataflow/info.js +27 -1
  236. package/dataflow/internal/linker.d.ts +25 -9
  237. package/dataflow/internal/linker.js +30 -11
  238. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  239. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -1
  240. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  241. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  242. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +6 -4
  243. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  244. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +4 -1
  245. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  246. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +4 -4
  247. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  248. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +9 -6
  249. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  250. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +4 -1
  251. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  252. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +4 -1
  253. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  254. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +7 -1
  255. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  257. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  258. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +5 -1
  259. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  260. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  261. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  262. package/dataflow/internal/process/functions/call/built-in/built-in-list.js +2 -2
  263. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  264. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +6 -3
  265. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  266. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  267. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +10 -2
  268. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +8 -0
  269. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  270. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -3
  271. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  272. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  273. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +34 -12
  274. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +90 -68
  275. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +5 -0
  276. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +5 -0
  277. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  278. package/dataflow/internal/process/functions/call/built-in/built-in-vector.js +2 -2
  279. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  280. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +4 -1
  281. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  282. package/dataflow/internal/process/functions/call/common.js +9 -3
  283. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  284. package/dataflow/internal/process/functions/call/default-call-handling.js +5 -0
  285. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  286. package/dataflow/internal/process/functions/call/known-call-handling.js +10 -3
  287. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  288. package/dataflow/internal/process/functions/call/named-call-handling.js +10 -4
  289. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  290. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  291. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  292. package/dataflow/internal/process/functions/process-argument.js +6 -0
  293. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  294. package/dataflow/internal/process/functions/process-parameter.js +7 -4
  295. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  296. package/dataflow/internal/process/process-symbol.js +3 -0
  297. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  298. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  299. package/dataflow/internal/process/process-value.d.ts +3 -0
  300. package/dataflow/internal/process/process-value.js +3 -0
  301. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  302. package/dataflow/origin/dfg-get-symbol-refs.d.ts +6 -8
  303. package/dataflow/origin/dfg-get-symbol-refs.js +7 -9
  304. package/dataflow/processor.d.ts +6 -12
  305. package/dataflow/processor.js +0 -1
  306. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -2
  307. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  308. package/documentation/data/faq/faqs.d.ts +5 -0
  309. package/documentation/data/faq/faqs.js +87 -0
  310. package/documentation/data/faq/recommended-configs.d.ts +36 -0
  311. package/documentation/data/faq/recommended-configs.js +40 -0
  312. package/documentation/data/faq/wiki-faq-store.d.ts +19 -0
  313. package/documentation/data/faq/wiki-faq-store.js +83 -0
  314. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  315. package/documentation/data/server/doc-data-server-messages.js +5 -64
  316. package/documentation/doc-capabilities.d.ts +9 -0
  317. package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
  318. package/documentation/doc-readme.d.ts +9 -0
  319. package/documentation/{print-readme.js → doc-readme.js} +136 -35
  320. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  321. package/documentation/doc-util/doc-auto-gen.js +6 -0
  322. package/documentation/doc-util/doc-benchmarks.d.ts +14 -0
  323. package/documentation/doc-util/doc-benchmarks.js +14 -0
  324. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  325. package/documentation/doc-util/doc-cfg.js +14 -8
  326. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  327. package/documentation/doc-util/doc-cli-option.js +9 -0
  328. package/documentation/doc-util/doc-code.d.ts +24 -0
  329. package/documentation/doc-util/doc-code.js +24 -0
  330. package/documentation/doc-util/doc-dfg.d.ts +12 -6
  331. package/documentation/doc-util/doc-dfg.js +19 -10
  332. package/documentation/doc-util/doc-env.d.ts +3 -0
  333. package/documentation/doc-util/doc-env.js +3 -0
  334. package/documentation/doc-util/doc-escape.d.ts +6 -1
  335. package/documentation/doc-util/doc-escape.js +11 -1
  336. package/documentation/doc-util/doc-files.d.ts +11 -0
  337. package/documentation/doc-util/doc-files.js +15 -4
  338. package/documentation/doc-util/doc-general.d.ts +26 -0
  339. package/documentation/doc-util/doc-general.js +26 -0
  340. package/documentation/doc-util/doc-normalized-ast.d.ts +14 -3
  341. package/documentation/doc-util/doc-normalized-ast.js +16 -7
  342. package/documentation/doc-util/doc-query.d.ts +26 -3
  343. package/documentation/doc-util/doc-query.js +34 -12
  344. package/documentation/doc-util/doc-repl.d.ts +6 -0
  345. package/documentation/doc-util/doc-repl.js +6 -0
  346. package/documentation/doc-util/doc-search.d.ts +3 -18
  347. package/documentation/doc-util/doc-search.js +6 -62
  348. package/documentation/doc-util/doc-server-message.d.ts +18 -6
  349. package/documentation/doc-util/doc-server-message.js +17 -5
  350. package/documentation/doc-util/doc-structure.d.ts +9 -0
  351. package/documentation/doc-util/doc-structure.js +10 -1
  352. package/documentation/doc-util/doc-types.d.ts +90 -11
  353. package/documentation/doc-util/doc-types.js +128 -39
  354. package/documentation/index.d.ts +9 -9
  355. package/documentation/index.js +9 -9
  356. package/documentation/issue-linting-rule.d.ts +9 -0
  357. package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
  358. package/documentation/wiki-analyzer.d.ts +9 -0
  359. package/documentation/wiki-analyzer.js +412 -0
  360. package/documentation/wiki-cfg.d.ts +9 -0
  361. package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
  362. package/documentation/wiki-core.d.ts +14 -0
  363. package/documentation/{print-core-wiki.js → wiki-core.js} +167 -175
  364. package/documentation/wiki-dataflow-graph.d.ts +9 -0
  365. package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +145 -175
  366. package/documentation/wiki-engine.d.ts +9 -0
  367. package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
  368. package/documentation/wiki-faq.d.ts +8 -0
  369. package/documentation/wiki-faq.js +22 -0
  370. package/documentation/wiki-interface.d.ts +9 -0
  371. package/documentation/{print-interface-wiki.js → wiki-interface.js} +60 -57
  372. package/documentation/wiki-linter.d.ts +9 -0
  373. package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
  374. package/documentation/wiki-linting-and-testing.d.ts +9 -0
  375. package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
  376. package/documentation/wiki-mk/doc-context.d.ts +186 -0
  377. package/documentation/wiki-mk/doc-context.js +84 -0
  378. package/documentation/wiki-mk/doc-maker.d.ts +95 -0
  379. package/documentation/wiki-mk/doc-maker.js +133 -0
  380. package/documentation/wiki-normalized-ast.d.ts +9 -0
  381. package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
  382. package/documentation/wiki-onboarding.d.ts +8 -0
  383. package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
  384. package/documentation/wiki-query.d.ts +9 -0
  385. package/documentation/{print-query-wiki.js → wiki-query.js} +65 -80
  386. package/documentation/wiki-search.d.ts +9 -0
  387. package/documentation/wiki-search.js +61 -0
  388. package/engines.d.ts +1 -1
  389. package/linter/linter-executor.d.ts +6 -3
  390. package/linter/linter-executor.js +6 -2
  391. package/linter/linter-format.d.ts +10 -2
  392. package/linter/linter-format.js +8 -0
  393. package/linter/linter-rules.d.ts +13 -17
  394. package/linter/rules/absolute-path.d.ts +4 -6
  395. package/linter/rules/absolute-path.js +2 -2
  396. package/linter/rules/dataframe-access-validation.d.ts +4 -5
  397. package/linter/rules/dataframe-access-validation.js +21 -19
  398. package/linter/rules/dead-code.d.ts +2 -2
  399. package/linter/rules/deprecated-functions.d.ts +2 -6
  400. package/linter/rules/file-path-validity.d.ts +2 -3
  401. package/linter/rules/file-path-validity.js +4 -4
  402. package/linter/rules/function-finder-util.d.ts +2 -7
  403. package/linter/rules/naming-convention.d.ts +15 -4
  404. package/linter/rules/naming-convention.js +14 -2
  405. package/linter/rules/network-functions.d.ts +2 -2
  406. package/linter/rules/network-functions.js +1 -1
  407. package/linter/rules/seeded-randomness.d.ts +4 -4
  408. package/linter/rules/seeded-randomness.js +33 -13
  409. package/linter/rules/unused-definition.d.ts +3 -4
  410. package/linter/rules/useless-loop.d.ts +3 -4
  411. package/linter/rules/useless-loop.js +2 -2
  412. package/package.json +7 -18
  413. package/project/cache/flowr-analyzer-cache.d.ts +9 -19
  414. package/project/cache/flowr-analyzer-cache.js +17 -44
  415. package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
  416. package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
  417. package/project/context/flowr-analyzer-context.d.ts +31 -9
  418. package/project/context/flowr-analyzer-context.js +48 -4
  419. package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
  420. package/project/context/flowr-analyzer-files-context.d.ts +63 -15
  421. package/project/context/flowr-analyzer-files-context.js +110 -39
  422. package/project/context/flowr-file.d.ts +32 -11
  423. package/project/context/flowr-file.js +30 -9
  424. package/project/flowr-analyzer-builder.d.ts +23 -31
  425. package/project/flowr-analyzer-builder.js +35 -74
  426. package/project/flowr-analyzer.d.ts +79 -29
  427. package/project/flowr-analyzer.js +59 -15
  428. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +8 -2
  429. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
  430. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
  431. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
  432. package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -5
  433. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  434. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
  435. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
  436. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
  437. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
  438. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
  439. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
  440. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
  441. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
  442. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
  443. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
  444. package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
  445. package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
  446. package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
  447. package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
  448. package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
  449. package/project/plugins/flowr-analyzer-plugin.js +2 -0
  450. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
  451. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
  452. package/project/plugins/plugin-registry.d.ts +34 -0
  453. package/project/plugins/plugin-registry.js +62 -0
  454. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  455. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
  456. package/queries/base-query-format.d.ts +2 -2
  457. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  458. package/queries/catalog/call-context-query/call-context-query-executor.js +7 -2
  459. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  460. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +16 -4
  461. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +34 -18
  462. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  463. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  464. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  465. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  466. package/queries/catalog/config-query/config-query-executor.js +3 -0
  467. package/queries/catalog/config-query/config-query-format.d.ts +5 -2
  468. package/queries/catalog/config-query/config-query-format.js +13 -16
  469. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  470. package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
  471. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  472. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  473. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  474. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  475. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  476. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  477. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  478. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  479. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  480. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  481. package/queries/catalog/dependencies-query/dependencies-query-format.js +5 -2
  482. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  483. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  484. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  485. package/queries/catalog/df-shape-query/df-shape-query-format.js +25 -5
  486. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +4 -0
  487. package/queries/catalog/happens-before-query/happens-before-query-executor.js +4 -0
  488. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  489. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  490. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  491. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  492. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
  493. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
  494. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
  495. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  496. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  497. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  498. package/queries/catalog/linter-query/linter-query-format.js +80 -2
  499. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  500. package/queries/catalog/location-map-query/location-map-query-executor.js +7 -2
  501. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  502. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  503. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  504. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  505. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  506. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  507. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  508. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  509. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  510. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  511. package/queries/catalog/project-query/project-query-executor.js +6 -1
  512. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  513. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  514. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  515. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  516. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  517. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  518. package/queries/catalog/search-query/search-query-executor.js +3 -0
  519. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  520. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  521. package/queries/catalog/static-slice-query/static-slice-query-executor.js +10 -1
  522. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  523. package/queries/catalog/static-slice-query/static-slice-query-format.js +30 -1
  524. package/queries/query-print.d.ts +20 -4
  525. package/queries/query-print.js +18 -2
  526. package/queries/query.d.ts +93 -55
  527. package/queries/query.js +55 -23
  528. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  529. package/r-bridge/data/get.d.ts +6 -0
  530. package/r-bridge/data/get.js +6 -0
  531. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -2
  532. package/r-bridge/lang-4.x/ast/model/collect.js +4 -1
  533. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  534. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  535. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  536. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  537. package/r-bridge/lang-4.x/ast/model/nodes/r-project.d.ts +29 -0
  538. package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -0
  539. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  540. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  541. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  542. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  543. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +11 -14
  545. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +30 -17
  546. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  547. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  548. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  549. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  550. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  551. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  552. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  553. package/r-bridge/lang-4.x/ast/model/type.d.ts +6 -5
  554. package/r-bridge/lang-4.x/ast/model/type.js +6 -5
  555. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  556. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  557. package/r-bridge/lang-4.x/ast/parser/json/format.js +1 -1
  558. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +12 -12
  559. package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -11
  560. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  561. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  562. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  563. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  564. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  565. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  566. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  567. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  568. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  569. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  570. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  571. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  572. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  573. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  574. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  575. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  576. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  577. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  578. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  579. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  580. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  581. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  582. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  583. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  584. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  585. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  586. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  587. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  588. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  589. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  590. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  591. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  592. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  593. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  594. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.d.ts +4 -3
  595. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
  596. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  597. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  598. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  599. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  600. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  601. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  602. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  603. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  604. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  605. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  606. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  607. package/r-bridge/lang-4.x/convert-values.js +12 -1
  608. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  609. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +18 -0
  610. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +15 -2
  611. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +62 -24
  612. package/r-bridge/parser.d.ts +43 -12
  613. package/r-bridge/parser.js +27 -13
  614. package/r-bridge/retriever.d.ts +25 -16
  615. package/r-bridge/retriever.js +29 -5
  616. package/r-bridge/shell-executor.d.ts +3 -3
  617. package/r-bridge/shell-executor.js +6 -1
  618. package/r-bridge/shell.d.ts +24 -23
  619. package/r-bridge/shell.js +37 -31
  620. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -2
  621. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  622. package/reconstruct/auto-select/magic-comments.js +2 -3
  623. package/reconstruct/reconstruct.d.ts +18 -12
  624. package/reconstruct/reconstruct.js +19 -10
  625. package/search/flowr-search-builder.d.ts +12 -5
  626. package/search/flowr-search-builder.js +7 -2
  627. package/search/flowr-search-executor.d.ts +3 -3
  628. package/search/flowr-search-filters.d.ts +14 -1
  629. package/search/flowr-search-filters.js +13 -0
  630. package/search/flowr-search-printer.d.ts +6 -0
  631. package/search/flowr-search-printer.js +6 -0
  632. package/search/flowr-search-traverse.d.ts +1 -1
  633. package/search/flowr-search.d.ts +15 -3
  634. package/search/search-executor/search-enrichers.d.ts +16 -6
  635. package/search/search-executor/search-enrichers.js +4 -3
  636. package/search/search-executor/search-generators.d.ts +19 -10
  637. package/search/search-executor/search-generators.js +57 -5
  638. package/search/search-executor/search-mappers.d.ts +8 -5
  639. package/search/search-executor/search-mappers.js +3 -0
  640. package/search/search-executor/search-transformer.d.ts +19 -16
  641. package/search/search-executor/search-transformer.js +3 -0
  642. package/slicing/criterion/collect-all.d.ts +13 -12
  643. package/slicing/criterion/collect-all.js +1 -1
  644. package/slicing/criterion/parse.d.ts +4 -2
  645. package/slicing/criterion/parse.js +8 -6
  646. package/slicing/static/fingerprint.d.ts +9 -1
  647. package/slicing/static/fingerprint.js +8 -0
  648. package/slicing/static/slice-call.d.ts +2 -2
  649. package/slicing/static/static-slicer.d.ts +8 -4
  650. package/slicing/static/static-slicer.js +5 -1
  651. package/slicing/static/visiting-queue.d.ts +1 -1
  652. package/statistics/features/common-syntax-probability.d.ts +10 -1
  653. package/statistics/features/common-syntax-probability.js +9 -0
  654. package/statistics/features/feature.d.ts +0 -4
  655. package/statistics/features/feature.js +0 -1
  656. package/statistics/features/post-processing.d.ts +6 -0
  657. package/statistics/features/post-processing.js +6 -0
  658. package/statistics/features/supported/assignments/assignments.js +1 -1
  659. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  660. package/statistics/features/supported/assignments/post-process.js +3 -0
  661. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  662. package/statistics/features/supported/comments/post-process.js +3 -0
  663. package/statistics/features/supported/control-flow/control-flow.js +1 -1
  664. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  665. package/statistics/features/supported/control-flow/post-process.js +3 -0
  666. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  667. package/statistics/features/supported/data-access/data-access.js +1 -1
  668. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  669. package/statistics/features/supported/data-access/post-process.js +3 -0
  670. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  671. package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
  672. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  673. package/statistics/features/supported/expression-list/post-process.js +3 -0
  674. package/statistics/features/supported/expression-list/statistics-expression-list.js +1 -1
  675. package/statistics/features/supported/loops/loops.js +1 -1
  676. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  677. package/statistics/features/supported/loops/post-process.js +3 -0
  678. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  679. package/statistics/features/supported/used-functions/used-functions.js +1 -1
  680. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  681. package/statistics/features/supported/used-packages/post-process.js +3 -0
  682. package/statistics/features/supported/values/post-process.d.ts +3 -0
  683. package/statistics/features/supported/values/post-process.js +3 -0
  684. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  685. package/statistics/features/supported/variables/post-process.js +6 -0
  686. package/statistics/features/supported/variables/variables.js +1 -1
  687. package/statistics/meta-statistics.d.ts +8 -9
  688. package/statistics/output/file-provider.d.ts +5 -6
  689. package/statistics/output/file-provider.js +5 -6
  690. package/statistics/output/print-stats.d.ts +13 -1
  691. package/statistics/output/print-stats.js +12 -0
  692. package/statistics/output/statistics-file.d.ts +1 -2
  693. package/statistics/output/statistics-file.js +0 -1
  694. package/statistics/statistics.d.ts +3 -4
  695. package/statistics/statistics.js +4 -4
  696. package/statistics/summarizer/auto-detect.d.ts +3 -0
  697. package/statistics/summarizer/auto-detect.js +3 -0
  698. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  699. package/statistics/summarizer/post-process/clusterer.js +0 -2
  700. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  701. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  702. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  703. package/statistics/summarizer/post-process/histogram.js +0 -2
  704. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  705. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  706. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  707. package/statistics/summarizer/second-phase/process.js +3 -1
  708. package/statistics/summarizer/summarizer.d.ts +1 -2
  709. package/util/assert.d.ts +56 -2
  710. package/util/assert.js +56 -2
  711. package/util/collections/arrays.d.ts +10 -5
  712. package/util/collections/arrays.js +10 -5
  713. package/util/collections/defaultmap.d.ts +11 -11
  714. package/util/collections/defaultmap.js +11 -11
  715. package/util/containers.d.ts +2 -7
  716. package/util/containers.js +0 -5
  717. package/util/diff-graph.d.ts +0 -1
  718. package/util/diff-graph.js +0 -1
  719. package/util/diff.d.ts +3 -1
  720. package/util/diff.js +3 -1
  721. package/util/files.d.ts +12 -12
  722. package/util/files.js +11 -11
  723. package/util/html-hover-over.d.ts +5 -0
  724. package/util/html-hover-over.js +5 -0
  725. package/util/json.d.ts +13 -0
  726. package/util/json.js +13 -0
  727. package/util/log.d.ts +2 -2
  728. package/util/log.js +2 -2
  729. package/util/mermaid/ast.d.ts +7 -3
  730. package/util/mermaid/ast.js +39 -8
  731. package/util/mermaid/cfg.d.ts +1 -1
  732. package/util/mermaid/cfg.js +1 -1
  733. package/util/mermaid/dfg.d.ts +12 -4
  734. package/util/mermaid/dfg.js +9 -1
  735. package/util/mermaid/mermaid.d.ts +6 -1
  736. package/util/mermaid/mermaid.js +6 -1
  737. package/util/numbers.d.ts +7 -0
  738. package/util/numbers.js +7 -0
  739. package/util/objects.d.ts +0 -2
  740. package/util/os.d.ts +3 -0
  741. package/util/os.js +3 -0
  742. package/util/parallel.d.ts +4 -4
  743. package/util/parallel.js +4 -4
  744. package/util/prefix.d.ts +0 -1
  745. package/util/prefix.js +0 -1
  746. package/util/quads.d.ts +14 -17
  747. package/util/quads.js +3 -5
  748. package/util/r-value.d.ts +10 -1
  749. package/util/r-value.js +21 -0
  750. package/util/random.d.ts +3 -0
  751. package/util/random.js +3 -0
  752. package/util/range.d.ts +9 -3
  753. package/util/range.js +15 -2
  754. package/util/schema.d.ts +14 -1
  755. package/util/schema.js +15 -2
  756. package/util/simple-df/dfg-view.d.ts +4 -1
  757. package/util/simple-df/dfg-view.js +4 -1
  758. package/util/summarizer.d.ts +9 -1
  759. package/util/summarizer.js +9 -0
  760. package/util/text/ansi.d.ts +3 -0
  761. package/util/text/ansi.js +3 -0
  762. package/util/text/args.d.ts +2 -4
  763. package/util/text/args.js +7 -5
  764. package/util/text/text.d.ts +4 -0
  765. package/util/text/text.js +4 -0
  766. package/util/text/time.d.ts +0 -1
  767. package/util/text/time.js +0 -1
  768. package/util/version.d.ts +12 -3
  769. package/util/version.js +12 -3
  770. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  771. package/abstract-interpretation/data-frame/domain.js +0 -315
  772. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  773. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  774. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  775. package/cli/repl/commands/repl-lineage.js +0 -66
  776. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  777. package/cli/repl/server/messages/message-lineage.js +0 -25
  778. package/documentation/print-analyzer-wiki.d.ts +0 -1
  779. package/documentation/print-analyzer-wiki.js +0 -137
  780. package/documentation/print-capabilities-markdown.d.ts +0 -1
  781. package/documentation/print-cfg-wiki.d.ts +0 -1
  782. package/documentation/print-core-wiki.d.ts +0 -2
  783. package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
  784. package/documentation/print-engines-wiki.d.ts +0 -1
  785. package/documentation/print-faq-wiki.d.ts +0 -1
  786. package/documentation/print-faq-wiki.js +0 -90
  787. package/documentation/print-interface-wiki.d.ts +0 -1
  788. package/documentation/print-linter-issue.d.ts +0 -1
  789. package/documentation/print-linter-wiki.d.ts +0 -1
  790. package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
  791. package/documentation/print-normalized-ast-wiki.d.ts +0 -1
  792. package/documentation/print-onboarding-wiki.d.ts +0 -1
  793. package/documentation/print-query-wiki.d.ts +0 -1
  794. package/documentation/print-readme.d.ts +0 -1
  795. package/documentation/print-search-wiki.d.ts +0 -1
  796. package/documentation/print-search-wiki.js +0 -74
  797. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  798. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  799. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  800. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
  801. package/util/formats/adapter-format.d.ts +0 -6
  802. package/util/formats/adapter-format.js +0 -3
  803. package/util/formats/adapter.d.ts +0 -18
  804. package/util/formats/adapter.js +0 -49
  805. package/util/formats/adapters/r-adapter.d.ts +0 -4
  806. package/util/formats/adapters/r-adapter.js +0 -7
  807. package/util/formats/adapters/rmd-adapter.d.ts +0 -26
  808. package/util/formats/adapters/rmd-adapter.js +0 -91
@@ -1,19 +1,40 @@
1
- import type { RParseRequest, RParseRequests } from './retriever';
2
- import type { RShell } from './shell';
1
+ import type { RParseRequestFromText } from './retriever';
2
+ import type { OutputCollectorConfiguration, RShell } from './shell';
3
3
  import type { RShellExecutor } from './shell-executor';
4
4
  import type { TreeSitterExecutor } from './lang-4.x/tree-sitter/tree-sitter-executor';
5
+ import type { Query, QueryCapture } from 'web-tree-sitter';
6
+ import type { FlowrAnalysisProvider } from '../project/flowr-analyzer';
7
+ import type { FlowrAnalyzerContext } from '../project/context/flowr-analyzer-context';
5
8
  interface ParserContent<T> {
6
9
  readonly name: string;
7
- rVersion(): Promise<string | 'unknown' | 'none'>;
8
- parse(request: RParseRequest): T;
10
+ information(analyzer: FlowrAnalysisProvider): BaseParserInformation;
11
+ parse(request: RParseRequestFromText): T;
9
12
  close(): void;
10
13
  }
11
- export interface TreeSitterInformation {
12
- name: TreeSitterExecutor['name'];
14
+ export interface BaseParserInformation {
15
+ readonly name: KnownParserName;
13
16
  }
14
- export interface RShellInformation {
15
- name: RShell['name'];
16
- rVersion: string;
17
+ export interface BaseRShellInformation extends BaseParserInformation {
18
+ readonly name: 'r-shell';
19
+ rVersion(): Promise<string>;
20
+ }
21
+ export interface RShellInformation extends BaseRShellInformation {
22
+ /**
23
+ * Sends a command to the underlying R engine and collects the output.
24
+ * @param command - The command to send to the R engine.
25
+ * @param addonConfig - Additional configuration for the output collector.
26
+ */
27
+ sendCommandWithOutput(command: string, addonConfig?: Partial<OutputCollectorConfiguration>): Promise<string[]>;
28
+ }
29
+ export interface TreeSitterInformation extends BaseParserInformation {
30
+ readonly name: 'tree-sitter';
31
+ readonly grammarVersion: number;
32
+ /**
33
+ * Runs the given tree-sitter query using the underlying tree-sitter parser and returns the resulting capture.
34
+ * @param source - The tree-sitter query to run.
35
+ * @param force - Do not use the cache, instead force a new parse.
36
+ */
37
+ treeSitterQuery(source: Query | string, force?: boolean): Promise<QueryCapture[]>;
17
38
  }
18
39
  export type SyncParser<T> = ParserContent<Awaited<T>> & {
19
40
  readonly async?: false;
@@ -24,26 +45,36 @@ export type AsyncParser<T> = ParserContent<Promise<T>> & {
24
45
  export type Parser<T> = SyncParser<T> | AsyncParser<T>;
25
46
  export type KnownParser = RShell | RShellExecutor | TreeSitterExecutor;
26
47
  export type KnownParserType = Awaited<ReturnType<KnownParser['parse']>>;
48
+ export type KnownParserInformation = ReturnType<KnownParser['information']>;
27
49
  export type KnownParserName = KnownParser['name'];
28
50
  export interface ParseRequiredInput<T> {
29
51
  /** This is the {@link RShell}, {@link RShellExecutor} or {@link TreeSitterExecutor} connection to be used to obtain the original parses AST of the R code */
30
52
  readonly parser: Parser<T>;
31
- /** The request which essentially indicates the input to extract the AST from */
32
- readonly request: RParseRequests;
53
+ /**
54
+ * The context from which to derive the requests from,
55
+ * please either relay on the {@link FlowrAnalyzer}
56
+ * or construct one with {@link contextFromInput}
57
+ */
58
+ readonly context: FlowrAnalyzerContext;
33
59
  }
34
- export interface ParseStepOutput<T> {
60
+ export interface ParseStepOutputSingleFile<T> {
35
61
  /** The parsed AST of the R code as given by the R parse side */
36
62
  readonly parsed: T;
63
+ readonly filePath: string | undefined;
37
64
  /** Additional meta information about the parse */
38
65
  readonly '.parse-meta'?: {
39
66
  /** The number of tokens in the AST */
40
67
  readonly tokenCount: number;
41
68
  };
42
69
  }
70
+ export interface ParseStepOutput<T> {
71
+ readonly files: ParseStepOutputSingleFile<T>[];
72
+ }
43
73
  /**
44
74
  * Takes an input program and parses it using the given parser.
45
75
  * @param _results - just a proxy for the pipeline, signifies that this function does not need prior knowledge of the pipeline
46
76
  * @param input - the input to the parse step
77
+ * @returns The parsed AST per request in the loading order obtained from the {@link FlowrAnalyzerFilesContext|files context} of the given {@link FlowrAnalyzerContext}.
47
78
  */
48
79
  export declare function parseRequests<T extends KnownParserType>(_results: unknown, input: Partial<ParseRequiredInput<T>>): Promise<ParseStepOutput<T>>;
49
80
  export {};
@@ -12,26 +12,40 @@ function countChildren(node) {
12
12
  * Takes an input program and parses it using the given parser.
13
13
  * @param _results - just a proxy for the pipeline, signifies that this function does not need prior knowledge of the pipeline
14
14
  * @param input - the input to the parse step
15
+ * @returns The parsed AST per request in the loading order obtained from the {@link FlowrAnalyzerFilesContext|files context} of the given {@link FlowrAnalyzerContext}.
15
16
  */
16
17
  async function parseRequests(_results, input) {
18
+ const loadingOrder = input.context.files.loadingOrder.getLoadingOrder();
17
19
  /* in the future, we want to expose all cases */
18
- const request = (Array.isArray(input.request) ? input.request[0] : input.request);
20
+ const translatedRequests = loadingOrder.map(r => input.context.files.resolveRequest(r));
19
21
  if (input.parser?.async) {
20
- const parsed = await input.parser.parse(request);
21
- return {
22
- parsed,
23
- '.parse-meta': typeof parsed === 'object' && 'rootNode' in parsed ? {
24
- tokenCount: countChildren(parsed.rootNode),
25
- } : undefined
26
- };
22
+ /* sadly we cannot Promise.all with the Rshell as it has to process commands in order and is not thread safe */
23
+ const files = [];
24
+ for (const req of translatedRequests) {
25
+ const parsed = await (input.parser).parse(req.r);
26
+ files.push({
27
+ parsed,
28
+ filePath: req.path,
29
+ '.parse-meta': typeof parsed === 'object' && 'rootNode' in parsed ? {
30
+ tokenCount: countChildren(parsed.rootNode),
31
+ } : undefined
32
+ });
33
+ }
34
+ return { files };
27
35
  }
28
36
  else {
29
- const parsed = input.parser.parse(request);
37
+ const p = input.parser;
30
38
  return {
31
- parsed,
32
- '.parse-meta': typeof parsed === 'object' && 'rootNode' in parsed ? {
33
- tokenCount: countChildren(parsed.rootNode),
34
- } : undefined
39
+ files: translatedRequests.map(r => {
40
+ const parsed = p.parse(r.r);
41
+ return {
42
+ parsed,
43
+ filePath: r.path,
44
+ '.parse-meta': typeof parsed === 'object' && 'rootNode' in parsed ? {
45
+ tokenCount: countChildren(parsed.rootNode),
46
+ } : undefined
47
+ };
48
+ })
35
49
  };
36
50
  }
37
51
  }
@@ -1,25 +1,22 @@
1
1
  import { type RShell } from './shell';
2
2
  import type { AsyncOrSync } from 'ts-essentials';
3
3
  import { RShellExecutor } from './shell-executor';
4
- import type { NormalizedAst } from './lang-4.x/ast/model/processing/decorate';
5
- import type { SupportedFormats } from '../util/formats/adapter-format';
4
+ import { type NormalizedAst } from './lang-4.x/ast/model/processing/decorate';
6
5
  export declare const fileProtocol = "file://";
7
- export interface ParseRequestAdditionalInfoBase {
8
- type: SupportedFormats;
9
- }
10
- export interface RParseRequestFromFile<AdditionalInfo extends ParseRequestAdditionalInfoBase = ParseRequestAdditionalInfoBase> {
6
+ export interface RParseRequestFromFile {
11
7
  readonly request: 'file';
12
8
  /**
13
- * The path to the file (an absolute path is probably best here).
9
+ * The path to the file represented in the {@link FlowrAnalyzerFilesContext}.
14
10
  * See {@link RParseRequests} for multiple files.
15
11
  */
16
12
  readonly content: string;
17
- /**
18
- * Additional info from different file formates like .Rmd
19
- */
20
- readonly info?: AdditionalInfo;
21
13
  }
22
- export interface RParseRequestFromText<AdditionalInfo extends ParseRequestAdditionalInfoBase = ParseRequestAdditionalInfoBase> {
14
+ /**
15
+ * A request to parse R code given as text.
16
+ * This option is mostly useful for quick tests or injects, as usually files are controlled by the {@link RParseRequestFromFile} request
17
+ * referring to a file in the {@link FlowrAnalyzerFilesContext}.
18
+ */
19
+ export interface RParseRequestFromText {
23
20
  readonly request: 'text';
24
21
  /**
25
22
  * Source code to parse (not a file path).
@@ -28,10 +25,6 @@ export interface RParseRequestFromText<AdditionalInfo extends ParseRequestAdditi
28
25
  * or concatenate their contents to pass them with this request.
29
26
  */
30
27
  readonly content: string;
31
- /**
32
- * Additional info from different file formates like .Rmd
33
- */
34
- readonly info?: AdditionalInfo;
35
28
  }
36
29
  /**
37
30
  * A provider for an {@link RParseRequests} that can be used, for example, to override source file parsing behavior in tests
@@ -46,15 +39,30 @@ export type RParseRequest = RParseRequestFromFile | RParseRequestFromText;
46
39
  * Several requests that can be passed along to {@link retrieveParseDataFromRCode}.
47
40
  */
48
41
  export type RParseRequests = RParseRequest | ReadonlyArray<RParseRequest>;
42
+ /**
43
+ * Type guard for {@link RParseRequest}
44
+ */
49
45
  export declare function isParseRequest(request: unknown): request is RParseRequest;
50
46
  export declare function requestFromInput(input: `${typeof fileProtocol}${string}`): RParseRequestFromFile;
51
47
  export declare function requestFromInput(input: `${typeof fileProtocol}${string}`[]): RParseRequestFromFile[];
52
48
  export declare function requestFromInput(input: string): RParseRequestFromText;
53
49
  export declare function requestFromInput(input: readonly string[] | string): RParseRequests;
50
+ /**
51
+ * Creates a {@link RParseRequestProvider} that reads from the file system.
52
+ * Uses `fs.existsSync` to check for file existence.
53
+ * @see {@link requestProviderFromText} for a provider that reads from a text map.
54
+ */
54
55
  export declare function requestProviderFromFile(): RParseRequestProvider;
56
+ /**
57
+ * Creates a {@link RParseRequestProvider} that reads from the given text map.
58
+ * @see {@link requestProviderFromFile} for a provider that reads from the file system.
59
+ */
55
60
  export declare function requestProviderFromText(text: Readonly<{
56
61
  [path: string]: string;
57
62
  }>): RParseRequestProvider;
63
+ /**
64
+ * Checks whether the given {@link RParseRequest} is empty (has no content).
65
+ */
58
66
  export declare function isEmptyRequest(request: RParseRequest): boolean;
59
67
  export declare function retrieveParseDataFromRCode(request: RParseRequest, shell: RShell): Promise<string>;
60
68
  export declare function retrieveParseDataFromRCode(request: RParseRequest, shell: RShellExecutor): string;
@@ -62,6 +70,7 @@ export declare function retrieveParseDataFromRCode(request: RParseRequest, shell
62
70
  /**
63
71
  * Uses {@link retrieveParseDataFromRCode} and returns the nicely formatted object-AST.
64
72
  * If successful, allows further querying the last result with {@link retrieveNumberOfRTokensOfLastParse}.
73
+ * This function is outdated and should only be used for legacy reasons. Please use the {@link FlowrAnalyzer} instead.
65
74
  */
66
75
  export declare function retrieveNormalizedAstFromRCode(request: RParseRequest, shell: RShell): Promise<NormalizedAst>;
67
76
  /**
@@ -23,8 +23,10 @@ const decorate_1 = require("./lang-4.x/ast/model/processing/decorate");
23
23
  const type_1 = require("./lang-4.x/ast/model/type");
24
24
  const fs_1 = __importDefault(require("fs"));
25
25
  const path_1 = __importDefault(require("path"));
26
- const adapter_1 = require("../util/formats/adapter");
27
26
  exports.fileProtocol = 'file://';
27
+ /**
28
+ * Type guard for {@link RParseRequest}
29
+ */
28
30
  function isParseRequest(request) {
29
31
  if (typeof request !== 'object' || request === null) {
30
32
  return false;
@@ -36,20 +38,32 @@ function isParseRequest(request) {
36
38
  * If your input starts with {@link fileProtocol}, it is assumed to be a file path and will be processed as such.
37
39
  * Giving an array, you can mix file paths and text content (again using the {@link fileProtocol}).
38
40
  *
41
+ * To obtain a {@link FlowrAnalyzerContext} from such an input, use {@link contextFromInput}.
39
42
  */
40
- function requestFromInput(input, fileTypeHint) {
43
+ function requestFromInput(input) {
41
44
  if (Array.isArray(input)) {
42
45
  return input.flatMap(requestFromInput);
43
46
  }
44
47
  const content = input;
45
48
  const file = content.startsWith(exports.fileProtocol);
46
49
  if (file) {
47
- return (0, adapter_1.requestFromFile)(content.slice(7));
50
+ return {
51
+ request: 'file',
52
+ content: content.substring(exports.fileProtocol.length),
53
+ };
48
54
  }
49
55
  else {
50
- return (0, adapter_1.requestFromText)(content, fileTypeHint);
56
+ return {
57
+ request: 'text',
58
+ content
59
+ };
51
60
  }
52
61
  }
62
+ /**
63
+ * Creates a {@link RParseRequestProvider} that reads from the file system.
64
+ * Uses `fs.existsSync` to check for file existence.
65
+ * @see {@link requestProviderFromText} for a provider that reads from a text map.
66
+ */
53
67
  function requestProviderFromFile() {
54
68
  return {
55
69
  exists(p, ignoreCase) {
@@ -76,6 +90,10 @@ function requestProviderFromFile() {
76
90
  }
77
91
  };
78
92
  }
93
+ /**
94
+ * Creates a {@link RParseRequestProvider} that reads from the given text map.
95
+ * @see {@link requestProviderFromFile} for a provider that reads from the file system.
96
+ */
79
97
  function requestProviderFromText(text) {
80
98
  return {
81
99
  exists(path, ignoreCase) {
@@ -92,6 +110,9 @@ function requestProviderFromText(text) {
92
110
  }
93
111
  };
94
112
  }
113
+ /**
114
+ * Checks whether the given {@link RParseRequest} is empty (has no content).
115
+ */
95
116
  function isEmptyRequest(request) {
96
117
  return request.content.trim().length === 0;
97
118
  }
@@ -119,10 +140,13 @@ function retrieveParseDataFromRCode(request, shell) {
119
140
  /**
120
141
  * Uses {@link retrieveParseDataFromRCode} and returns the nicely formatted object-AST.
121
142
  * If successful, allows further querying the last result with {@link retrieveNumberOfRTokensOfLastParse}.
143
+ * This function is outdated and should only be used for legacy reasons. Please use the {@link FlowrAnalyzer} instead.
122
144
  */
123
145
  async function retrieveNormalizedAstFromRCode(request, shell) {
124
146
  const data = await retrieveParseDataFromRCode(request, shell);
125
- return (0, parser_1.normalize)({ parsed: data }, (0, decorate_1.deterministicCountingIdGenerator)(0), request.request === 'file' ? request.content : undefined);
147
+ return (0, parser_1.normalize)({
148
+ files: [{ parsed: data, filePath: request.request === 'file' ? request.content : undefined }]
149
+ }, (0, decorate_1.deterministicCountingIdGenerator)(0));
126
150
  }
127
151
  /**
128
152
  * If the string has (R-)quotes around it, they will be removed; otherwise the string is returned unchanged.
@@ -1,6 +1,6 @@
1
- import type { RShellExecutionOptions } from './shell';
1
+ import { type RShellExecutionOptions } from './shell';
2
2
  import type { SemVer } from 'semver';
3
- import type { SyncParser } from './parser';
3
+ import type { BaseRShellInformation, SyncParser } from './parser';
4
4
  import { type RParseRequest } from './retriever';
5
5
  /**
6
6
  * This is a synchronous alternative to the {@link RShell}.
@@ -23,12 +23,12 @@ export declare class RShellExecutor implements SyncParser<string> {
23
23
  addPrerequisites(commands: string | string[]): this;
24
24
  /**
25
25
  * @returns the version of the R interpreter available to this executor.
26
- *
27
26
  * @see {@link RShellExecutor#usedRVersion}
28
27
  * @see {@link RShell#rVersion}
29
28
  * @see {@link RShell#usedRVersion}
30
29
  */
31
30
  rVersion(): Promise<string | 'unknown' | 'none'>;
31
+ information(): BaseRShellInformation;
32
32
  /**
33
33
  * Instead of returning a promise, this method returns the version of the R interpreter available to this executor,
34
34
  * in the SemVer format.
@@ -40,7 +40,6 @@ class RShellExecutor {
40
40
  }
41
41
  /**
42
42
  * @returns the version of the R interpreter available to this executor.
43
- *
44
43
  * @see {@link RShellExecutor#usedRVersion}
45
44
  * @see {@link RShell#rVersion}
46
45
  * @see {@link RShell#usedRVersion}
@@ -48,6 +47,12 @@ class RShellExecutor {
48
47
  rVersion() {
49
48
  return Promise.resolve(this.usedRVersion()?.format() ?? 'unknown');
50
49
  }
50
+ information() {
51
+ return {
52
+ name: 'r-shell',
53
+ rVersion: () => Promise.resolve(this.rVersion())
54
+ };
55
+ }
51
56
  /**
52
57
  * Instead of returning a promise, this method returns the version of the R interpreter available to this executor,
53
58
  * in the SemVer format.
@@ -2,13 +2,13 @@ import { type MergeableRecord } from '../util/objects';
2
2
  import type { SemVer } from 'semver';
3
3
  import type { AsyncOrSync } from 'ts-essentials';
4
4
  import type { RShellEngineConfig } from '../config';
5
- import type { AsyncParser } from './parser';
6
- import type { RParseRequest } from './retriever';
5
+ import type { AsyncParser, RShellInformation } from './parser';
6
+ import { type RParseRequest } from './retriever';
7
7
  export type OutputStreamSelector = 'stdout' | 'stderr' | 'both';
8
8
  export interface CollectorTimeout extends MergeableRecord {
9
9
  /**
10
- * number of milliseconds to wait for the collection to finish
11
- */
10
+ * number of milliseconds to wait for the collection to finish
11
+ */
12
12
  ms: number;
13
13
  resetOnNewData: boolean;
14
14
  /**
@@ -24,9 +24,9 @@ export interface OutputCollectorConfiguration extends MergeableRecord {
24
24
  /** the streams to use to collect the output from */
25
25
  from: OutputStreamSelector;
26
26
  /**
27
- * a string marker to signal that the command was executed successfully.
28
- * must not appear as a standalone line in the output. this is our hacky way of ensuring that we are done.
29
- */
27
+ * a string marker to signal that the command was executed successfully.
28
+ * must not appear as a standalone line in the output. this is our hacky way of ensuring that we are done.
29
+ */
30
30
  postamble: string;
31
31
  /** internal timeout configuration to use (see {@link CollectorTimeout}) */
32
32
  timeout: CollectorTimeout;
@@ -69,6 +69,9 @@ export interface RShellOptions extends RShellSessionOptions {
69
69
  readonly sessionName: string;
70
70
  }
71
71
  export declare const DEFAULT_R_PATH: string;
72
+ /**
73
+ * Get the default RShell options, possibly using the given config to override some values
74
+ */
72
75
  export declare function getDefaultRShellOptions(config?: RShellEngineConfig): RShellOptions;
73
76
  /**
74
77
  * The `RShell` represents an interactive session with the R interpreter.
@@ -88,6 +91,7 @@ export declare class RShell implements AsyncParser<string> {
88
91
  private tempDirs;
89
92
  constructor(config?: RShellEngineConfig, options?: Partial<RShellOptions>);
90
93
  parse(request: RParseRequest): Promise<string>;
94
+ information(): RShellInformation;
91
95
  private revive;
92
96
  /**
93
97
  * sends the given command directly to the current R session
@@ -103,22 +107,20 @@ export declare class RShell implements AsyncParser<string> {
103
107
  */
104
108
  isPackageInstalled(packageName: string): Promise<boolean>;
105
109
  /**
106
- * Send a command and collect the output
107
- *
108
- * @param command - The R command to execute (similar to {@link sendCommand})
109
- * @param addonConfig - Further configuration on how and what to collect: see {@link OutputCollectorConfiguration},
110
- * defaults are set in {@link DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION}
111
- */
110
+ * Send a command and collect the output
111
+ * @param command - The R command to execute (similar to {@link sendCommand})
112
+ * @param addonConfig - Further configuration on how and what to collect: see {@link OutputCollectorConfiguration},
113
+ * defaults are set in {@link DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION}
114
+ */
112
115
  sendCommandWithOutput(command: string, addonConfig?: Partial<OutputCollectorConfiguration>): Promise<string[]>;
113
116
  /**
114
- * execute multiple commands in order
115
- *
116
- * @see sendCommand
117
- */
117
+ * execute multiple commands in order
118
+ * @see sendCommand
119
+ */
118
120
  sendCommands(...commands: readonly string[]): void;
119
121
  /**
120
- * clears the R environment using the `rm` command.
121
- */
122
+ * clears the R environment using the `rm` command.
123
+ */
122
124
  clearEnvironment(): void;
123
125
  /**
124
126
  * Obtain the temporary directory used by R.
@@ -126,10 +128,9 @@ export declare class RShell implements AsyncParser<string> {
126
128
  */
127
129
  obtainTmpDir(): Promise<string>;
128
130
  /**
129
- * Close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
130
- *
131
- * @returns true if the operation succeeds, false otherwise
132
- */
131
+ * Close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
132
+ * @returns true if the operation succeeds, false otherwise
133
+ */
133
134
  close(): boolean;
134
135
  private _sendCommand;
135
136
  }
package/r-bridge/shell.js CHANGED
@@ -61,6 +61,9 @@ exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION = {
61
61
  };
62
62
  exports.DEFAULT_R_PATH = (0, os_1.getPlatform)() === 'windows' ? 'R.exe' : 'R';
63
63
  let DEFAULT_R_SHELL_OPTIONS = undefined;
64
+ /**
65
+ * Get the default RShell options, possibly using the given config to override some values
66
+ */
64
67
  function getDefaultRShellOptions(config) {
65
68
  if (!DEFAULT_R_SHELL_OPTIONS) {
66
69
  DEFAULT_R_SHELL_OPTIONS = {
@@ -105,6 +108,15 @@ class RShell {
105
108
  parse(request) {
106
109
  return (0, retriever_1.retrieveParseDataFromRCode)(request, this);
107
110
  }
111
+ information() {
112
+ return {
113
+ name: 'r-shell',
114
+ rVersion: async () => await this.rVersion(),
115
+ sendCommandWithOutput: (command, addonConfig) => {
116
+ return this.sendCommandWithOutput(command, addonConfig);
117
+ }
118
+ };
119
+ }
108
120
  revive() {
109
121
  if (this.options.revive === 0 /* RShellReviveOptions.Never */) {
110
122
  return;
@@ -177,12 +189,11 @@ class RShell {
177
189
  return result.length === 1 && result[0] === 'TRUE';
178
190
  }
179
191
  /**
180
- * Send a command and collect the output
181
- *
182
- * @param command - The R command to execute (similar to {@link sendCommand})
183
- * @param addonConfig - Further configuration on how and what to collect: see {@link OutputCollectorConfiguration},
184
- * defaults are set in {@link DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION}
185
- */
192
+ * Send a command and collect the output
193
+ * @param command - The R command to execute (similar to {@link sendCommand})
194
+ * @param addonConfig - Further configuration on how and what to collect: see {@link OutputCollectorConfiguration},
195
+ * defaults are set in {@link DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION}
196
+ */
186
197
  async sendCommandWithOutput(command, addonConfig) {
187
198
  const config = (0, objects_1.deepMergeObject)(exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION, addonConfig);
188
199
  (0, log_1.expensiveTrace)(this.log, () => `> ${JSON.stringify(command)}`);
@@ -206,18 +217,17 @@ class RShell {
206
217
  }
207
218
  }
208
219
  /**
209
- * execute multiple commands in order
210
- *
211
- * @see sendCommand
212
- */
220
+ * execute multiple commands in order
221
+ * @see sendCommand
222
+ */
213
223
  sendCommands(...commands) {
214
224
  for (const element of commands) {
215
225
  this.sendCommand(element);
216
226
  }
217
227
  }
218
228
  /**
219
- * clears the R environment using the `rm` command.
220
- */
229
+ * clears the R environment using the `rm` command.
230
+ */
221
231
  clearEnvironment() {
222
232
  this.log.debug('clearing environment');
223
233
  // run rm(list=ls()) but ignore 'flowr_get_ast', which is the compile command installed
@@ -234,10 +244,9 @@ class RShell {
234
244
  return tempdir;
235
245
  }
236
246
  /**
237
- * Close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
238
- *
239
- * @returns true if the operation succeeds, false otherwise
240
- */
247
+ * Close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
248
+ * @returns true if the operation succeeds, false otherwise
249
+ */
241
250
  close() {
242
251
  return this.session.end([...this.tempDirs]);
243
252
  }
@@ -294,15 +303,14 @@ class RShellSession {
294
303
  this.write(`${data}${this.options.eol}`);
295
304
  }
296
305
  /**
297
- * Collect lines from the selected streams until the given condition is met or the timeout is reached
298
- *
299
- * This method does allow other listeners to consume the same input
300
- *
301
- * @param from - The stream(s) to collect the information from
302
- * @param until - If the predicate returns true, this will stop the collection and resolve the promise
303
- * @param timeout - Configuration for how and when to timeout
304
- * @param action - Event to be performed after all listeners are installed, this might be the action that triggers the output you want to collect
305
- */
306
+ * Collect lines from the selected streams until the given condition is met or the timeout is reached
307
+ *
308
+ * This method does allow other listeners to consume the same input
309
+ * @param from - The stream(s) to collect the information from
310
+ * @param until - If the predicate returns true, this will stop the collection and resolve the promise
311
+ * @param timeout - Configuration for how and when to timeout
312
+ * @param action - Event to be performed after all listeners are installed, this might be the action that triggers the output you want to collect
313
+ */
306
314
  async collectLinesUntil(from, until, timeout, action) {
307
315
  const result = [];
308
316
  let handler;
@@ -344,13 +352,11 @@ class RShellSession {
344
352
  });
345
353
  }
346
354
  /**
347
- * close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
348
- *
355
+ * close the current R session, makes the object effectively invalid (can no longer be reopened etc.)
349
356
  * @param filesToUnlink - If set, these files will be unlinked before closing the session (e.g., to clean up tempfiles)
350
- *
351
- * @returns true if the kill succeeds, false otherwise
352
- * @see RShell#close
353
- */
357
+ * @returns true if the kill succeeds, false otherwise
358
+ * @see RShell#close
359
+ */
354
360
  end(filesToUnlink) {
355
361
  if (filesToUnlink !== undefined) {
356
362
  log_1.log.info(`unlinking ${filesToUnlink.length} files (${JSON.stringify(filesToUnlink)})`);
@@ -4,10 +4,8 @@ import type { ParentInformation, NormalizedAst } from '../../r-bridge/lang-4.x/a
4
4
  * The structure of the predicate that should be used to determine
5
5
  * if a given normalized node should be included in the reconstructed code,
6
6
  * independent of if it is selected by the slice or not.
7
- *
8
7
  * @see reconstructToCode
9
8
  * @see doNotAutoSelect
10
- * @see autoSelectLibrary
11
9
  */
12
10
  export type AutoSelectPredicate = (node: RNode<ParentInformation>, fullAst: NormalizedAst) => boolean;
13
11
  /**
@@ -7,10 +7,9 @@ import type { AutoSelectPredicate } from './auto-select-defaults';
7
7
  * We support two formats:
8
8
  * - Line comments in the form of `# flowr@include_next_line` or `# flowr@include_this_line`.
9
9
  * - Block comments which start with `# flowr@include_start` and end with `# flowr@include_end`.
10
- * This supports nesting, but they have to appear on a single line.
10
+ * This supports nesting, but they have to appear on a single line.
11
11
  *
12
12
  * Please note that these comments have to start exactly with this content to work.
13
- *
14
13
  * @param and - Predicate to composite this one with, If you do not pass a predicate, you may assume composition with
15
14
  * {@link doNotAutoSelect}.
16
15
  */
@@ -40,10 +40,9 @@ const commentTriggerRegex = / flowr@(\w+)/;
40
40
  * We support two formats:
41
41
  * - Line comments in the form of `# flowr@include_next_line` or `# flowr@include_this_line`.
42
42
  * - Block comments which start with `# flowr@include_start` and end with `# flowr@include_end`.
43
- * This supports nesting, but they have to appear on a single line.
43
+ * This supports nesting, but they have to appear on a single line.
44
44
  *
45
45
  * Please note that these comments have to start exactly with this content to work.
46
- *
47
46
  * @param and - Predicate to composite this one with, If you do not pass a predicate, you may assume composition with
48
47
  * {@link doNotAutoSelect}.
49
48
  */
@@ -53,7 +52,7 @@ function makeMagicCommentHandler(and) {
53
52
  if (!lines) {
54
53
  lines = new Set();
55
54
  const startLineStack = [];
56
- (0, visitor_1.visitAst)(normalizedAst.ast, n => {
55
+ (0, visitor_1.visitAst)(normalizedAst.ast.files.map(f => f.root), n => {
57
56
  const comments = n.info.additionalTokens;
58
57
  if (!comments) {
59
58
  return;