@eagleoutice/flowr 2.6.1 → 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 (681) hide show
  1. package/README.md +131 -30
  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 +15 -10
  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/repl/commands/repl-commands.d.ts +13 -0
  73. package/cli/repl/commands/repl-commands.js +13 -2
  74. package/cli/repl/commands/repl-execute.d.ts +4 -0
  75. package/cli/repl/commands/repl-execute.js +6 -2
  76. package/cli/repl/commands/repl-main.d.ts +15 -9
  77. package/cli/repl/commands/repl-parse.js +2 -2
  78. package/cli/repl/commands/repl-query.js +16 -5
  79. package/cli/repl/core.d.ts +24 -6
  80. package/cli/repl/core.js +28 -19
  81. package/cli/repl/execute.d.ts +0 -2
  82. package/cli/repl/execute.js +0 -2
  83. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  84. package/cli/repl/parser/slice-query-parser.js +34 -0
  85. package/cli/repl/print-version.d.ts +6 -0
  86. package/cli/repl/print-version.js +6 -0
  87. package/cli/repl/server/compact.d.ts +8 -0
  88. package/cli/repl/server/compact.js +8 -0
  89. package/cli/repl/server/connection.d.ts +4 -3
  90. package/cli/repl/server/connection.js +3 -31
  91. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  92. package/cli/repl/server/messages/all-messages.js +0 -1
  93. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  94. package/cli/repl/server/messages/message-query.d.ts +1 -1
  95. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  96. package/cli/repl/server/send.d.ts +6 -0
  97. package/cli/repl/server/send.js +6 -0
  98. package/cli/repl/server/server.d.ts +1 -1
  99. package/cli/repl/server/validate.d.ts +10 -1
  100. package/cli/repl/server/validate.js +9 -0
  101. package/cli/run-script.d.ts +1 -2
  102. package/cli/run-script.js +0 -1
  103. package/cli/script-core/statistics-core.d.ts +3 -0
  104. package/cli/script-core/statistics-core.js +3 -0
  105. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  106. package/cli/script-core/statistics-helper-core.js +3 -0
  107. package/cli/script-core/summarizer-core.d.ts +3 -0
  108. package/cli/script-core/summarizer-core.js +3 -0
  109. package/cli/summarizer-app.d.ts +2 -3
  110. package/cli/summarizer-app.js +2 -3
  111. package/config.d.ts +17 -3
  112. package/config.js +15 -0
  113. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  114. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  115. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  116. package/control-flow/control-flow-graph.d.ts +20 -12
  117. package/control-flow/control-flow-graph.js +16 -4
  118. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  119. package/control-flow/diff-cfg.d.ts +3 -5
  120. package/control-flow/diff-cfg.js +0 -1
  121. package/control-flow/extract-cfg.d.ts +3 -6
  122. package/control-flow/extract-cfg.js +0 -3
  123. package/control-flow/happens-before.d.ts +1 -1
  124. package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
  125. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  126. package/control-flow/simple-visitor.d.ts +1 -3
  127. package/control-flow/simple-visitor.js +0 -2
  128. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  129. package/control-flow/useless-loop.d.ts +0 -3
  130. package/control-flow/useless-loop.js +2 -5
  131. package/core/pipeline-executor.d.ts +8 -16
  132. package/core/pipeline-executor.js +9 -18
  133. package/core/print/dataflow-printer.d.ts +19 -0
  134. package/core/print/dataflow-printer.js +19 -0
  135. package/core/print/normalize-printer.d.ts +21 -1
  136. package/core/print/normalize-printer.js +20 -0
  137. package/core/print/parse-printer.d.ts +6 -1
  138. package/core/print/parse-printer.js +5 -0
  139. package/core/print/print.d.ts +0 -1
  140. package/core/print/print.js +0 -1
  141. package/core/print/slice-diff-ansi.d.ts +3 -0
  142. package/core/print/slice-diff-ansi.js +3 -0
  143. package/core/steps/all/core/00-parse.d.ts +1 -1
  144. package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
  145. package/core/steps/all/core/10-normalize.d.ts +3 -0
  146. package/core/steps/all/core/10-normalize.js +3 -0
  147. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
  148. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  149. package/core/steps/pipeline/default-pipelines.d.ts +47 -47
  150. package/core/steps/pipeline/default-pipelines.js +0 -4
  151. package/core/steps/pipeline/pipeline.d.ts +1 -8
  152. package/core/steps/pipeline/pipeline.js +1 -3
  153. package/core/steps/pipeline-step.d.ts +0 -1
  154. package/core/steps/pipeline-step.js +0 -1
  155. package/dataflow/cluster.d.ts +3 -0
  156. package/dataflow/cluster.js +3 -0
  157. package/dataflow/environments/append.d.ts +1 -1
  158. package/dataflow/environments/built-in-config.d.ts +1 -5
  159. package/dataflow/environments/built-in-config.js +0 -1
  160. package/dataflow/environments/built-in.d.ts +10 -5
  161. package/dataflow/environments/built-in.js +6 -1
  162. package/dataflow/environments/clone.d.ts +1 -1
  163. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  164. package/dataflow/environments/default-builtin-config.js +4 -1
  165. package/dataflow/environments/diff.d.ts +11 -2
  166. package/dataflow/environments/diff.js +9 -0
  167. package/dataflow/environments/environment.d.ts +3 -3
  168. package/dataflow/environments/environment.js +8 -6
  169. package/dataflow/environments/identifier.d.ts +0 -4
  170. package/dataflow/environments/identifier.js +0 -1
  171. package/dataflow/environments/overwrite.d.ts +4 -1
  172. package/dataflow/environments/overwrite.js +3 -0
  173. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  174. package/dataflow/environments/resolve-by-name.js +3 -2
  175. package/dataflow/environments/scoping.d.ts +4 -1
  176. package/dataflow/environments/scoping.js +3 -0
  177. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  178. package/dataflow/eval/resolve/alias-tracking.js +11 -14
  179. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  180. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  181. package/dataflow/eval/resolve/resolve.js +0 -5
  182. package/dataflow/eval/values/general.d.ts +1 -3
  183. package/dataflow/eval/values/general.js +0 -1
  184. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  185. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  186. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  187. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  188. package/dataflow/eval/values/r-value.d.ts +12 -0
  189. package/dataflow/eval/values/r-value.js +12 -0
  190. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  191. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  192. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  193. package/dataflow/eval/values/sets/set-constants.js +6 -0
  194. package/dataflow/eval/values/string/string-constants.d.ts +10 -1
  195. package/dataflow/eval/values/string/string-constants.js +9 -0
  196. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  197. package/dataflow/extractor.d.ts +1 -1
  198. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  199. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  200. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  201. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  202. package/dataflow/graph/edge.d.ts +9 -0
  203. package/dataflow/graph/edge.js +9 -0
  204. package/dataflow/graph/graph.d.ts +6 -19
  205. package/dataflow/graph/graph.js +4 -15
  206. package/dataflow/graph/invert-dfg.d.ts +3 -0
  207. package/dataflow/graph/invert-dfg.js +3 -0
  208. package/dataflow/graph/quads.d.ts +1 -1
  209. package/dataflow/graph/unknown-replacement.d.ts +6 -0
  210. package/dataflow/graph/unknown-replacement.js +6 -0
  211. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  212. package/dataflow/graph/unknown-side-effect.js +8 -0
  213. package/dataflow/graph/vertex.d.ts +9 -9
  214. package/dataflow/graph/vertex.js +9 -1
  215. package/dataflow/info.d.ts +9 -10
  216. package/dataflow/info.js +6 -1
  217. package/dataflow/internal/linker.d.ts +25 -9
  218. package/dataflow/internal/linker.js +23 -7
  219. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  220. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
  221. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  222. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  223. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
  224. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  225. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
  226. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  227. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  228. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
  229. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  230. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
  231. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  232. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
  233. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  234. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
  235. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  236. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  237. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  238. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
  239. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  240. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  241. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  242. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  243. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
  244. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  245. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  246. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
  247. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
  248. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  249. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
  250. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  251. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  252. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
  253. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
  254. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
  255. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  257. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  258. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
  259. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  260. package/dataflow/internal/process/functions/call/common.js +6 -0
  261. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
  262. package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
  263. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  264. package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
  265. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  266. package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
  267. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  268. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  269. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  270. package/dataflow/internal/process/functions/process-argument.js +6 -0
  271. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  272. package/dataflow/internal/process/functions/process-parameter.js +3 -0
  273. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  274. package/dataflow/internal/process/process-symbol.js +3 -0
  275. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  276. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  277. package/dataflow/internal/process/process-value.d.ts +3 -0
  278. package/dataflow/internal/process/process-value.js +3 -0
  279. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  280. package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
  281. package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
  282. package/dataflow/processor.d.ts +0 -1
  283. package/dataflow/processor.js +0 -1
  284. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
  285. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  286. package/documentation/data/faq/faqs.d.ts +5 -0
  287. package/documentation/data/faq/faqs.js +78 -0
  288. package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
  289. package/documentation/data/faq/wiki-faq-store.js +75 -0
  290. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  291. package/documentation/data/server/doc-data-server-messages.js +4 -63
  292. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  293. package/documentation/doc-util/doc-auto-gen.js +6 -0
  294. package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
  295. package/documentation/doc-util/doc-benchmarks.js +12 -0
  296. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  297. package/documentation/doc-util/doc-cfg.js +9 -0
  298. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  299. package/documentation/doc-util/doc-cli-option.js +9 -0
  300. package/documentation/doc-util/doc-code.d.ts +24 -0
  301. package/documentation/doc-util/doc-code.js +24 -0
  302. package/documentation/doc-util/doc-dfg.d.ts +7 -1
  303. package/documentation/doc-util/doc-dfg.js +9 -0
  304. package/documentation/doc-util/doc-env.d.ts +3 -0
  305. package/documentation/doc-util/doc-env.js +3 -0
  306. package/documentation/doc-util/doc-escape.d.ts +0 -1
  307. package/documentation/doc-util/doc-escape.js +0 -1
  308. package/documentation/doc-util/doc-files.d.ts +11 -0
  309. package/documentation/doc-util/doc-files.js +15 -4
  310. package/documentation/doc-util/doc-general.d.ts +6 -0
  311. package/documentation/doc-util/doc-general.js +6 -0
  312. package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
  313. package/documentation/doc-util/doc-normalized-ast.js +6 -0
  314. package/documentation/doc-util/doc-query.d.ts +15 -0
  315. package/documentation/doc-util/doc-query.js +17 -2
  316. package/documentation/doc-util/doc-repl.d.ts +6 -0
  317. package/documentation/doc-util/doc-repl.js +6 -0
  318. package/documentation/doc-util/doc-search.d.ts +15 -0
  319. package/documentation/doc-util/doc-search.js +17 -2
  320. package/documentation/doc-util/doc-server-message.d.ts +13 -1
  321. package/documentation/doc-util/doc-server-message.js +13 -1
  322. package/documentation/doc-util/doc-structure.d.ts +9 -0
  323. package/documentation/doc-util/doc-structure.js +10 -1
  324. package/documentation/doc-util/doc-types.d.ts +42 -0
  325. package/documentation/doc-util/doc-types.js +42 -0
  326. package/documentation/print-analyzer-wiki.js +4 -0
  327. package/documentation/print-core-wiki.d.ts +3 -0
  328. package/documentation/print-core-wiki.js +5 -2
  329. package/documentation/print-dataflow-graph-wiki.js +5 -5
  330. package/documentation/print-faq-wiki.js +3 -75
  331. package/documentation/print-interface-wiki.js +1 -1
  332. package/documentation/print-onboarding-wiki.js +1 -1
  333. package/documentation/print-query-wiki.js +4 -34
  334. package/documentation/print-readme.js +105 -0
  335. package/engines.d.ts +1 -1
  336. package/linter/linter-executor.d.ts +6 -3
  337. package/linter/linter-executor.js +3 -0
  338. package/linter/linter-format.d.ts +8 -0
  339. package/linter/linter-format.js +8 -0
  340. package/linter/rules/absolute-path.d.ts +3 -4
  341. package/linter/rules/dataframe-access-validation.d.ts +3 -4
  342. package/linter/rules/dataframe-access-validation.js +9 -11
  343. package/linter/rules/dead-code.d.ts +1 -1
  344. package/linter/rules/deprecated-functions.d.ts +1 -1
  345. package/linter/rules/file-path-validity.d.ts +1 -2
  346. package/linter/rules/function-finder-util.d.ts +1 -2
  347. package/linter/rules/naming-convention.d.ts +13 -2
  348. package/linter/rules/naming-convention.js +13 -1
  349. package/linter/rules/network-functions.d.ts +1 -1
  350. package/linter/rules/seeded-randomness.d.ts +1 -2
  351. package/linter/rules/unused-definition.d.ts +2 -3
  352. package/linter/rules/useless-loop.d.ts +1 -2
  353. package/package.json +2 -2
  354. package/project/cache/flowr-analyzer-cache.d.ts +2 -9
  355. package/project/cache/flowr-analyzer-cache.js +0 -6
  356. package/project/context/flowr-analyzer-context.d.ts +3 -6
  357. package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
  358. package/project/context/flowr-analyzer-files-context.d.ts +2 -4
  359. package/project/context/flowr-file.d.ts +0 -1
  360. package/project/flowr-analyzer-builder.d.ts +1 -3
  361. package/project/flowr-analyzer-builder.js +5 -6
  362. package/project/flowr-analyzer.d.ts +34 -25
  363. package/project/flowr-analyzer.js +10 -11
  364. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
  365. package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
  366. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  367. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  368. package/queries/base-query-format.d.ts +2 -2
  369. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  370. package/queries/catalog/call-context-query/call-context-query-executor.js +3 -0
  371. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  372. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
  373. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
  374. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  375. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  376. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  377. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  378. package/queries/catalog/config-query/config-query-executor.js +3 -0
  379. package/queries/catalog/config-query/config-query-format.d.ts +5 -2
  380. package/queries/catalog/config-query/config-query-format.js +13 -16
  381. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  382. package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
  383. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  384. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  385. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  386. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  387. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  388. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  389. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  390. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  391. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  392. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  393. package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
  394. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  395. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  396. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  397. package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
  398. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
  399. package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
  400. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  401. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  402. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  403. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  404. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
  405. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
  406. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
  407. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  408. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  409. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  410. package/queries/catalog/linter-query/linter-query-format.js +67 -0
  411. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  412. package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
  413. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  414. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  415. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  416. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  417. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  418. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  419. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  420. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  421. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  422. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  423. package/queries/catalog/project-query/project-query-executor.js +3 -0
  424. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  425. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  426. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  427. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  428. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  429. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  430. package/queries/catalog/search-query/search-query-executor.js +3 -0
  431. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  432. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  433. package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
  434. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  435. package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
  436. package/queries/query-print.d.ts +20 -4
  437. package/queries/query-print.js +18 -2
  438. package/queries/query.d.ts +85 -55
  439. package/queries/query.js +35 -23
  440. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  441. package/r-bridge/data/get.d.ts +6 -0
  442. package/r-bridge/data/get.js +6 -0
  443. package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
  444. package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
  445. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  446. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  447. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  448. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  449. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  450. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  451. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  452. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  453. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  454. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
  455. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
  456. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  457. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  458. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  459. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  460. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  461. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  462. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  463. package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
  464. package/r-bridge/lang-4.x/ast/model/type.js +4 -5
  465. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  466. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  467. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
  468. package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
  469. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  470. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  471. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  472. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  473. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  474. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  475. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  476. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  477. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  478. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  479. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  480. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  481. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  482. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  483. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  484. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  485. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  486. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  487. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  488. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  489. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  490. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  491. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  492. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  493. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  494. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  495. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  496. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  497. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  498. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  499. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  500. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  501. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  502. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  503. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  504. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  505. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  506. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  507. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  508. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  509. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  510. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  511. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  512. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  513. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  514. package/r-bridge/lang-4.x/convert-values.js +12 -1
  515. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  516. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
  517. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
  518. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
  519. package/r-bridge/parser.d.ts +28 -7
  520. package/r-bridge/retriever.d.ts +16 -1
  521. package/r-bridge/retriever.js +15 -0
  522. package/r-bridge/shell-executor.d.ts +3 -3
  523. package/r-bridge/shell-executor.js +6 -1
  524. package/r-bridge/shell.d.ts +24 -23
  525. package/r-bridge/shell.js +37 -31
  526. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
  527. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  528. package/reconstruct/auto-select/magic-comments.js +1 -2
  529. package/reconstruct/reconstruct.d.ts +1 -3
  530. package/reconstruct/reconstruct.js +0 -2
  531. package/search/flowr-search-builder.d.ts +12 -5
  532. package/search/flowr-search-builder.js +7 -2
  533. package/search/flowr-search-executor.d.ts +3 -3
  534. package/search/flowr-search-filters.d.ts +14 -1
  535. package/search/flowr-search-filters.js +13 -0
  536. package/search/flowr-search-printer.d.ts +6 -0
  537. package/search/flowr-search-printer.js +6 -0
  538. package/search/flowr-search-traverse.d.ts +1 -1
  539. package/search/flowr-search.d.ts +3 -3
  540. package/search/search-executor/search-enrichers.d.ts +9 -6
  541. package/search/search-executor/search-enrichers.js +3 -0
  542. package/search/search-executor/search-generators.d.ts +19 -10
  543. package/search/search-executor/search-generators.js +49 -2
  544. package/search/search-executor/search-mappers.d.ts +8 -5
  545. package/search/search-executor/search-mappers.js +3 -0
  546. package/search/search-executor/search-transformer.d.ts +19 -16
  547. package/search/search-executor/search-transformer.js +3 -0
  548. package/slicing/criterion/collect-all.d.ts +10 -10
  549. package/slicing/criterion/parse.d.ts +4 -2
  550. package/slicing/criterion/parse.js +4 -2
  551. package/slicing/static/fingerprint.d.ts +9 -1
  552. package/slicing/static/fingerprint.js +8 -0
  553. package/slicing/static/slice-call.d.ts +2 -2
  554. package/slicing/static/static-slicer.d.ts +8 -4
  555. package/slicing/static/static-slicer.js +5 -1
  556. package/slicing/static/visiting-queue.d.ts +1 -1
  557. package/statistics/features/common-syntax-probability.d.ts +10 -1
  558. package/statistics/features/common-syntax-probability.js +9 -0
  559. package/statistics/features/feature.d.ts +0 -4
  560. package/statistics/features/feature.js +0 -1
  561. package/statistics/features/post-processing.d.ts +6 -0
  562. package/statistics/features/post-processing.js +6 -0
  563. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  564. package/statistics/features/supported/assignments/post-process.js +3 -0
  565. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  566. package/statistics/features/supported/comments/post-process.js +3 -0
  567. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  568. package/statistics/features/supported/control-flow/post-process.js +3 -0
  569. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  570. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  571. package/statistics/features/supported/data-access/post-process.js +3 -0
  572. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  573. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  574. package/statistics/features/supported/expression-list/post-process.js +3 -0
  575. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  576. package/statistics/features/supported/loops/post-process.js +3 -0
  577. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  578. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  579. package/statistics/features/supported/used-packages/post-process.js +3 -0
  580. package/statistics/features/supported/values/post-process.d.ts +3 -0
  581. package/statistics/features/supported/values/post-process.js +3 -0
  582. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  583. package/statistics/features/supported/variables/post-process.js +6 -0
  584. package/statistics/meta-statistics.d.ts +8 -9
  585. package/statistics/output/file-provider.d.ts +5 -6
  586. package/statistics/output/file-provider.js +5 -6
  587. package/statistics/output/print-stats.d.ts +13 -1
  588. package/statistics/output/print-stats.js +12 -0
  589. package/statistics/output/statistics-file.d.ts +1 -2
  590. package/statistics/output/statistics-file.js +0 -1
  591. package/statistics/statistics.d.ts +3 -4
  592. package/statistics/statistics.js +1 -2
  593. package/statistics/summarizer/auto-detect.d.ts +3 -0
  594. package/statistics/summarizer/auto-detect.js +3 -0
  595. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  596. package/statistics/summarizer/post-process/clusterer.js +0 -2
  597. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  598. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  599. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  600. package/statistics/summarizer/post-process/histogram.js +0 -2
  601. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  602. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  603. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  604. package/statistics/summarizer/second-phase/process.js +3 -1
  605. package/statistics/summarizer/summarizer.d.ts +1 -2
  606. package/util/assert.d.ts +52 -2
  607. package/util/assert.js +52 -2
  608. package/util/collections/arrays.d.ts +10 -5
  609. package/util/collections/arrays.js +10 -5
  610. package/util/collections/defaultmap.d.ts +11 -11
  611. package/util/collections/defaultmap.js +11 -11
  612. package/util/containers.d.ts +2 -7
  613. package/util/containers.js +0 -5
  614. package/util/diff-graph.d.ts +0 -1
  615. package/util/diff-graph.js +0 -1
  616. package/util/diff.d.ts +3 -1
  617. package/util/diff.js +3 -1
  618. package/util/files.d.ts +11 -11
  619. package/util/files.js +10 -10
  620. package/util/formats/adapter.d.ts +9 -0
  621. package/util/formats/adapter.js +9 -0
  622. package/util/formats/adapters/rmd-adapter.d.ts +10 -1
  623. package/util/formats/adapters/rmd-adapter.js +10 -1
  624. package/util/html-hover-over.d.ts +5 -0
  625. package/util/html-hover-over.js +5 -0
  626. package/util/json.d.ts +13 -0
  627. package/util/json.js +13 -0
  628. package/util/log.d.ts +2 -2
  629. package/util/log.js +2 -2
  630. package/util/mermaid/ast.d.ts +3 -0
  631. package/util/mermaid/ast.js +3 -0
  632. package/util/mermaid/cfg.d.ts +1 -1
  633. package/util/mermaid/dfg.d.ts +12 -4
  634. package/util/mermaid/dfg.js +9 -1
  635. package/util/mermaid/mermaid.d.ts +6 -1
  636. package/util/mermaid/mermaid.js +6 -1
  637. package/util/numbers.d.ts +7 -0
  638. package/util/numbers.js +7 -0
  639. package/util/objects.d.ts +0 -2
  640. package/util/os.d.ts +3 -0
  641. package/util/os.js +3 -0
  642. package/util/parallel.d.ts +4 -4
  643. package/util/parallel.js +4 -4
  644. package/util/prefix.d.ts +0 -1
  645. package/util/prefix.js +0 -1
  646. package/util/quads.d.ts +14 -17
  647. package/util/quads.js +3 -5
  648. package/util/r-value.d.ts +10 -1
  649. package/util/r-value.js +21 -0
  650. package/util/random.d.ts +3 -0
  651. package/util/random.js +3 -0
  652. package/util/range.d.ts +9 -3
  653. package/util/range.js +15 -2
  654. package/util/schema.d.ts +14 -1
  655. package/util/schema.js +15 -2
  656. package/util/simple-df/dfg-view.d.ts +4 -1
  657. package/util/simple-df/dfg-view.js +4 -1
  658. package/util/summarizer.d.ts +9 -1
  659. package/util/summarizer.js +9 -0
  660. package/util/text/ansi.d.ts +3 -0
  661. package/util/text/ansi.js +3 -0
  662. package/util/text/args.d.ts +2 -4
  663. package/util/text/args.js +7 -5
  664. package/util/text/text.d.ts +4 -0
  665. package/util/text/text.js +4 -0
  666. package/util/text/time.d.ts +0 -1
  667. package/util/text/time.js +0 -1
  668. package/util/version.d.ts +12 -3
  669. package/util/version.js +12 -3
  670. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  671. package/abstract-interpretation/data-frame/domain.js +0 -315
  672. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  673. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  674. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  675. package/cli/repl/commands/repl-lineage.js +0 -66
  676. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  677. package/cli/repl/server/messages/message-lineage.js +0 -25
  678. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  679. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  680. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  681. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
