@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
@@ -19,7 +19,6 @@ const diff_graph_1 = require("../../util/diff-graph");
19
19
  /**
20
20
  * Compare two dataflow graphs and return a report on the differences.
21
21
  * If you simply want to check whether they equal, use {@link GraphDifferenceReport#isEqual|`<result>.isEqual()`}.
22
- *
23
22
  * @see {@link diffOfControlFlowGraphs} - for control flow graphs
24
23
  */
25
24
  function diffOfDataflowGraphs(left, right, config) {
@@ -80,6 +79,9 @@ function diffFunctionArgumentsReferences(fn, a, b, ctx) {
80
79
  }
81
80
  (0, diff_2.diffIdentifierReferences)(a, b, ctx);
82
81
  }
82
+ /**
83
+ * Checks whether two function argument lists are equal.
84
+ */
83
85
  function equalFunctionArguments(fn, a, b) {
84
86
  const ctx = {
85
87
  report: new diff_graph_1.GraphDifferenceReport(),
@@ -91,6 +93,9 @@ function equalFunctionArguments(fn, a, b) {
91
93
  diffFunctionArguments(fn, a, b, ctx);
92
94
  return ctx.report.isEqual();
93
95
  }
96
+ /**
97
+ * Compares two function argument lists and reports differences.
98
+ */
94
99
  function diffFunctionArguments(fn, a, b, ctx) {
95
100
  if (a === false || b === false) {
96
101
  if (a !== b) {
@@ -129,6 +134,9 @@ function diffFunctionArguments(fn, a, b, ctx) {
129
134
  }
130
135
  }
131
136
  }
137
+ /**
138
+ * Compares the vertices of two dataflow graphs and reports differences.
139
+ */
132
140
  function diffVertices(ctx) {
133
141
  // collect vertices from both sides
134
142
  const lVert = ctx.left.vertices(true).map(([id, info]) => [id, info]).toArray();
@@ -232,6 +240,9 @@ function diffEdge(edge, otherEdge, ctx, id, target) {
232
240
  ctx.report.addComment(`Target of ${id}->${target} in ${ctx.leftname} differs in edge types: ${JSON.stringify([...(0, edge_1.edgeTypesToNames)(edge.types)])} vs ${JSON.stringify([...(0, edge_1.edgeTypesToNames)(otherEdge.types)])}`, { tag: 'edge', from: id, to: target });
233
241
  }
234
242
  }
243
+ /**
244
+ * Compares two sets of outgoing edges and reports differences.
245
+ */
235
246
  function diffEdges(ctx, id, lEdges, rEdges) {
236
247
  if (lEdges === undefined || rEdges === undefined) {
237
248
  if ((lEdges === undefined && !ctx.config.leftIsSubgraph)
@@ -56,7 +56,13 @@ export type EdgeTypeBits = number;
56
56
  * Otherwise, use {@link edgeTypesToNames} which handles these cases.
57
57
  */
58
58
  export declare function edgeTypeToName(type: EdgeType): string;
59
+ /**
60
+ * Takes joint edge types and splits them into their individual components.
61
+ */
59
62
  export declare function splitEdgeTypes(types: EdgeTypeBits): EdgeType[];
63
+ /**
64
+ * Takes joint edge types and returns their human-readable names.
65
+ */
60
66
  export declare function edgeTypesToNames(bits: EdgeTypeBits): Set<EdgeTypeName>;
61
67
  export declare const enum TraverseEdge {
62
68
  /** Do not traverse this edge */
@@ -84,4 +90,7 @@ export declare function edgeIncludesType(type: EdgeTypeBits, typesToInclude: Edg
84
90
  * Counterpart of {@link edgeIncludesType}.
85
91
  */
86
92
  export declare function edgeDoesNotIncludeType(type: EdgeTypeBits, types: EdgeTypeBits): boolean;
93
+ /**
94
+ * Determines whether an edge should be traversed during dataflow analysis.
95
+ */
87
96
  export declare function shouldTraverseEdge(types: EdgeTypeBits): TraverseEdge;
@@ -57,6 +57,9 @@ const edgeTypeToHumanReadableName = new Map([
57
57
  function edgeTypeToName(type) {
58
58
  return edgeTypeToHumanReadableName.get(type);
59
59
  }
60
+ /**
61
+ * Takes joint edge types and splits them into their individual components.
62
+ */
60
63
  function splitEdgeTypes(types) {
61
64
  const split = [];
62
65
  for (const bit of edgeTypeToHumanReadableName.keys()) {
@@ -66,6 +69,9 @@ function splitEdgeTypes(types) {
66
69
  }
67
70
  return split;
68
71
  }
72
+ /**
73
+ * Takes joint edge types and returns their human-readable names.
74
+ */
69
75
  function edgeTypesToNames(bits) {
70
76
  const types = new Set();
71
77
  for (const [bit, name] of edgeTypeToHumanReadableName.entries()) {
@@ -97,6 +103,9 @@ function edgeDoesNotIncludeType(type, types) {
97
103
  }
98
104
  const alwaysTraverseEdgeTypes = EdgeType.Reads | EdgeType.DefinedBy | EdgeType.Argument | EdgeType.Calls;
99
105
  const definedByOnCallTypes = EdgeType.DefinesOnCall | EdgeType.DefinedByOnCall;
106
+ /**
107
+ * Determines whether an edge should be traversed during dataflow analysis.
108
+ */
100
109
  function shouldTraverseEdge(types) {
101
110
  if (edgeIncludesType(types, EdgeType.NonStandardEvaluation)) {
102
111
  return 0 /* TraverseEdge.Never */;
@@ -1,9 +1,9 @@
1
1
  import type { DataflowGraphEdge, EdgeType } from './edge';
2
2
  import type { DataflowInformation } from '../info';
3
- import type { DataflowGraphVertexArgument, DataflowGraphVertexFunctionCall, DataflowGraphVertexInfo } from './vertex';
3
+ import { type DataflowGraphVertexArgument, type DataflowGraphVertexFunctionCall, type DataflowGraphVertexInfo } from './vertex';
4
4
  import { EmptyArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
5
5
  import type { Identifier, IdentifierDefinition, IdentifierReference } from '../environments/identifier';
6
- import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
6
+ import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
7
7
  import type { AstIdMap } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
8
8
  import type { LinkTo } from '../../queries/catalog/call-context-query/call-context-query-format';
9
9
  /**
@@ -19,7 +19,6 @@ export type DataflowFunctionFlowInformation = Omit<DataflowInformation, 'graph'
19
19
  * ```r
20
20
  * foo(a = 3, b = 2)
21
21
  * ```
22
- *
23
22
  * @see #isNamedArgument
24
23
  * @see PositionalFunctionArgument
25
24
  */
@@ -32,7 +31,6 @@ export interface NamedFunctionArgument extends IdentifierReference {
32
31
  * ```r
33
32
  * foo(3, 2)
34
33
  * ```
35
- *
36
34
  * @see #isPositionalArgument
37
35
  * @see NamedFunctionArgument
38
36
  */
@@ -95,7 +93,6 @@ export type UnknownSidEffect = NodeId | {
95
93
  * However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
96
94
  *
97
95
  * All methods return the modified graph to allow for chaining.
98
- *
99
96
  * @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
100
97
  * @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
101
98
  * @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
@@ -116,21 +113,17 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
116
113
  private edgeInformation;
117
114
  /**
118
115
  * Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
119
- *
120
116
  * @param id - The id of the node to get
121
117
  * @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
122
118
  * @returns the node info for the given id (if it exists)
123
- *
124
119
  * @see #getVertex
125
120
  */
126
121
  get(id: NodeId, includeDefinedFunctions?: boolean): [Vertex, OutgoingEdges] | undefined;
127
122
  /**
128
123
  * Get the {@link DataflowGraphVertexInfo} attached to a vertex.
129
- *
130
124
  * @param id - The id of the node to get
131
125
  * @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
132
126
  * @returns the node info for the given id (if it exists)
133
- *
134
127
  * @see #get
135
128
  */
136
129
  getVertex(id: NodeId, includeDefinedFunctions?: boolean): Vertex | undefined;
@@ -138,9 +131,9 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
138
131
  ingoingEdges(id: NodeId): IngoingEdges | undefined;
139
132
  /**
140
133
  * Given a node in the normalized AST this either:
141
- * * returns the id if the node directly exists in the DFG
142
- * * returns the ids of all vertices in the DFG that are linked to this
143
- * * returns undefined if the node is not part of the DFG and not linked to any node
134
+ * returns the id if the node directly exists in the DFG
135
+ * returns the ids of all vertices in the DFG that are linked to this
136
+ * returns undefined if the node is not part of the DFG and not linked to any node
144
137
  */
145
138
  getLinked(nodeId: NodeId): NodeId[] | undefined;
146
139
  /** Retrieves the id-map to the normalized AST attached to the dataflow graph */
@@ -157,19 +150,16 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
157
150
  /**
158
151
  * @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
159
152
  * @returns the ids of all toplevel vertices in the graph together with their vertex information
160
- *
161
153
  * @see #edges
162
154
  */
163
155
  vertices(includeDefinedFunctions: boolean): MapIterator<[NodeId, Vertex]>;
164
156
  /**
165
157
  * @returns the ids of all edges in the graph together with their edge information
166
- *
167
158
  * @see #vertices
168
159
  */
169
160
  edges(): MapIterator<[NodeId, OutgoingEdges]>;
170
161
  /**
171
162
  * Returns true if the graph contains a node with the given id.
172
- *
173
163
  * @param id - The id to check for
174
164
  * @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
175
165
  */
@@ -181,12 +171,10 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
181
171
  rootIds(): ReadonlySet<NodeId>;
182
172
  /**
183
173
  * Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
184
- *
185
174
  * @param vertex - The vertex to add
186
175
  * @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
187
176
  * This is probably only of use, when you construct dataflow graphs for tests.
188
177
  * @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
189
- *
190
178
  * @see DataflowGraphVertexInfo
191
179
  * @see DataflowGraphVertexArgument
192
180
  */
@@ -199,10 +187,9 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
199
187
  addEdge(from: NodeId | ReferenceForEdge, to: NodeId | ReferenceForEdge, type: EdgeType | number): this;
200
188
  /**
201
189
  * Merges the other graph into *this* one (in-place). The return value is only for convenience.
202
- *
203
190
  * @param otherGraph - The graph to merge into this one
204
191
  * @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
205
- * in the context of function definitions
192
+ * in the context of function definitions
206
193
  */
207
194
  mergeWith(otherGraph: DataflowGraph<Vertex, Edge> | undefined, mergeRootVertices?: boolean): this;
208
195
  private mergeEdges;
@@ -45,7 +45,6 @@ function getReferenceOfArgument(arg) {
45
45
  * However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
46
46
  *
47
47
  * All methods return the modified graph to allow for chaining.
48
- *
49
48
  * @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
50
49
  * @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
51
50
  * @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
@@ -74,11 +73,9 @@ class DataflowGraph {
74
73
  edgeInformation = new Map();
75
74
  /**
76
75
  * Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
77
- *
78
76
  * @param id - The id of the node to get
79
77
  * @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
80
78
  * @returns the node info for the given id (if it exists)
81
- *
82
79
  * @see #getVertex
83
80
  */
84
81
  get(id, includeDefinedFunctions = true) {
@@ -88,11 +85,9 @@ class DataflowGraph {
88
85
  }
89
86
  /**
90
87
  * Get the {@link DataflowGraphVertexInfo} attached to a vertex.
91
- *
92
88
  * @param id - The id of the node to get
93
89
  * @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
94
90
  * @returns the node info for the given id (if it exists)
95
- *
96
91
  * @see #get
97
92
  */
98
93
  getVertex(id, includeDefinedFunctions = true) {
@@ -112,9 +107,9 @@ class DataflowGraph {
112
107
  }
113
108
  /**
114
109
  * Given a node in the normalized AST this either:
115
- * * returns the id if the node directly exists in the DFG
116
- * * returns the ids of all vertices in the DFG that are linked to this
117
- * * returns undefined if the node is not part of the DFG and not linked to any node
110
+ * returns the id if the node directly exists in the DFG
111
+ * returns the ids of all vertices in the DFG that are linked to this
112
+ * returns undefined if the node is not part of the DFG and not linked to any node
118
113
  */
119
114
  getLinked(nodeId) {
120
115
  if (this.vertexInformation.has(nodeId)) {
@@ -152,7 +147,6 @@ class DataflowGraph {
152
147
  /**
153
148
  * @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
154
149
  * @returns the ids of all toplevel vertices in the graph together with their vertex information
155
- *
156
150
  * @see #edges
157
151
  */
158
152
  *vertices(includeDefinedFunctions) {
@@ -167,7 +161,6 @@ class DataflowGraph {
167
161
  }
168
162
  /**
169
163
  * @returns the ids of all edges in the graph together with their edge information
170
- *
171
164
  * @see #vertices
172
165
  */
173
166
  *edges() {
@@ -175,7 +168,6 @@ class DataflowGraph {
175
168
  }
176
169
  /**
177
170
  * Returns true if the graph contains a node with the given id.
178
- *
179
171
  * @param id - The id to check for
180
172
  * @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
181
173
  */
@@ -193,12 +185,10 @@ class DataflowGraph {
193
185
  }
194
186
  /**
195
187
  * Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
196
- *
197
188
  * @param vertex - The vertex to add
198
189
  * @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
199
190
  * This is probably only of use, when you construct dataflow graphs for tests.
200
191
  * @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
201
- *
202
192
  * @see DataflowGraphVertexInfo
203
193
  * @see DataflowGraphVertexArgument
204
194
  */
@@ -244,10 +234,9 @@ class DataflowGraph {
244
234
  }
245
235
  /**
246
236
  * Merges the other graph into *this* one (in-place). The return value is only for convenience.
247
- *
248
237
  * @param otherGraph - The graph to merge into this one
249
238
  * @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
250
- * in the context of function definitions
239
+ * in the context of function definitions
251
240
  */
252
241
  mergeWith(otherGraph, mergeRootVertices = true) {
253
242
  if (otherGraph === undefined) {
@@ -1,2 +1,5 @@
1
1
  import { DataflowGraph } from './graph';
2
+ /**
3
+ *
4
+ */
2
5
  export declare function invertDfg(graph: DataflowGraph): DataflowGraph;
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.invertDfg = invertDfg;
4
4
  const graph_1 = require("./graph");
5
+ /**
6
+ *
7
+ */
5
8
  function invertDfg(graph) {
6
9
  const invertedGraph = new graph_1.DataflowGraph(graph.idMap);
7
10
  for (const [, v] of graph.vertices(true)) {
@@ -1,4 +1,4 @@
1
- import type { QuadSerializationConfiguration } from '../../util/quads';
1
+ import { type QuadSerializationConfiguration } from '../../util/quads';
2
2
  import type { DataflowGraph } from './graph';
3
3
  /**
4
4
  * @see cfg2quads
@@ -7,5 +7,11 @@ export type ReplacementOperatorHandlerArgs = {
7
7
  id: NodeId;
8
8
  };
9
9
  export type ReplacementOperatorHandler = (args: ReplacementOperatorHandlerArgs) => void;
10
+ /**
11
+ *
12
+ */
10
13
  export declare function onReplacementOperator(handler: ReplacementOperatorHandler): void;
14
+ /**
15
+ *
16
+ */
11
17
  export declare function handleReplacementOperator(args: ReplacementOperatorHandlerArgs): void;
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.onReplacementOperator = onReplacementOperator;
4
4
  exports.handleReplacementOperator = handleReplacementOperator;
5
5
  const handlers = [];
6
+ /**
7
+ *
8
+ */
6
9
  function onReplacementOperator(handler) {
7
10
  handlers.push(handler);
8
11
  }
12
+ /**
13
+ *
14
+ */
9
15
  function handleReplacementOperator(args) {
10
16
  handlers.forEach(handler => handler(args));
11
17
  }
@@ -3,5 +3,13 @@ import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-i
3
3
  import type { REnvironmentInformation } from '../environments/environment';
4
4
  import type { DataflowGraph } from './graph';
5
5
  export type UnknownSideEffectHandler = (graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>) => void;
6
+ /**
7
+ * Globally registers a handler for unknown side effects.
8
+ * @see {@link handleUnknownSideEffect} for triggering the handlers.
9
+ */
6
10
  export declare function onUnknownSideEffect(handler: UnknownSideEffectHandler): void;
11
+ /**
12
+ * Handles an unknown side effect occurring at the given node in the dataflow graph.
13
+ * @see {@link onUnknownSideEffect} for registering handlers.
14
+ */
7
15
  export declare function handleUnknownSideEffect(graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>): void;
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.onUnknownSideEffect = onUnknownSideEffect;
4
4
  exports.handleUnknownSideEffect = handleUnknownSideEffect;
5
5
  const handlers = [];
6
+ /**
7
+ * Globally registers a handler for unknown side effects.
8
+ * @see {@link handleUnknownSideEffect} for triggering the handlers.
9
+ */
6
10
  function onUnknownSideEffect(handler) {
7
11
  handlers.push(handler);
8
12
  }
13
+ /**
14
+ * Handles an unknown side effect occurring at the given node in the dataflow graph.
15
+ * @see {@link onUnknownSideEffect} for registering handlers.
16
+ */
9
17
  function handleUnknownSideEffect(graph, env, id, target) {
10
18
  graph.markIdForUnknownSideEffects(id, target);
11
19
  handlers.forEach(handler => handler(graph, env, id, target));
@@ -43,6 +43,9 @@ export interface NamedArgumentId {
43
43
  readonly index: number | undefined;
44
44
  readonly lexeme: string;
45
45
  }
46
+ /**
47
+ * Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
48
+ */
46
49
  export declare function isNamedArgumentId(identifier: IndexIdentifier): identifier is NamedArgumentId;
47
50
  export type IndexIdentifier = UnnamedArgumentId | NamedArgumentId;
48
51
  /**
@@ -64,7 +67,6 @@ export interface ContainerLeafIndex {
64
67
  * A single index of a container, which is a container itself.
65
68
  *
66
69
  * This can be, e.g., a list, vector, or data frame.
67
- *
68
70
  * @see {@link ContainerLeafIndex} - for a single index of a container which is not a container itself
69
71
  * @see {@link isParentContainerIndex} - to check if an index is a parent container index
70
72
  */
@@ -74,6 +76,9 @@ export interface ContainerParentIndex extends ContainerLeafIndex {
74
76
  */
75
77
  readonly subIndices: ContainerIndices[];
76
78
  }
79
+ /**
80
+ * Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
81
+ */
77
82
  export declare function isParentContainerIndex(index: ContainerIndex): index is ContainerParentIndex;
78
83
  /**
79
84
  * A single index of a container.
@@ -81,13 +86,15 @@ export declare function isParentContainerIndex(index: ContainerIndex): index is
81
86
  export type ContainerIndex = ContainerLeafIndex | ContainerParentIndex;
82
87
  /**
83
88
  * Checks whether {@link index} is accessed by {@link accessLexeme}.
84
- *
85
89
  * @param index - The {@link ContainerIndex}, which is accessed
86
90
  * @param accessLexeme - The access lexeme
87
91
  * @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
88
92
  * @returns true, when {@link accessLexeme} accesses the {@link index}, false otherwise
89
93
  */
90
94
  export declare function isAccessed(index: ContainerIndex, accessLexeme: string, isIndexBasedAccess: boolean): boolean;
95
+ /**
96
+ * Checks whether two {@link ContainerIndex|container indices} are the same.
97
+ */
91
98
  export declare function isSameIndex(a: ContainerIndex, b: ContainerIndex): boolean;
92
99
  /**
93
100
  * List of indices of a single statement like `list(a=3, b=2)`
@@ -108,7 +115,6 @@ export interface ContainerIndices {
108
115
  export type ContainerIndicesCollection = ContainerIndices[] | undefined;
109
116
  /**
110
117
  * Arguments required to construct a vertex in the {@link DataflowGraph|dataflow graph}.
111
- *
112
118
  * @see DataflowGraphVertexUse
113
119
  * @see DataflowGraphVertexVariableDefinition
114
120
  * @see DataflowGraphVertexFunctionDefinition
@@ -153,7 +159,6 @@ export interface DataflowGraphVertexAstLink {
153
159
  *
154
160
  * If you have a {@link DataflowGraph|dataflow graph} named `graph`
155
161
  * with an {@link AstIdMap} and a value vertex object with name `value` the following Code should work:
156
- *
157
162
  * @example
158
163
  * ```ts
159
164
  * const node = graph.idMap.get(value.id)
@@ -164,7 +169,6 @@ export interface DataflowGraphVertexAstLink {
164
169
  *
165
170
  * This works similarly for {@link IdentifierReference|identifier references}
166
171
  * for which you can use the {@link IdentifierReference#nodeId|`nodeId`}.
167
- *
168
172
  * @see {@link isValueVertex} - to check if a vertex is a value vertex
169
173
  */
170
174
  export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
@@ -173,7 +177,6 @@ export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
173
177
  }
174
178
  /**
175
179
  * Arguments required to construct a vertex which represents the usage of a variable in the {@link DataflowGraph|dataflow graph}.
176
- *
177
180
  * @see {@link isUseVertex} - to check if a vertex is a use vertex
178
181
  */
179
182
  export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
@@ -185,7 +188,6 @@ export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
185
188
  * Arguments required to construct a vertex which represents the call to a function in the {@link DataflowGraph|dataflow graph}.
186
189
  * This describes all kinds of function calls, including calls to built-ins and control-flow structures such as `if` or `for` (they are
187
190
  * treated as function calls in R).
188
- *
189
191
  * @see {@link isFunctionCallVertex} - to check if a vertex is a function call vertex
190
192
  */
191
193
  export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase {
@@ -210,7 +212,6 @@ export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase
210
212
  export type FunctionOriginInformation = BuiltInMappingName | string;
211
213
  /**
212
214
  * Arguments required to construct a vertex which represents the definition of a variable in the {@link DataflowGraph|dataflow graph}.
213
- *
214
215
  * @see {@link isVariableDefinitionVertex} - to check if a vertex is a variable definition vertex
215
216
  */
216
217
  export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVertexBase {
@@ -220,7 +221,6 @@ export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVert
220
221
  }
221
222
  /**
222
223
  * Arguments required to construct a vertex which represents the definition of a function in the {@link DataflowGraph|dataflow graph}.
223
- *
224
224
  * @see {@link isFunctionDefinitionVertex} - to check if a vertex is a function definition vertex
225
225
  */
226
226
  export interface DataflowGraphVertexFunctionDefinition extends DataflowGraphVertexBase {
@@ -20,15 +20,20 @@ var VertexType;
20
20
  })(VertexType || (exports.VertexType = VertexType = {}));
21
21
  exports.ValidVertexTypes = new Set(Object.values(VertexType));
22
22
  exports.ValidVertexTypeReverse = Object.fromEntries(Object.entries(VertexType).map(([k, v]) => [v, k]));
23
+ /**
24
+ * Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
25
+ */
23
26
  function isNamedArgumentId(identifier) {
24
27
  return 'lexeme' in identifier;
25
28
  }
29
+ /**
30
+ * Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
31
+ */
26
32
  function isParentContainerIndex(index) {
27
33
  return 'subIndices' in index;
28
34
  }
29
35
  /**
30
36
  * Checks whether {@link index} is accessed by {@link accessLexeme}.
31
- *
32
37
  * @param index - The {@link ContainerIndex}, which is accessed
33
38
  * @param accessLexeme - The access lexeme
34
39
  * @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
@@ -43,6 +48,9 @@ function isAccessed(index, accessLexeme, isIndexBasedAccess) {
43
48
  }
44
49
  return false;
45
50
  }
51
+ /**
52
+ * Checks whether two {@link ContainerIndex|container indices} are the same.
53
+ */
46
54
  function isSameIndex(a, b) {
47
55
  if (isNamedArgumentId(a.identifier) && isNamedArgumentId(b.identifier)) {
48
56
  return a.identifier.lexeme === b.identifier.lexeme;
@@ -8,7 +8,6 @@ import type { GenericDifferenceInformation, WriteableDifferenceReport } from '..
8
8
  * A control dependency links a vertex to the control flow element which
9
9
  * may have an influence on its execution.
10
10
  * Within `if(p) a else b`, `a` and `b` have a control dependency on the `if` (which in turn decides based on `p`).
11
- *
12
11
  * @see {@link happensInEveryBranch} - to check whether a list of control dependencies is exhaustive
13
12
  */
14
13
  export interface ControlDependency {
@@ -16,10 +15,11 @@ export interface ControlDependency {
16
15
  readonly id: NodeId;
17
16
  /** when does this control dependency trigger (if the condition is true or false)? */
18
17
  readonly when?: boolean;
18
+ /** whether this control dependency was created due to iteration (e.g., a loop) */
19
+ readonly byIteration?: boolean;
19
20
  }
20
21
  /**
21
22
  * Classifies the type of exit point encountered.
22
- *
23
23
  * @see {@link ExitPoint}
24
24
  */
25
25
  export declare const enum ExitPointType {
@@ -35,7 +35,6 @@ export declare const enum ExitPointType {
35
35
  /**
36
36
  * An exit point describes the position which ends the current control flow structure.
37
37
  * This may be as innocent as the last expression or explicit with a `return`/`break`/`next`.
38
- *
39
38
  * @see {@link ExitPointType} - for the different types of exit points
40
39
  * @see {@link addNonDefaultExitPoints} - to easily modify lists of exit points
41
40
  * @see {@link alwaysExits} - to check whether a list of control dependencies always triggers an exit
@@ -49,7 +48,6 @@ export interface ExitPoint {
49
48
  /**
50
49
  * Control dependencies which influence if the exit point triggers
51
50
  * (e.g., if the `return` is contained within an `if` statement).
52
- *
53
51
  * @see {@link happensInEveryBranch} - to check whether control dependencies are exhaustive
54
52
  */
55
53
  readonly controlDependencies: ControlDependency[] | undefined;
@@ -73,7 +71,6 @@ export interface DataflowCfgInformation {
73
71
  * to produce a new state of the dataflow information.
74
72
  *
75
73
  * You may initialize a new dataflow information with {@link initializeCleanDataflowInformation}.
76
- *
77
74
  * @see {@link DataflowCfgInformation} - the control flow aspects
78
75
  */
79
76
  export interface DataflowInformation extends DataflowCfgInformation {
@@ -82,19 +79,16 @@ export interface DataflowInformation extends DataflowCfgInformation {
82
79
  *
83
80
  * For example, when we analyze the `x` vertex in `x <- 3`, we will first create an unknown reference for `x`
84
81
  * as we have not yet seen the assignment!
85
- *
86
82
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
87
83
  */
88
84
  unknownReferences: readonly IdentifierReference[];
89
85
  /**
90
86
  * References which are read within the current subtree.
91
- *
92
87
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
93
- * */
88
+ */
94
89
  in: readonly IdentifierReference[];
95
90
  /**
96
91
  * References which are written to within the current subtree
97
- *
98
92
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
99
93
  */
100
94
  out: readonly IdentifierReference[];
@@ -106,7 +100,6 @@ export interface DataflowInformation extends DataflowCfgInformation {
106
100
  /**
107
101
  * Initializes an empty {@link DataflowInformation} object with the given entry point and data.
108
102
  * This is to be used as a "starting point" when processing leaf nodes during the dataflow extraction.
109
- *
110
103
  * @see {@link DataflowInformation}
111
104
  */
112
105
  export declare function initializeCleanDataflowInformation<T>(entryPoint: NodeId, data: Pick<DataflowProcessorInformation<T>, 'environment' | 'builtInEnvironment' | 'completeAst'>): DataflowInformation;
@@ -124,5 +117,11 @@ export declare function alwaysExits(data: DataflowInformation): boolean;
124
117
  * Filters out exit points which end their cascade within a loop.
125
118
  */
126
119
  export declare function filterOutLoopExitPoints(exitPoints: readonly ExitPoint[]): readonly ExitPoint[];
120
+ /**
121
+ * Calculates the difference between two control dependencies.
122
+ */
127
123
  export declare function diffControlDependency<Report extends WriteableDifferenceReport>(a: ControlDependency | undefined, b: ControlDependency | undefined, info: GenericDifferenceInformation<Report>): void;
124
+ /**
125
+ * Calculates the difference between two lists of control dependencies.
126
+ */
128
127
  export declare function diffControlDependencies<Report extends WriteableDifferenceReport>(a: ControlDependency[] | undefined, b: ControlDependency[] | undefined, info: GenericDifferenceInformation<Report>): void;
package/dataflow/info.js CHANGED
@@ -17,7 +17,6 @@ function addNonDefaultExitPoints(existing, add) {
17
17
  /**
18
18
  * Initializes an empty {@link DataflowInformation} object with the given entry point and data.
19
19
  * This is to be used as a "starting point" when processing leaf nodes during the dataflow extraction.
20
- *
21
20
  * @see {@link DataflowInformation}
22
21
  */
23
22
  function initializeCleanDataflowInformation(entryPoint, data) {
@@ -69,6 +68,9 @@ function alwaysExits(data) {
69
68
  function filterOutLoopExitPoints(exitPoints) {
70
69
  return exitPoints.filter(({ type }) => type === 1 /* ExitPointType.Return */ || type === 0 /* ExitPointType.Default */);
71
70
  }
71
+ /**
72
+ * Calculates the difference between two control dependencies.
73
+ */
72
74
  function diffControlDependency(a, b, info) {
73
75
  if (a === undefined || b === undefined) {
74
76
  if (a !== b) {
@@ -83,6 +85,9 @@ function diffControlDependency(a, b, info) {
83
85
  info.report.addComment(`${info.position}Different control dependency when. ${info.leftname}: ${a.when} vs. ${info.rightname}: ${b.when}`);
84
86
  }
85
87
  }
88
+ /**
89
+ * Calculates the difference between two lists of control dependencies.
90
+ */
86
91
  function diffControlDependencies(a, b, info) {
87
92
  if (a === undefined || b === undefined) {
88
93
  if (a !== b) {