@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,9 +1,8 @@
1
- import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
1
+ import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
2
2
  import type { FlowrSearchElements } from '../../search/flowr-search';
3
3
  import { type MergeableRecord } from '../../util/objects';
4
4
  import { type SourceRange } from '../../util/range';
5
- import type { LintingResult } from '../linter-format';
6
- import { LintingRuleCertainty } from '../linter-format';
5
+ import { type LintingResult, LintingRuleCertainty } from '../linter-format';
7
6
  import { LintingRuleTag } from '../linter-tags';
8
7
  export interface DataFrameAccessValidationResult extends LintingResult {
9
8
  /** The type of the data frame access ("column" or "row") */
@@ -32,7 +31,7 @@ export interface DataFrameAccessValidationMetadata extends MergeableRecord {
32
31
  export declare const DATA_FRAME_ACCESS_VALIDATION: {
33
32
  readonly createSearch: () => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with"], ParentInformation, Promise<FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>>>;
34
33
  readonly processSearchResult: (elements: FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>, config: DataFrameAccessValidationConfig, data: {
35
- normalize: NormalizedAst;
34
+ normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
36
35
  dataflow: import("../../dataflow/info").DataflowInformation;
37
36
  cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
38
37
  config: import("../../config").FlowrConfigOptions;
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DATA_FRAME_ACCESS_VALIDATION = void 0;
4
4
  const absint_info_1 = require("../../abstract-interpretation/data-frame/absint-info");
5
- const domain_1 = require("../../abstract-interpretation/data-frame/domain");
6
5
  const shape_inference_1 = require("../../abstract-interpretation/data-frame/shape-inference");
6
+ const satisfiable_domain_1 = require("../../abstract-interpretation/domains/satisfiable-domain");
7
7
  const config_1 = require("../../config");
8
8
  const extract_cfg_1 = require("../../control-flow/extract-cfg");
9
9
  const type_1 = require("../../r-bridge/lang-4.x/ast/model/type");
10
10
  const flowr_search_builder_1 = require("../../search/flowr-search-builder");
11
11
  const search_enrichers_1 = require("../../search/search-executor/search-enrichers");
12
+ const logic_1 = require("../../util/logic");
12
13
  const dfg_1 = require("../../util/mermaid/dfg");
13
14
  const range_1 = require("../../util/range");
14
15
  const linter_format_1 = require("../linter-format");
@@ -24,7 +25,7 @@ exports.DATA_FRAME_ACCESS_VALIDATION = {
24
25
  });
25
26
  const cfg = (0, extract_cfg_1.extractCfg)(data.normalize, flowrConfig, data.dataflow.graph);
26
27
  (0, shape_inference_1.inferDataFrameShapes)(cfg, data.dataflow.graph, data.normalize, flowrConfig);
27
- const accessOperations = getAccessOperations(elements, data.normalize);
28
+ const accessOperations = getAccessOperations(elements);
28
29
  const accesses = [];
29
30
  for (const [nodeId, operations] of accessOperations) {
30
31
  const access = { nodeId };
@@ -84,12 +85,9 @@ exports.DATA_FRAME_ACCESS_VALIDATION = {
84
85
  defaultConfig: { readLoadedData: false }
85
86
  }
86
87
  };
87
- function getAccessOperations(elements, normalize) {
88
- const nodes = elements.getElements().map(element => {
89
- const id = element.node.info.id;
90
- return normalize.idMap.get(id);
91
- }).filter(n => n !== undefined);
92
- return new Map(nodes
88
+ function getAccessOperations(elements) {
89
+ return new Map(elements.getElements()
90
+ .map(element => element.node)
93
91
  .filter(absint_info_1.hasDataFrameExpressionInfo)
94
92
  .map(node => [node.info.id, node.info.dataFrame.operations
95
93
  .filter(({ operation }) => operation === 'accessCols' || operation === 'accessRows')
@@ -101,15 +99,15 @@ function findInvalidDataFrameAccesses({ operandShape, accessedCols, accessedRows
101
99
  const invalidAccesses = [];
102
100
  if (operandShape !== undefined) {
103
101
  for (const row of accessedRows ?? []) {
104
- if (!(0, domain_1.satisfiesLeqInterval)(operandShape.rows, row)) {
102
+ if (operandShape.rows.satisfies(row, satisfiable_domain_1.NumericalComparator.LessOrEqual) === logic_1.Ternary.Never) {
105
103
  invalidAccesses.push({ type: 'row', accessed: row });
106
104
  }
107
105
  }
108
106
  for (const col of accessedCols ?? []) {
109
- if (typeof col === 'string' && !(0, domain_1.satisfiesColsNames)(operandShape.colnames, col)) {
107
+ if (typeof col === 'string' && operandShape.colnames.satisfies([col], satisfiable_domain_1.SetComparator.SubsetOrEqual) === logic_1.Ternary.Never) {
110
108
  invalidAccesses.push({ type: 'column', accessed: col });
111
109
  }
112
- else if (typeof col === 'number' && !(0, domain_1.satisfiesLeqInterval)(operandShape.cols, col)) {
110
+ else if (typeof col === 'number' && operandShape.cols.satisfies(col, satisfiable_domain_1.NumericalComparator.LessOrEqual) === logic_1.Ternary.Never) {
113
111
  invalidAccesses.push({ type: 'column', accessed: col });
114
112
  }
115
113
  }
@@ -1,5 +1,5 @@
1
1
  import { LintingResultCertainty, type LintingResult, LintingRuleCertainty } from '../linter-format';
2
- import type { SourceRange } from '../../util/range';
2
+ import { type SourceRange } from '../../util/range';
3
3
  import type { MergeableRecord } from '../../util/objects';
4
4
  import { LintingRuleTag } from '../linter-tags';
5
5
  import { type CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
@@ -1,6 +1,6 @@
1
1
  import { LintingRuleCertainty } from '../linter-format';
2
2
  import { LintingRuleTag } from '../linter-tags';
3
- import type { FunctionsMetadata, FunctionsResult, FunctionsToDetectConfig } from './function-finder-util';
3
+ import { type FunctionsMetadata, type FunctionsResult, type FunctionsToDetectConfig } from './function-finder-util';
4
4
  export declare const DEPRECATED_FUNCTIONS: {
5
5
  readonly createSearch: (config: FunctionsToDetectConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with", "filter"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
6
6
  readonly processSearchResult: <T extends import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: FunctionsToDetectConfig, _data: {
@@ -1,5 +1,4 @@
1
- import type { LintingResult } from '../linter-format';
2
- import { LintingRuleCertainty } from '../linter-format';
1
+ import { type LintingResult, LintingRuleCertainty } from '../linter-format';
3
2
  import type { MergeableRecord } from '../../util/objects';
4
3
  import type { SourceRange } from '../../util/range';
5
4
  import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
@@ -1,7 +1,6 @@
1
1
  import type { SourceRange } from '../../util/range';
2
2
  import type { Identifier } from '../../dataflow/environments/identifier';
3
- import type { LintingResult } from '../linter-format';
4
- import { LintingResultCertainty } from '../linter-format';
3
+ import { type LintingResult, LintingResultCertainty } from '../linter-format';
5
4
  import type { FlowrSearchElement, FlowrSearchElements } from '../../search/flowr-search';
6
5
  import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
7
6
  import type { MergeableRecord } from '../../util/objects';
@@ -2,8 +2,7 @@ import type { DataflowGraph } from '../../dataflow/graph/graph';
2
2
  import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
3
3
  import type { MergeableRecord } from '../../util/objects';
4
4
  import type { SourceRange } from '../../util/range';
5
- import type { LintingResult, LintQuickFixReplacement } from '../linter-format';
6
- import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
5
+ import { type LintingResult, type LintQuickFixReplacement, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
7
6
  import { LintingRuleTag } from '../linter-tags';
8
7
  export declare enum CasingConvention {
9
8
  CamelCase = "camelCase",
@@ -34,11 +33,23 @@ export interface NamingConventionMetadata extends MergeableRecord {
34
33
  /** number of symbols breaking the casing convetion */
35
34
  numBreak: number;
36
35
  }
36
+ /**
37
+ * Attempts to detect the casing convention used in the given identifier.
38
+ */
37
39
  export declare function detectCasing(identifier: string): CasingConvention;
40
+ /**
41
+ * Determines the most used casing convention in the given list of symbols.
42
+ */
38
43
  export declare function getMostUsedCasing(symbols: {
39
44
  detectedCasing: CasingConvention;
40
45
  }[]): CasingConvention;
46
+ /**
47
+ * Attempts to fix the casing of the given identifier to match the provided convention.
48
+ */
41
49
  export declare function fixCasing(identifier: string, convention: CasingConvention): string | undefined;
50
+ /**
51
+ * Creates quick fixes for renaming all references to the given node to match the provided replacement.
52
+ */
42
53
  export declare function createNamingConventionQuickFixes(graph: DataflowGraph, nodeId: NodeId, replacement: string, conv: CasingConvention): LintQuickFixReplacement[] | undefined;
43
54
  export declare const NAMING_CONVENTION: {
44
55
  readonly createSearch: (_config: NamingConventionConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
@@ -25,6 +25,9 @@ var CasingConvention;
25
25
  function containsAlpha(s) {
26
26
  return /[A-Za-z]/.test(s);
27
27
  }
28
+ /**
29
+ * Attempts to detect the casing convention used in the given identifier.
30
+ */
28
31
  function detectCasing(identifier) {
29
32
  if (identifier.trim() === '' || !containsAlpha(identifier)) {
30
33
  return CasingConvention.Unknown;
@@ -68,6 +71,9 @@ function detectCasing(identifier) {
68
71
  }
69
72
  return CasingConvention.Unknown;
70
73
  }
74
+ /**
75
+ * Determines the most used casing convention in the given list of symbols.
76
+ */
71
77
  function getMostUsedCasing(symbols) {
72
78
  if (symbols.length === 0) {
73
79
  return CasingConvention.Unknown;
@@ -77,9 +83,12 @@ function getMostUsedCasing(symbols) {
77
83
  const o = map.get(symbol.detectedCasing) ?? 0;
78
84
  map.set(symbol.detectedCasing, o + 1);
79
85
  }
80
- // Return element with most occurances
86
+ // Return element with most occurances
81
87
  return [...map].reduce((p, c) => p[1] > c[1] ? p : c)[0];
82
88
  }
89
+ /**
90
+ * Attempts to fix the casing of the given identifier to match the provided convention.
91
+ */
83
92
  function fixCasing(identifier, convention) {
84
93
  if (!containsAlpha(identifier)) {
85
94
  return undefined;
@@ -110,6 +119,9 @@ function fixCasing(identifier, convention) {
110
119
  (0, assert_1.assertUnreachable)(convention);
111
120
  }
112
121
  }
122
+ /**
123
+ * Creates quick fixes for renaming all references to the given node to match the provided replacement.
124
+ */
113
125
  function createNamingConventionQuickFixes(graph, nodeId, replacement, conv) {
114
126
  const refs = (0, dfg_get_symbol_refs_1.getAllRefsToSymbol)(graph, nodeId);
115
127
  const idMap = graph.idMap;
@@ -1,5 +1,5 @@
1
1
  import { LintingRuleCertainty } from '../linter-format';
2
- import type { FunctionsMetadata, FunctionsResult } from './function-finder-util';
2
+ import { type FunctionsMetadata, type FunctionsResult } from './function-finder-util';
3
3
  import { LintingRuleTag } from '../linter-tags';
4
4
  import type { MergeableRecord } from '../../util/objects';
5
5
  export interface NetworkFunctionsConfig extends MergeableRecord {
@@ -1,5 +1,4 @@
1
- import type { LintingResult } from '../linter-format';
2
- import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
1
+ import { type LintingResult, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
3
2
  import type { SourceRange } from '../../util/range';
4
3
  import type { MergeableRecord } from '../../util/objects';
5
4
  import type { Identifier } from '../../dataflow/environments/identifier';
@@ -1,7 +1,6 @@
1
- import type { LintingResult } from '../linter-format';
2
- import { LintingRuleCertainty } from '../linter-format';
1
+ import { type LintingResult, LintingRuleCertainty } from '../linter-format';
3
2
  import type { MergeableRecord } from '../../util/objects';
4
- import type { SourceRange } from '../../util/range';
3
+ import { type SourceRange } from '../../util/range';
5
4
  import { LintingRuleTag } from '../linter-tags';
6
5
  import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
7
6
  export interface UnusedDefinitionResult extends LintingResult {
@@ -1,8 +1,7 @@
1
1
  import type { BuiltInMappingName } from '../../dataflow/environments/built-in';
2
2
  import type { MergeableRecord } from '../../util/objects';
3
3
  import type { SourceRange } from '../../util/range';
4
- import type { LintingResult } from '../linter-format';
5
- import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
4
+ import { type LintingResult, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
6
5
  import { LintingRuleTag } from '../linter-tags';
7
6
  export interface UselessLoopResult extends LintingResult {
8
7
  name: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eagleoutice/flowr",
3
- "version": "2.6.0",
3
+ "version": "2.6.2",
4
4
  "description": "Static Dataflow Analyzer and Program Slicer for the R Programming Language",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "repository": {
@@ -178,7 +178,7 @@
178
178
  "devDependencies": {
179
179
  "@commitlint/cli": "^19.7.1",
180
180
  "@commitlint/config-angular": "^19.7.1",
181
- "@eagleoutice/eslint-config-flowr": "^1.0.19",
181
+ "@eagleoutice/eslint-config-flowr": "^1.0.27",
182
182
  "@eslint/eslintrc": "^3.3.1",
183
183
  "@eslint/js": "^9.34.0",
184
184
  "@j-ulrich/release-it-regex-bumper": "^5.3.0",
@@ -1,7 +1,6 @@
1
1
  import type { KnownParser } from '../../r-bridge/parser';
2
- import type { CacheInvalidationEvent } from './flowr-cache';
3
- import { FlowrCache } from './flowr-cache';
4
- import type { DEFAULT_DATAFLOW_PIPELINE, TREE_SITTER_DATAFLOW_PIPELINE } from '../../core/steps/pipeline/default-pipelines';
2
+ import { type CacheInvalidationEvent, FlowrCache } from './flowr-cache';
3
+ import { type DEFAULT_DATAFLOW_PIPELINE, type TREE_SITTER_DATAFLOW_PIPELINE } from '../../core/steps/pipeline/default-pipelines';
5
4
  import type { FlowrConfigOptions } from '../../config';
6
5
  import type { RParseRequests } from '../../r-bridge/retriever';
7
6
  import type { IdGenerator } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
@@ -10,6 +9,7 @@ import type { TreeSitterExecutor } from '../../r-bridge/lang-4.x/tree-sitter/tre
10
9
  import type { PipelineOutput } from '../../core/steps/pipeline/pipeline';
11
10
  import type { CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
12
11
  import type { ControlFlowInformation } from '../../control-flow/control-flow-graph';
12
+ import { CfgKind } from '../cfg-kind';
13
13
  interface FlowrAnalyzerCacheOptions<Parser extends KnownParser> {
14
14
  parser: Parser;
15
15
  config: FlowrConfigOptions;
@@ -17,7 +17,7 @@ interface FlowrAnalyzerCacheOptions<Parser extends KnownParser> {
17
17
  getId?: IdGenerator<NoInfo>;
18
18
  overwriteFilePath?: string;
19
19
  }
20
- type AnalyzerCacheType<Parser extends KnownParser> = Parser extends TreeSitterExecutor ? Partial<PipelineOutput<typeof TREE_SITTER_DATAFLOW_PIPELINE>> : Partial<PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>;
20
+ export type AnalyzerCacheType<Parser extends KnownParser> = Parser extends TreeSitterExecutor ? Partial<PipelineOutput<typeof TREE_SITTER_DATAFLOW_PIPELINE>> : Partial<PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>;
21
21
  /**
22
22
  * This provides the full analyzer caching layer, please avoid using this directly
23
23
  * and prefer the {@link FlowrAnalyzer}.
@@ -36,14 +36,12 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
36
36
  /**
37
37
  * Get the parse output for the request, parsing if necessary.
38
38
  * @param force - Do not use the cache, instead force a new parse.
39
- *
40
39
  * @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
41
40
  */
42
41
  parse(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['parse']>>;
43
42
  /**
44
43
  * Get the parse output for the request if already available, otherwise return `undefined`.
45
44
  * This will not trigger a new parse.
46
- *
47
45
  * @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
48
46
  */
49
47
  peekParse(): NonNullable<AnalyzerCacheType<Parser>['parse']> | undefined;
@@ -56,38 +54,34 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
56
54
  /**
57
55
  * Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
58
56
  * This will not trigger a new normalization.
59
- *
60
57
  * @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
61
58
  */
62
59
  peekNormalize(): NonNullable<AnalyzerCacheType<Parser>['normalize']> | undefined;
63
60
  /**
64
61
  * Get the dataflow graph for the request, computing if necessary.
65
62
  * @param force - Do not use the cache, instead force new analyses.
66
- *
67
63
  * @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
68
64
  */
69
65
  dataflow(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['dataflow']>>;
70
66
  /**
71
67
  * Get the dataflow graph for the request if already available, otherwise return `undefined`.
72
68
  * This will not trigger a new computation.
73
- *
74
69
  * @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
75
70
  */
76
71
  peekDataflow(): NonNullable<AnalyzerCacheType<Parser>['dataflow']> | undefined;
77
72
  /**
78
73
  * Get the control flow graph (CFG) for the request, computing if necessary.
79
74
  * @param force - Do not use the cache, instead force new analyses.
80
- * @param useDataflow - Whether to use the dataflow graph for the creation of the CFG.
75
+ * @param kind - The kind of CFG that is requested.
81
76
  * @param simplifications - Simplification passes to be applied to the CFG.
82
77
  */
83
- controlflow(force: boolean | undefined, useDataflow: boolean, simplifications: readonly CfgSimplificationPassName[] | undefined): Promise<ControlFlowInformation>;
78
+ controlflow(force: boolean | undefined, kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): Promise<ControlFlowInformation>;
84
79
  /**
85
80
  * Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
86
- * @param useDataflow - Whether to use the dataflow graph for the creation of the CFG.
81
+ * @param kind - The kind of CFG that is requested.
87
82
  * @param simplifications - Simplification passes to be applied to the CFG.
88
- *
89
83
  * @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
90
84
  */
91
- peekControlflow(useDataflow: boolean, simplifications: readonly CfgSimplificationPassName[] | undefined): ControlFlowInformation | undefined;
85
+ peekControlflow(kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): ControlFlowInformation | undefined;
92
86
  }
93
87
  export {};
@@ -6,6 +6,7 @@ const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines
6
6
  const assert_1 = require("../../util/assert");
7
7
  const objectmap_1 = require("../../util/collections/objectmap");
8
8
  const extract_cfg_1 = require("../../control-flow/extract-cfg");
9
+ const cfg_kind_1 = require("../cfg-kind");
9
10
  /**
10
11
  * This provides the full analyzer caching layer, please avoid using this directly
11
12
  * and prefer the {@link FlowrAnalyzer}.
@@ -50,6 +51,7 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
50
51
  this.receive({ type: "full" /* CacheInvalidationEventType.Full */ });
51
52
  }
52
53
  async runTapeUntil(force, until) {
54
+ (0, assert_1.guard)(this.args.request && (Array.isArray(this.args.request) ? this.args.request.length > 0 : true), 'At least one request must be set to run the analysis pipeline');
53
55
  if (force) {
54
56
  this.reset();
55
57
  }
@@ -63,7 +65,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
63
65
  /**
64
66
  * Get the parse output for the request, parsing if necessary.
65
67
  * @param force - Do not use the cache, instead force a new parse.
66
- *
67
68
  * @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
68
69
  */
69
70
  async parse(force) {
@@ -73,7 +74,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
73
74
  /**
74
75
  * Get the parse output for the request if already available, otherwise return `undefined`.
75
76
  * This will not trigger a new parse.
76
- *
77
77
  * @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
78
78
  */
79
79
  peekParse() {
@@ -91,7 +91,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
91
91
  /**
92
92
  * Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
93
93
  * This will not trigger a new normalization.
94
- *
95
94
  * @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
96
95
  */
97
96
  peekNormalize() {
@@ -100,7 +99,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
100
99
  /**
101
100
  * Get the dataflow graph for the request, computing if necessary.
102
101
  * @param force - Do not use the cache, instead force new analyses.
103
- *
104
102
  * @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
105
103
  */
106
104
  async dataflow(force) {
@@ -110,7 +108,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
110
108
  /**
111
109
  * Get the dataflow graph for the request if already available, otherwise return `undefined`.
112
110
  * This will not trigger a new computation.
113
- *
114
111
  * @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
115
112
  */
116
113
  peekDataflow() {
@@ -119,37 +116,42 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
119
116
  /**
120
117
  * Get the control flow graph (CFG) for the request, computing if necessary.
121
118
  * @param force - Do not use the cache, instead force new analyses.
122
- * @param useDataflow - Whether to use the dataflow graph for the creation of the CFG.
119
+ * @param kind - The kind of CFG that is requested.
123
120
  * @param simplifications - Simplification passes to be applied to the CFG.
124
121
  */
125
- async controlflow(force, useDataflow, simplifications) {
122
+ async controlflow(force, kind, simplifications) {
123
+ (0, assert_1.guard)(kind === cfg_kind_1.CfgKind.Quick ? simplifications === undefined : true, 'Cannot apply simplifications to quick CFG');
126
124
  simplifications ??= [];
127
125
  if (!force) {
128
- const value = this.controlFlowCache.simplified.get([simplifications, useDataflow]);
126
+ const value = this.controlFlowCache.simplified.get([simplifications, kind]);
129
127
  if (value !== undefined) {
130
128
  return value;
131
129
  }
132
130
  }
133
131
  const normalized = await this.normalize(force);
134
- let dataflow = undefined;
135
- if (useDataflow) {
136
- /* if force is active, it will have triggered with normalize */
137
- dataflow = await this.dataflow();
132
+ let result;
133
+ switch (kind) {
134
+ case cfg_kind_1.CfgKind.WithDataflow:
135
+ result = (0, extract_cfg_1.extractCfg)(normalized, this.args.config, (await this.dataflow()).graph, simplifications);
136
+ break;
137
+ case cfg_kind_1.CfgKind.NoDataflow:
138
+ result = (0, extract_cfg_1.extractCfg)(normalized, this.args.config, undefined, simplifications);
139
+ break;
140
+ case cfg_kind_1.CfgKind.Quick:
141
+ result = this.peekDataflow()?.cfgQuick ?? (0, extract_cfg_1.extractCfgQuick)(normalized);
142
+ break;
138
143
  }
139
- const result = simplifications.length === 0 && !useDataflow ? (0, extract_cfg_1.extractCfgQuick)(normalized) :
140
- (0, extract_cfg_1.extractCfg)(normalized, this.args.config, dataflow?.graph, simplifications);
141
- this.controlFlowCache.simplified.set([simplifications, useDataflow], result);
144
+ this.controlFlowCache.simplified.set([simplifications, kind], result);
142
145
  return result;
143
146
  }
144
147
  /**
145
148
  * Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
146
- * @param useDataflow - Whether to use the dataflow graph for the creation of the CFG.
149
+ * @param kind - The kind of CFG that is requested.
147
150
  * @param simplifications - Simplification passes to be applied to the CFG.
148
- *
149
151
  * @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
150
152
  */
151
- peekControlflow(useDataflow, simplifications) {
152
- return this.controlFlowCache.simplified.get([simplifications ?? [], useDataflow]);
153
+ peekControlflow(kind, simplifications) {
154
+ return this.controlFlowCache.simplified.get([simplifications ?? [], kind]);
153
155
  }
154
156
  }
155
157
  exports.FlowrAnalyzerCache = FlowrAnalyzerCache;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Denotes the kind of control flow graph (CFG).
3
+ */
4
+ export declare enum CfgKind {
5
+ /**
6
+ * CFG with dataflow information.
7
+ */
8
+ WithDataflow = 0,
9
+ /**
10
+ * CFG without dataflow information.
11
+ */
12
+ NoDataflow = 1,
13
+ /**
14
+ * A CFG version that is much quicker and does not apply any simplifications or dataflow information.
15
+ */
16
+ Quick = 2
17
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CfgKind = void 0;
4
+ /**
5
+ * Denotes the kind of control flow graph (CFG).
6
+ */
7
+ var CfgKind;
8
+ (function (CfgKind) {
9
+ /**
10
+ * CFG with dataflow information.
11
+ */
12
+ CfgKind[CfgKind["WithDataflow"] = 0] = "WithDataflow";
13
+ /**
14
+ * CFG without dataflow information.
15
+ */
16
+ CfgKind[CfgKind["NoDataflow"] = 1] = "NoDataflow";
17
+ /**
18
+ * A CFG version that is much quicker and does not apply any simplifications or dataflow information.
19
+ */
20
+ CfgKind[CfgKind["Quick"] = 2] = "Quick";
21
+ })(CfgKind || (exports.CfgKind = CfgKind = {}));
22
+ //# sourceMappingURL=cfg-kind.js.map
@@ -32,4 +32,8 @@ export declare abstract class AbstractFlowrAnalyzerContext<In, Out, Plugin exten
32
32
  * Returns the project context this sub-context is attached to
33
33
  */
34
34
  getAttachedContext(): FlowrAnalyzerContext;
35
+ /**
36
+ * Reset the context to its initial state.
37
+ */
38
+ abstract reset(): void;
35
39
  }
@@ -1,9 +1,6 @@
1
- import type { RAnalysisRequest, ReadOnlyFlowrAnalyzerFilesContext } from './flowr-analyzer-files-context';
2
- import { FlowrAnalyzerFilesContext } from './flowr-analyzer-files-context';
3
- import type { ReadOnlyFlowrAnalyzerDependenciesContext } from './flowr-analyzer-dependencies-context';
4
- import { FlowrAnalyzerDependenciesContext } from './flowr-analyzer-dependencies-context';
5
- import type { FlowrAnalyzerPlugin } from '../plugins/flowr-analyzer-plugin';
6
- import { PluginType } from '../plugins/flowr-analyzer-plugin';
1
+ import { type RAnalysisRequest, type ReadOnlyFlowrAnalyzerFilesContext, FlowrAnalyzerFilesContext } from './flowr-analyzer-files-context';
2
+ import { type ReadOnlyFlowrAnalyzerDependenciesContext, FlowrAnalyzerDependenciesContext } from './flowr-analyzer-dependencies-context';
3
+ import { type FlowrAnalyzerPlugin, PluginType } from '../plugins/flowr-analyzer-plugin';
7
4
  /**
8
5
  * This is a read-only interface to the {@link FlowrAnalyzerContext}.
9
6
  * It prevents you from modifying the context, but allows you to inspect it (which is probably what you want when using the {@link FlowrAnalyzer}).
@@ -37,6 +34,8 @@ export declare class FlowrAnalyzerContext implements ReadOnlyFlowrAnalyzerContex
37
34
  constructor(plugins: ReadonlyMap<PluginType, readonly FlowrAnalyzerPlugin[]>);
38
35
  /** delegate request addition */
39
36
  addRequests(requests: readonly RAnalysisRequest[]): void;
37
+ /** delegate request addition */
38
+ addRequest(request: RAnalysisRequest): void;
40
39
  /** this conducts all the step that can be done before the main analysis run */
41
40
  resolvePreAnalysis(): void;
42
41
  /**
@@ -45,4 +44,8 @@ export declare class FlowrAnalyzerContext implements ReadOnlyFlowrAnalyzerContex
45
44
  * the available methods.
46
45
  */
47
46
  inspect(): ReadOnlyFlowrAnalyzerContext;
47
+ /**
48
+ * Reset the context to its initial state, removing all files, dependencies, and loading orders.
49
+ */
50
+ reset(): void;
48
51
  }
@@ -29,6 +29,10 @@ class FlowrAnalyzerContext {
29
29
  addRequests(requests) {
30
30
  this.files.addRequests(requests);
31
31
  }
32
+ /** delegate request addition */
33
+ addRequest(request) {
34
+ this.files.addRequest(request);
35
+ }
32
36
  /** this conducts all the step that can be done before the main analysis run */
33
37
  resolvePreAnalysis() {
34
38
  this.files.computeLoadingOrder();
@@ -42,6 +46,13 @@ class FlowrAnalyzerContext {
42
46
  inspect() {
43
47
  return this;
44
48
  }
49
+ /**
50
+ * Reset the context to its initial state, removing all files, dependencies, and loading orders.
51
+ */
52
+ reset() {
53
+ this.files.reset();
54
+ this.deps.reset();
55
+ }
45
56
  }
46
57
  exports.FlowrAnalyzerContext = FlowrAnalyzerContext;
47
58
  //# sourceMappingURL=flowr-analyzer-context.js.map
@@ -16,7 +16,6 @@ export interface ReadOnlyFlowrAnalyzerDependenciesContext {
16
16
  * Get the dependency with the given name, if it exists.
17
17
  *
18
18
  * If the static dependencies have not yet been loaded, this may trigger a resolution step.
19
- *
20
19
  * @param name - The name of the dependency to get.
21
20
  * @returns The dependency with the given name, or undefined if it does not exist.
22
21
  */
@@ -31,6 +30,7 @@ export declare class FlowrAnalyzerDependenciesContext extends AbstractFlowrAnaly
31
30
  readonly name = "flowr-analyzer-dependencies-context";
32
31
  private dependencies;
33
32
  private staticsLoaded;
33
+ reset(): void;
34
34
  constructor(ctx: FlowrAnalyzerContext, plugins?: readonly FlowrAnalyzerPackageVersionsPlugin[]);
35
35
  resolveStaticDependencies(): void;
36
36
  addDependency(pkg: Package): void;
@@ -12,6 +12,10 @@ class FlowrAnalyzerDependenciesContext extends abstract_flowr_analyzer_context_1
12
12
  name = 'flowr-analyzer-dependencies-context';
13
13
  dependencies = new Map();
14
14
  staticsLoaded = false;
15
+ reset() {
16
+ this.dependencies = new Map();
17
+ this.staticsLoaded = false;
18
+ }
15
19
  constructor(ctx, plugins) {
16
20
  super(ctx, flowr_analyzer_package_versions_plugin_1.FlowrAnalyzerPackageVersionsPlugin.defaultPlugin(), plugins);
17
21
  }
@@ -1,10 +1,9 @@
1
1
  import { AbstractFlowrAnalyzerContext } from './abstract-flowr-analyzer-context';
2
- import type { RParseRequest, RParseRequestFromFile } from '../../r-bridge/retriever';
2
+ import { type RParseRequest, type RParseRequestFromFile } from '../../r-bridge/retriever';
3
3
  import type { FlowrAnalyzerLoadingOrderContext, ReadOnlyFlowrAnalyzerLoadingOrderContext } from './flowr-analyzer-loading-order-context';
4
4
  import { FlowrAnalyzerProjectDiscoveryPlugin } from '../plugins/project-discovery/flowr-analyzer-project-discovery-plugin';
5
5
  import { FlowrAnalyzerFilePlugin } from '../plugins/file-plugins/flowr-analyzer-file-plugin';
6
- import type { FlowrFile, FlowrFileProvider } from './flowr-file';
7
- import { SpecialFileRole } from './flowr-file';
6
+ import { type FlowrFile, type FlowrFileProvider, SpecialFileRole } from './flowr-file';
8
7
  import type { FlowrDescriptionFile } from '../plugins/file-plugins/flowr-description-file';
9
8
  /**
10
9
  * This is a request to process a folder as a project, which will be expanded by the registered {@link FlowrAnalyzerProjectDiscoveryPlugin}s.
@@ -39,7 +38,6 @@ export interface ReadOnlyFlowrAnalyzerFilesContext {
39
38
  readonly loadingOrder: ReadOnlyFlowrAnalyzerLoadingOrderContext;
40
39
  /**
41
40
  * Get all requests that have been added to this context.
42
- *
43
41
  * @example If you want to obtain all description files, use
44
42
  * ```ts
45
43
  * getFilesByRole(SpecialFileRole.Description)
@@ -59,6 +57,7 @@ export declare class FlowrAnalyzerFilesContext extends AbstractFlowrAnalyzerCont
59
57
  private readonly fileLoaders;
60
58
  private specialFiles;
61
59
  constructor(loadingOrder: FlowrAnalyzerLoadingOrderContext, plugins: readonly FlowrAnalyzerProjectDiscoveryPlugin[], fileLoaders: readonly FlowrAnalyzerFilePlugin[]);
60
+ reset(): void;
62
61
  /**
63
62
  * Add multiple requests to the context. This is just a convenience method that calls {@link addRequest} for each request.
64
63
  */
@@ -49,6 +49,10 @@ class FlowrAnalyzerFilesContext extends abstract_flowr_analyzer_context_1.Abstra
49
49
  this.fileLoaders = [...fileLoaders, flowr_analyzer_file_plugin_1.FlowrAnalyzerFilePlugin.defaultPlugin()];
50
50
  this.loadingOrder = loadingOrder;
51
51
  }
52
+ reset() {
53
+ this.loadingOrder.reset();
54
+ this.files = new Map();
55
+ }
52
56
  /**
53
57
  * Add multiple requests to the context. This is just a convenience method that calls {@link addRequest} for each request.
54
58
  */