@@ -15,6 +15,104 @@ const doc_auto_gen_1 = require("./doc-util/doc-auto-gen");
15
15
  const doc_general_1 = require("./doc-util/doc-general");
16
16
  const doc_dfg_1 = require("./doc-util/doc-dfg");
17
17
  const doc_query_1 = require("./doc-util/doc-query");
18
+ const doc_issue_1 = require("./doc-util/doc-issue");
19
+ const strings_1 = require("../util/text/strings");
20
+ const PublicationsMain = [
21
+ {
22
+ header: 'Statically Analyzing the Dataflow of R Programs (OOPSLA \'25)',
23
+ description: 'Please cite this paper if you are using flowR in your research.',
24
+ doi: 'https://doi.org/10.1145/3763087',
25
+ bibtex: `@article{10.1145/3763087,
26
+ author = {Sihler, Florian and Tichy, Matthias},
27
+ title = {Statically Analyzing the Dataflow of R Programs},
28
+ year = {2025},
29
+ issue_date = {October 2025},
30
+ publisher = {Association for Computing Machinery},
31
+ address = {New York, NY, USA},
32
+ volume = {9},
33
+ number = {OOPSLA2},
34
+ url = {https://doi.org/10.1145/3763087},
35
+ doi = {10.1145/3763087},
36
+ abstract = {The R programming language is primarily designed for statistical computing and mostly used by researchers without a background in computer science. R provides a wide range of dynamic features and peculiarities that are difficult to analyze statically like dynamic scoping and lazy evaluation with dynamic side effects. At the same time, the R ecosystem lacks sophisticated analysis tools that support researchers in understanding and improving their code. In this paper, we present a novel static dataflow analysis framework for the R programming language that is capable of handling the dynamic nature of R programs and produces the dataflow graph of given R programs. This graph can be essential in a range of analyses, including program slicing, which we implement as a proof of concept. The core analysis works as a stateful fold over a normalized version of the abstract syntax tree of the R program, which tracks (re-)definitions, values, function calls, side effects, external files, and a dynamic control flow to produce one dataflow graph per program. We evaluate the correctness of our analysis using output equivalence testing on a manually curated dataset of 779 sensible slicing points from executable real-world R scripts. Additionally, we use a set of systematic test cases based on the capabilities of the R language and the implementation of the R interpreter and measure the runtimes well as the memory consumption on a set of 4,230 real-world R scripts and 20,815 packages available on R’s package manager CRAN. Furthermore, we evaluate the recall of our program slicer, its accuracy using shrinking, and its improvement over the state of the art. We correctly analyze almost all programs in our equivalence test suite, preserving the identical output for 99.7\\% of the manually curated slicing points. On average, we require 576ms to analyze the dataflow and around 213kB to store the graph of a research script. This shows that our analysis is capable of analyzing real-world sources quickly and correctly. Our slicer achieves an average reduction of 84.8\\% of tokens indicating its potential to improve program comprehension.},
37
+ journal = {Proc. ACM Program. Lang.},
38
+ month = oct,
39
+ articleno = {309},
40
+ numpages = {29},
41
+ keywords = {Dataflow Analysis, R Programming Language, Static Analysis}
42
+ }`
43
+ },
44
+ {
45
+ header: 'flowR: A Static Program Slicer for R (ASE \'24, Tool)',
46
+ description: `This refers to the tool-demonstration of the <a href="${doc_files_1.FlowrVsCode}">VS Code Extension</a>.`,
47
+ doi: 'https://doi.org/10.1145/3691620.3695359',
48
+ bibtex: `@inproceedings{DBLP:conf/kbse/SihlerT24,
49
+ author = {Florian Sihler and
50
+ Matthias Tichy},
51
+ editor = {Vladimir Filkov and
52
+ Baishakhi Ray and
53
+ Minghui Zhou},
54
+ title = {flowR: {A} Static Program Slicer for {R}},
55
+ booktitle = {Proceedings of the 39th {IEEE/ACM} International Conference on Automated
56
+ Software Engineering, {ASE} 2024, Sacramento, CA, USA, October 27
57
+ - November 1, 2024},
58
+ pages = {2390--2393},
59
+ publisher = {{ACM}},
60
+ year = {2024},
61
+ url = {https://doi.org/10.1145/3691620.3695359},
62
+ doi = {10.1145/3691620.3695359},
63
+ timestamp = {Mon, 03 Mar 2025 21:16:51 +0100},
64
+ biburl = {https://dblp.org/rec/conf/kbse/SihlerT24.bib},
65
+ bibsource = {dblp computer science bibliography, https://dblp.org}
66
+ }`
67
+ },
68
+ {
69
+ header: 'On the Anatomy of Real-World R Code for Static Analysis (MSR \'24)',
70
+ description: 'This paper lays the foundation for flowR by analyzing the characteristics of real-world R code.',
71
+ doi: 'https://doi.org/10.1145/3643991.3644911',
72
+ bibtex: `
73
+
74
+ @inproceedings{DBLP:conf/msr/SihlerPSTDD24,
75
+ author = {Florian Sihler and
76
+ Lukas Pietzschmann and
77
+ Raphael Straub and
78
+ Matthias Tichy and
79
+ Andor Diera and
80
+ Abdelhalim Hafedh Dahou},
81
+ editor = {Diomidis Spinellis and
82
+ Alberto Bacchelli and
83
+ Eleni Constantinou},
84
+ title = {On the Anatomy of Real-World {R} Code for Static Analysis},
85
+ booktitle = {21st {IEEE/ACM} International Conference on Mining Software Repositories,
86
+ {MSR} 2024, Lisbon, Portugal, April 15-16, 2024},
87
+ pages = {619--630},
88
+ publisher = {{ACM}},
89
+ year = {2024},
90
+ url = {https://doi.org/10.1145/3643991.3644911},
91
+ doi = {10.1145/3643991.3644911},
92
+ timestamp = {Sun, 19 Jan 2025 13:31:27 +0100},
93
+ biburl = {https://dblp.org/rec/conf/msr/SihlerPSTDD24.bib},
94
+ bibsource = {dblp computer science bibliography, https://dblp.org}
95
+ }`
96
+ }
97
+ ];
98
+ const OtherWorksUsingFlowr = [
99
+ { name: 'Computational Reproducibility of R Code Supplements on OSF', doi: 'https://doi.org/10.36190/2025.49' },
100
+ { name: 'Multi-View Structural Graph Summaries', doi: 'https://doi.org/10.1109/WI-IAT62293.2024.00037' }
101
+ ];
102
+ function printPublications() {
103
+ return PublicationsMain.map(pub => {
104
+ return `
105
+ * [${pub.header}](${pub.doi})
106
+ ${pub.description}
107
+ <details><summary>BibTeX</summary>
108
+
109
+ ${(0, doc_general_1.prefixLines)((0, doc_code_1.codeBlock)('bibtex', pub.bibtex), ' ')}
110
+
111
+ </details>
112
+ `.trim();
113
+ }).join('\n\n') + '\n\n Works using flowR include:\n' +
114
+ (0, strings_1.joinWithLast)(OtherWorksUsingFlowr.map(pub => `[${pub.name}](${pub.doi})`)) + '.\n';
115
+ }
18
116
  async function getText(shell) {
19
117
  const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };
20
118
  return `
@@ -155,6 +253,13 @@ If you want to use the same commands:
155
253
  For more details on how to use _flowR_ please refer to the [wiki pages](${doc_files_1.FlowrGithubBaseRef}/flowr/wiki),
156
254
  as well as the deployed [code documentation](https://flowr-analysis.github.io/flowr/doc/).
157
255
 
256
+ ## 📃 Publications on flowR
257
+
258
+ If you are interested in the theoretical background of _flowR_,
259
+ please check out the following publications (if you find that a paper is missing here, please open [a new issue](${doc_issue_1.NewIssueUrl})):
260
+
261
+ ${printPublications()}
262
+
158
263
  ## 🚀 Contributing
159
264
 
160
265
  We welcome every contribution! Please check out the [developer onboarding](${doc_files_1.FlowrWikiBaseRef}/Onboarding) section in the wiki for all the information you will need.
package/engines.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FlowrConfigOptions, KnownEngines } from './config';
1
+ import { type FlowrConfigOptions, type KnownEngines } from './config';
2
2
  /**
3
3
  * Retrieve all requested engine instance.
4
4
  * Please make sure that if this includes the R engine, that you properly shut it down again!
@@ -1,5 +1,8 @@
1
- import type { LintingRuleConfig, LintingRuleNames } from './linter-rules';
1
+ import { type LintingRuleConfig, type LintingRuleNames } from './linter-rules';
2
2
  import type { LintingResults } from './linter-format';
3
3
  import type { DeepPartial } from 'ts-essentials';
4
- import type { FlowrAnalysisProvider } from '../project/flowr-analyzer';
5
- export declare function executeLintingRule<Name extends LintingRuleNames>(ruleName: Name, input: FlowrAnalysisProvider, lintingRuleConfig?: DeepPartial<LintingRuleConfig<Name>>): Promise<LintingResults<Name>>;
4
+ import type { ReadonlyFlowrAnalysisProvider } from '../project/flowr-analyzer';
5
+ /**
6
+ * Executes a specific linting rule on the given analysis provider input.
7
+ */
8
+ export declare function executeLintingRule<Name extends LintingRuleNames>(ruleName: Name, input: ReadonlyFlowrAnalysisProvider, lintingRuleConfig?: DeepPartial<LintingRuleConfig<Name>>): Promise<LintingResults<Name>>;
@@ -4,6 +4,9 @@ exports.executeLintingRule = executeLintingRule;
4
4
  const linter_rules_1 = require("./linter-rules");
5
5
  const flowr_search_executor_1 = require("../search/flowr-search-executor");
6
6
  const objects_1 = require("../util/objects");
7
+ /**
8
+ * Executes a specific linting rule on the given analysis provider input.
9
+ */
7
10
  async function executeLintingRule(ruleName, input, lintingRuleConfig) {
8
11
  try {
9
12
  const rule = linter_rules_1.LintingRules[ruleName];
@@ -117,7 +117,15 @@ export interface LintingResultsSuccess<Name extends LintingRuleNames> {
117
117
  readonly processTimeMs: number;
118
118
  };
119
119
  }
120
+ /**
121
+ * Checks whether the given linting results represent an error.
122
+ * @see {@link isLintingResultsSuccess}
123
+ */
120
124
  export declare function isLintingResultsError<Name extends LintingRuleNames>(o: LintingResults<Name>): o is LintingResultsError;
125
+ /**
126
+ * Checks whether the given linting results represent a successful linting result.
127
+ * @see {@link isLintingResultsError}
128
+ */
121
129
  export declare function isLintingResultsSuccess<Name extends LintingRuleNames>(o: LintingResults<Name>): o is LintingResultsSuccess<Name>;
122
130
  export type LintingResults<Name extends LintingRuleNames> = LintingResultsSuccess<Name> | LintingResultsError;
123
131
  export declare enum LintingResultCertainty {
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LintingPrettyPrintContext = exports.LintingRuleCertainty = exports.LintingResultCertainty = void 0;
4
4
  exports.isLintingResultsError = isLintingResultsError;
5
5
  exports.isLintingResultsSuccess = isLintingResultsSuccess;
6
+ /**
7
+ * Checks whether the given linting results represent an error.
8
+ * @see {@link isLintingResultsSuccess}
9
+ */
6
10
  function isLintingResultsError(o) {
7
11
  return 'error' in o;
8
12
  }
13
+ /**
14
+ * Checks whether the given linting results represent a successful linting result.
15
+ * @see {@link isLintingResultsError}
16
+ */
9
17
  function isLintingResultsSuccess(o) {
10
18
  return 'results' in o;
11
19
  }
@@ -1,7 +1,6 @@
1
- import type { LintingResult } from '../linter-format';
2
- import { LintingRuleCertainty } from '../linter-format';
3
- import type { MergeableRecord } from '../../util/objects';
4
- import type { SourceRange } from '../../util/range';
1
+ import { type LintingResult, LintingRuleCertainty } from '../linter-format';
2
+ import { type MergeableRecord } from '../../util/objects';
3
+ import { type SourceRange } from '../../util/range';
5
4
  import { LintingRuleTag } from '../linter-tags';
6
5
  import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
7
6
  import type { FlowrConfigOptions } from '../../config';
@@ -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.1",
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';
@@ -37,14 +36,12 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
37
36
  /**
38
37
  * Get the parse output for the request, parsing if necessary.
39
38
  * @param force - Do not use the cache, instead force a new parse.
40
- *
41
39
  * @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
42
40
  */
43
41
  parse(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['parse']>>;
44
42
  /**
45
43
  * Get the parse output for the request if already available, otherwise return `undefined`.
46
44
  * This will not trigger a new parse.
47
- *
48
45
  * @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
49
46
  */
50
47
  peekParse(): NonNullable<AnalyzerCacheType<Parser>['parse']> | undefined;
@@ -57,21 +54,18 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
57
54
  /**
58
55
  * Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
59
56
  * This will not trigger a new normalization.
60
- *
61
57
  * @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
62
58
  */
63
59
  peekNormalize(): NonNullable<AnalyzerCacheType<Parser>['normalize']> | undefined;
64
60
  /**
65
61
  * Get the dataflow graph for the request, computing if necessary.
66
62
  * @param force - Do not use the cache, instead force new analyses.
67
- *
68
63
  * @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
69
64
  */
70
65
  dataflow(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['dataflow']>>;
71
66
  /**
72
67
  * Get the dataflow graph for the request if already available, otherwise return `undefined`.
73
68
  * This will not trigger a new computation.
74
- *
75
69
  * @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
76
70
  */
77
71
  peekDataflow(): NonNullable<AnalyzerCacheType<Parser>['dataflow']> | undefined;
@@ -86,7 +80,6 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
86
80
  * Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
87
81
  * @param kind - The kind of CFG that is requested.
88
82
  * @param simplifications - Simplification passes to be applied to the CFG.
89
- *
90
83
  * @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
91
84
  */
92
85
  peekControlflow(kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): ControlFlowInformation | undefined;
@@ -65,7 +65,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
65
65
  /**
66
66
  * Get the parse output for the request, parsing if necessary.
67
67
  * @param force - Do not use the cache, instead force a new parse.
68
- *
69
68
  * @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
70
69
  */
71
70
  async parse(force) {
@@ -75,7 +74,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
75
74
  /**
76
75
  * Get the parse output for the request if already available, otherwise return `undefined`.
77
76
  * This will not trigger a new parse.
78
- *
79
77
  * @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
80
78
  */
81
79
  peekParse() {
@@ -93,7 +91,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
93
91
  /**
94
92
  * Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
95
93
  * This will not trigger a new normalization.
96
- *
97
94
  * @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
98
95
  */
99
96
  peekNormalize() {
@@ -102,7 +99,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
102
99
  /**
103
100
  * Get the dataflow graph for the request, computing if necessary.
104
101
  * @param force - Do not use the cache, instead force new analyses.
105
- *
106
102
  * @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
107
103
  */
108
104
  async dataflow(force) {
@@ -112,7 +108,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
112
108
  /**
113
109
  * Get the dataflow graph for the request if already available, otherwise return `undefined`.
114
110
  * This will not trigger a new computation.
115
- *
116
111
  * @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
117
112
  */
118
113
  peekDataflow() {
@@ -153,7 +148,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
153
148
  * Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
154
149
  * @param kind - The kind of CFG that is requested.
155
150
  * @param simplifications - Simplification passes to be applied to the CFG.
156
- *
157
151
  * @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
158
152
  */
159
153
  peekControlflow(kind, simplifications) {
@@ -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}).
@@ -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
  */
@@ -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)
@@ -28,7 +28,6 @@ export declare enum SpecialFileRole {
28
28
  *
29
29
  * See {@link FlowrFile} for a basic single-cache implementation and {@link FlowrTextFile} for a text-file specific implementation.
30
30
  * If you want to pass in inline text files, see {@link FlowrInlineTextFile}.
31
- *
32
31
  * @typeParam Content - The type of the content returned by the `content()` method.
33
32
  */
34
33
  export interface FlowrFileProvider<Content = unknown> {