@eagleoutice/flowr 2.6.1 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. package/README.md +142 -39
  2. package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
  4. package/abstract-interpretation/data-frame/absint-visitor.js +17 -12
  5. package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
  6. package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
  7. package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
  8. package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
  9. package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
  10. package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
  11. package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
  12. package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
  13. package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +9 -10
  14. package/abstract-interpretation/data-frame/mappers/function-mapper.js +21 -18
  15. package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
  16. package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
  17. package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
  18. package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
  19. package/abstract-interpretation/data-frame/semantics.js +179 -162
  20. package/abstract-interpretation/data-frame/shape-inference.d.ts +4 -7
  21. package/abstract-interpretation/data-frame/shape-inference.js +10 -12
  22. package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
  23. package/abstract-interpretation/domains/abstract-domain.js +74 -1
  24. package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
  25. package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
  26. package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
  27. package/abstract-interpretation/domains/interval-domain.js +109 -50
  28. package/abstract-interpretation/domains/lattice.d.ts +19 -11
  29. package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
  30. package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
  31. package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
  32. package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
  33. package/abstract-interpretation/domains/product-domain.d.ts +18 -23
  34. package/abstract-interpretation/domains/product-domain.js +11 -19
  35. package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
  36. package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
  37. package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
  38. package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
  39. package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
  40. package/abstract-interpretation/domains/singleton-domain.js +52 -37
  41. package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
  42. package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
  43. package/abstract-interpretation/normalized-ast-fold.d.ts +2 -8
  44. package/abstract-interpretation/normalized-ast-fold.js +0 -5
  45. package/benchmark/slicer.d.ts +4 -7
  46. package/benchmark/slicer.js +27 -31
  47. package/benchmark/stats/print.d.ts +6 -0
  48. package/benchmark/stats/print.js +6 -0
  49. package/benchmark/stats/size-of.d.ts +0 -1
  50. package/benchmark/stats/size-of.js +0 -1
  51. package/benchmark/stats/stats.d.ts +2 -2
  52. package/benchmark/stopwatch.d.ts +11 -13
  53. package/benchmark/stopwatch.js +11 -13
  54. package/benchmark/summarizer/first-phase/input.d.ts +6 -0
  55. package/benchmark/summarizer/first-phase/input.js +6 -0
  56. package/benchmark/summarizer/first-phase/process.d.ts +13 -1
  57. package/benchmark/summarizer/first-phase/process.js +13 -1
  58. package/benchmark/summarizer/second-phase/graph.d.ts +5 -0
  59. package/benchmark/summarizer/second-phase/graph.js +5 -0
  60. package/benchmark/summarizer/second-phase/process.d.ts +12 -0
  61. package/benchmark/summarizer/second-phase/process.js +12 -0
  62. package/benchmark/summarizer/summarizer.d.ts +1 -2
  63. package/cli/benchmark-app.js +0 -2
  64. package/cli/common/features.d.ts +7 -1
  65. package/cli/common/features.js +6 -0
  66. package/cli/common/script.d.ts +3 -1
  67. package/cli/common/script.js +3 -1
  68. package/cli/common/scripts-info.d.ts +3 -1
  69. package/cli/common/scripts-info.js +3 -0
  70. package/cli/export-quads-app.js +1 -1
  71. package/cli/flowr-main-options.d.ts +3 -0
  72. package/cli/flowr-main-options.js +3 -0
  73. package/cli/repl/commands/repl-commands.d.ts +13 -0
  74. package/cli/repl/commands/repl-commands.js +13 -2
  75. package/cli/repl/commands/repl-dataflow.js +2 -1
  76. package/cli/repl/commands/repl-execute.d.ts +4 -0
  77. package/cli/repl/commands/repl-execute.js +6 -2
  78. package/cli/repl/commands/repl-main.d.ts +15 -9
  79. package/cli/repl/commands/repl-parse.js +18 -6
  80. package/cli/repl/commands/repl-query.js +16 -5
  81. package/cli/repl/core.d.ts +24 -6
  82. package/cli/repl/core.js +42 -30
  83. package/cli/repl/execute.d.ts +0 -2
  84. package/cli/repl/execute.js +0 -2
  85. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  86. package/cli/repl/parser/slice-query-parser.js +34 -0
  87. package/cli/repl/print-version.d.ts +6 -0
  88. package/cli/repl/print-version.js +6 -0
  89. package/cli/repl/server/compact.d.ts +8 -0
  90. package/cli/repl/server/compact.js +8 -0
  91. package/cli/repl/server/connection.d.ts +4 -3
  92. package/cli/repl/server/connection.js +5 -32
  93. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  94. package/cli/repl/server/messages/all-messages.js +0 -1
  95. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  96. package/cli/repl/server/messages/message-query.d.ts +1 -1
  97. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  98. package/cli/repl/server/send.d.ts +6 -0
  99. package/cli/repl/server/send.js +6 -0
  100. package/cli/repl/server/server.d.ts +1 -1
  101. package/cli/repl/server/validate.d.ts +10 -1
  102. package/cli/repl/server/validate.js +9 -0
  103. package/cli/run-script.d.ts +1 -2
  104. package/cli/run-script.js +0 -1
  105. package/cli/script-core/statistics-core.d.ts +3 -0
  106. package/cli/script-core/statistics-core.js +3 -0
  107. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  108. package/cli/script-core/statistics-helper-core.js +5 -1
  109. package/cli/script-core/summarizer-core.d.ts +3 -0
  110. package/cli/script-core/summarizer-core.js +3 -0
  111. package/cli/slicer-app.js +3 -4
  112. package/cli/summarizer-app.d.ts +2 -3
  113. package/cli/summarizer-app.js +2 -3
  114. package/cli/wiki.d.ts +4 -0
  115. package/cli/wiki.js +165 -0
  116. package/config.d.ts +21 -3
  117. package/config.js +21 -0
  118. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  119. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  120. package/control-flow/cfg-dead-code.js +13 -3
  121. package/control-flow/cfg-simplification.d.ts +5 -2
  122. package/control-flow/cfg-simplification.js +3 -0
  123. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  124. package/control-flow/control-flow-graph.d.ts +20 -12
  125. package/control-flow/control-flow-graph.js +16 -4
  126. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  127. package/control-flow/diff-cfg.d.ts +3 -5
  128. package/control-flow/diff-cfg.js +0 -1
  129. package/control-flow/extract-cfg.d.ts +12 -9
  130. package/control-flow/extract-cfg.js +44 -7
  131. package/control-flow/happens-before.d.ts +1 -1
  132. package/control-flow/semantic-cfg-guided-visitor.d.ts +4 -33
  133. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  134. package/control-flow/simple-visitor.d.ts +1 -3
  135. package/control-flow/simple-visitor.js +2 -4
  136. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  137. package/control-flow/useless-loop.d.ts +3 -6
  138. package/control-flow/useless-loop.js +16 -10
  139. package/core/pipeline-executor.d.ts +11 -22
  140. package/core/pipeline-executor.js +13 -25
  141. package/core/print/dataflow-printer.d.ts +19 -0
  142. package/core/print/dataflow-printer.js +19 -0
  143. package/core/print/normalize-printer.d.ts +21 -1
  144. package/core/print/normalize-printer.js +21 -1
  145. package/core/print/parse-printer.d.ts +6 -1
  146. package/core/print/parse-printer.js +5 -0
  147. package/core/print/print.d.ts +0 -1
  148. package/core/print/print.js +0 -1
  149. package/core/print/slice-diff-ansi.d.ts +3 -0
  150. package/core/print/slice-diff-ansi.js +3 -0
  151. package/core/steps/all/core/00-parse.d.ts +2 -2
  152. package/core/steps/all/core/00-parse.js +1 -1
  153. package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
  154. package/core/steps/all/core/10-normalize.d.ts +3 -6
  155. package/core/steps/all/core/10-normalize.js +1 -13
  156. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +5 -5
  157. package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
  158. package/core/steps/all/core/20-dataflow.d.ts +3 -4
  159. package/core/steps/all/core/20-dataflow.js +2 -2
  160. package/core/steps/all/static-slicing/00-slice.d.ts +1 -2
  161. package/core/steps/all/static-slicing/00-slice.js +1 -1
  162. package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
  163. package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
  164. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  165. package/core/steps/pipeline/default-pipelines.d.ts +94 -95
  166. package/core/steps/pipeline/default-pipelines.js +8 -12
  167. package/core/steps/pipeline/pipeline.d.ts +1 -8
  168. package/core/steps/pipeline/pipeline.js +1 -3
  169. package/core/steps/pipeline-step.d.ts +0 -1
  170. package/core/steps/pipeline-step.js +0 -1
  171. package/dataflow/cluster.d.ts +3 -0
  172. package/dataflow/cluster.js +3 -0
  173. package/dataflow/environments/append.d.ts +1 -1
  174. package/dataflow/environments/built-in-config.d.ts +1 -5
  175. package/dataflow/environments/built-in-config.js +0 -1
  176. package/dataflow/environments/built-in.d.ts +10 -5
  177. package/dataflow/environments/built-in.js +6 -1
  178. package/dataflow/environments/clone.d.ts +1 -2
  179. package/dataflow/environments/clone.js +12 -2
  180. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  181. package/dataflow/environments/default-builtin-config.js +4 -1
  182. package/dataflow/environments/diff.d.ts +11 -2
  183. package/dataflow/environments/diff.js +11 -2
  184. package/dataflow/environments/environment.d.ts +3 -3
  185. package/dataflow/environments/environment.js +8 -6
  186. package/dataflow/environments/identifier.d.ts +0 -4
  187. package/dataflow/environments/identifier.js +0 -1
  188. package/dataflow/environments/overwrite.d.ts +1 -2
  189. package/dataflow/environments/overwrite.js +3 -16
  190. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  191. package/dataflow/environments/resolve-by-name.js +3 -2
  192. package/dataflow/environments/scoping.d.ts +9 -2
  193. package/dataflow/environments/scoping.js +8 -1
  194. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  195. package/dataflow/eval/resolve/alias-tracking.js +11 -14
  196. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  197. package/dataflow/eval/resolve/resolve-argument.js +2 -2
  198. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  199. package/dataflow/eval/resolve/resolve.js +0 -5
  200. package/dataflow/eval/values/general.d.ts +1 -3
  201. package/dataflow/eval/values/general.js +0 -1
  202. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  203. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  204. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  205. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  206. package/dataflow/eval/values/r-value.d.ts +12 -0
  207. package/dataflow/eval/values/r-value.js +12 -0
  208. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  209. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  210. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  211. package/dataflow/eval/values/sets/set-constants.js +6 -0
  212. package/dataflow/eval/values/string/string-constants.d.ts +16 -1
  213. package/dataflow/eval/values/string/string-constants.js +15 -0
  214. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  215. package/dataflow/extractor.d.ts +3 -4
  216. package/dataflow/extractor.js +25 -22
  217. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  218. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  219. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  220. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  221. package/dataflow/graph/edge.d.ts +9 -0
  222. package/dataflow/graph/edge.js +9 -0
  223. package/dataflow/graph/graph.d.ts +9 -28
  224. package/dataflow/graph/graph.js +4 -28
  225. package/dataflow/graph/invert-dfg.d.ts +3 -0
  226. package/dataflow/graph/invert-dfg.js +3 -0
  227. package/dataflow/graph/quads.d.ts +1 -1
  228. package/dataflow/graph/unknown-replacement.d.ts +8 -0
  229. package/dataflow/graph/unknown-replacement.js +8 -0
  230. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  231. package/dataflow/graph/unknown-side-effect.js +8 -0
  232. package/dataflow/graph/vertex.d.ts +9 -9
  233. package/dataflow/graph/vertex.js +9 -1
  234. package/dataflow/info.d.ts +16 -10
  235. package/dataflow/info.js +27 -1
  236. package/dataflow/internal/linker.d.ts +25 -9
  237. package/dataflow/internal/linker.js +30 -11
  238. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  239. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -1
  240. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  241. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  242. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +6 -4
  243. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  244. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +4 -1
  245. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  246. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +4 -4
  247. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  248. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +9 -6
  249. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  250. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +4 -1
  251. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  252. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +4 -1
  253. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  254. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +7 -1
  255. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  257. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  258. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +5 -1
  259. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  260. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  261. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  262. package/dataflow/internal/process/functions/call/built-in/built-in-list.js +2 -2
  263. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  264. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +6 -3
  265. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  266. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  267. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +10 -2
  268. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +8 -0
  269. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  270. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -3
  271. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  272. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  273. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +34 -12
  274. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +90 -68
  275. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +5 -0
  276. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +5 -0
  277. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  278. package/dataflow/internal/process/functions/call/built-in/built-in-vector.js +2 -2
  279. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  280. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +4 -1
  281. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  282. package/dataflow/internal/process/functions/call/common.js +9 -3
  283. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  284. package/dataflow/internal/process/functions/call/default-call-handling.js +5 -0
  285. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  286. package/dataflow/internal/process/functions/call/known-call-handling.js +10 -3
  287. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  288. package/dataflow/internal/process/functions/call/named-call-handling.js +10 -4
  289. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  290. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  291. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  292. package/dataflow/internal/process/functions/process-argument.js +6 -0
  293. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  294. package/dataflow/internal/process/functions/process-parameter.js +7 -4
  295. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  296. package/dataflow/internal/process/process-symbol.js +3 -0
  297. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  298. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  299. package/dataflow/internal/process/process-value.d.ts +3 -0
  300. package/dataflow/internal/process/process-value.js +3 -0
  301. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  302. package/dataflow/origin/dfg-get-symbol-refs.d.ts +6 -8
  303. package/dataflow/origin/dfg-get-symbol-refs.js +7 -9
  304. package/dataflow/processor.d.ts +6 -12
  305. package/dataflow/processor.js +0 -1
  306. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -2
  307. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  308. package/documentation/data/faq/faqs.d.ts +5 -0
  309. package/documentation/data/faq/faqs.js +87 -0
  310. package/documentation/data/faq/recommended-configs.d.ts +36 -0
  311. package/documentation/data/faq/recommended-configs.js +40 -0
  312. package/documentation/data/faq/wiki-faq-store.d.ts +19 -0
  313. package/documentation/data/faq/wiki-faq-store.js +83 -0
  314. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  315. package/documentation/data/server/doc-data-server-messages.js +5 -64
  316. package/documentation/doc-capabilities.d.ts +9 -0
  317. package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
  318. package/documentation/doc-readme.d.ts +9 -0
  319. package/documentation/{print-readme.js → doc-readme.js} +136 -35
  320. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  321. package/documentation/doc-util/doc-auto-gen.js +6 -0
  322. package/documentation/doc-util/doc-benchmarks.d.ts +14 -0
  323. package/documentation/doc-util/doc-benchmarks.js +14 -0
  324. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  325. package/documentation/doc-util/doc-cfg.js +14 -8
  326. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  327. package/documentation/doc-util/doc-cli-option.js +9 -0
  328. package/documentation/doc-util/doc-code.d.ts +24 -0
  329. package/documentation/doc-util/doc-code.js +24 -0
  330. package/documentation/doc-util/doc-dfg.d.ts +12 -6
  331. package/documentation/doc-util/doc-dfg.js +19 -10
  332. package/documentation/doc-util/doc-env.d.ts +3 -0
  333. package/documentation/doc-util/doc-env.js +3 -0
  334. package/documentation/doc-util/doc-escape.d.ts +6 -1
  335. package/documentation/doc-util/doc-escape.js +11 -1
  336. package/documentation/doc-util/doc-files.d.ts +11 -0
  337. package/documentation/doc-util/doc-files.js +15 -4
  338. package/documentation/doc-util/doc-general.d.ts +26 -0
  339. package/documentation/doc-util/doc-general.js +26 -0
  340. package/documentation/doc-util/doc-normalized-ast.d.ts +14 -3
  341. package/documentation/doc-util/doc-normalized-ast.js +16 -7
  342. package/documentation/doc-util/doc-query.d.ts +26 -3
  343. package/documentation/doc-util/doc-query.js +34 -12
  344. package/documentation/doc-util/doc-repl.d.ts +6 -0
  345. package/documentation/doc-util/doc-repl.js +6 -0
  346. package/documentation/doc-util/doc-search.d.ts +3 -18
  347. package/documentation/doc-util/doc-search.js +6 -62
  348. package/documentation/doc-util/doc-server-message.d.ts +18 -6
  349. package/documentation/doc-util/doc-server-message.js +17 -5
  350. package/documentation/doc-util/doc-structure.d.ts +9 -0
  351. package/documentation/doc-util/doc-structure.js +10 -1
  352. package/documentation/doc-util/doc-types.d.ts +90 -11
  353. package/documentation/doc-util/doc-types.js +128 -39
  354. package/documentation/index.d.ts +9 -9
  355. package/documentation/index.js +9 -9
  356. package/documentation/issue-linting-rule.d.ts +9 -0
  357. package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
  358. package/documentation/wiki-analyzer.d.ts +9 -0
  359. package/documentation/wiki-analyzer.js +412 -0
  360. package/documentation/wiki-cfg.d.ts +9 -0
  361. package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
  362. package/documentation/wiki-core.d.ts +14 -0
  363. package/documentation/{print-core-wiki.js → wiki-core.js} +167 -175
  364. package/documentation/wiki-dataflow-graph.d.ts +9 -0
  365. package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +145 -175
  366. package/documentation/wiki-engine.d.ts +9 -0
  367. package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
  368. package/documentation/wiki-faq.d.ts +8 -0
  369. package/documentation/wiki-faq.js +22 -0
  370. package/documentation/wiki-interface.d.ts +9 -0
  371. package/documentation/{print-interface-wiki.js → wiki-interface.js} +60 -57
  372. package/documentation/wiki-linter.d.ts +9 -0
  373. package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
  374. package/documentation/wiki-linting-and-testing.d.ts +9 -0
  375. package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
  376. package/documentation/wiki-mk/doc-context.d.ts +186 -0
  377. package/documentation/wiki-mk/doc-context.js +84 -0
  378. package/documentation/wiki-mk/doc-maker.d.ts +95 -0
  379. package/documentation/wiki-mk/doc-maker.js +133 -0
  380. package/documentation/wiki-normalized-ast.d.ts +9 -0
  381. package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
  382. package/documentation/wiki-onboarding.d.ts +8 -0
  383. package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
  384. package/documentation/wiki-query.d.ts +9 -0
  385. package/documentation/{print-query-wiki.js → wiki-query.js} +65 -80
  386. package/documentation/wiki-search.d.ts +9 -0
  387. package/documentation/wiki-search.js +61 -0
  388. package/engines.d.ts +1 -1
  389. package/linter/linter-executor.d.ts +6 -3
  390. package/linter/linter-executor.js +6 -2
  391. package/linter/linter-format.d.ts +10 -2
  392. package/linter/linter-format.js +8 -0
  393. package/linter/linter-rules.d.ts +13 -17
  394. package/linter/rules/absolute-path.d.ts +4 -6
  395. package/linter/rules/absolute-path.js +2 -2
  396. package/linter/rules/dataframe-access-validation.d.ts +4 -5
  397. package/linter/rules/dataframe-access-validation.js +21 -19
  398. package/linter/rules/dead-code.d.ts +2 -2
  399. package/linter/rules/deprecated-functions.d.ts +2 -6
  400. package/linter/rules/file-path-validity.d.ts +2 -3
  401. package/linter/rules/file-path-validity.js +4 -4
  402. package/linter/rules/function-finder-util.d.ts +2 -7
  403. package/linter/rules/naming-convention.d.ts +15 -4
  404. package/linter/rules/naming-convention.js +14 -2
  405. package/linter/rules/network-functions.d.ts +2 -2
  406. package/linter/rules/network-functions.js +1 -1
  407. package/linter/rules/seeded-randomness.d.ts +4 -4
  408. package/linter/rules/seeded-randomness.js +33 -13
  409. package/linter/rules/unused-definition.d.ts +3 -4
  410. package/linter/rules/useless-loop.d.ts +3 -4
  411. package/linter/rules/useless-loop.js +2 -2
  412. package/package.json +7 -18
  413. package/project/cache/flowr-analyzer-cache.d.ts +9 -19
  414. package/project/cache/flowr-analyzer-cache.js +17 -44
  415. package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
  416. package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
  417. package/project/context/flowr-analyzer-context.d.ts +31 -9
  418. package/project/context/flowr-analyzer-context.js +48 -4
  419. package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
  420. package/project/context/flowr-analyzer-files-context.d.ts +63 -15
  421. package/project/context/flowr-analyzer-files-context.js +110 -39
  422. package/project/context/flowr-file.d.ts +32 -11
  423. package/project/context/flowr-file.js +30 -9
  424. package/project/flowr-analyzer-builder.d.ts +23 -31
  425. package/project/flowr-analyzer-builder.js +35 -74
  426. package/project/flowr-analyzer.d.ts +79 -29
  427. package/project/flowr-analyzer.js +59 -15
  428. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +8 -2
  429. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
  430. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
  431. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
  432. package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -5
  433. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  434. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
  435. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
  436. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
  437. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
  438. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
  439. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
  440. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
  441. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
  442. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
  443. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
  444. package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
  445. package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
  446. package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
  447. package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
  448. package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
  449. package/project/plugins/flowr-analyzer-plugin.js +2 -0
  450. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
  451. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
  452. package/project/plugins/plugin-registry.d.ts +34 -0
  453. package/project/plugins/plugin-registry.js +62 -0
  454. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  455. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
  456. package/queries/base-query-format.d.ts +2 -2
  457. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  458. package/queries/catalog/call-context-query/call-context-query-executor.js +7 -2
  459. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  460. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +16 -4
  461. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +34 -18
  462. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  463. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  464. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  465. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  466. package/queries/catalog/config-query/config-query-executor.js +3 -0
  467. package/queries/catalog/config-query/config-query-format.d.ts +5 -2
  468. package/queries/catalog/config-query/config-query-format.js +13 -16
  469. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  470. package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
  471. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  472. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  473. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  474. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  475. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  476. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  477. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  478. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  479. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  480. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  481. package/queries/catalog/dependencies-query/dependencies-query-format.js +5 -2
  482. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  483. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  484. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  485. package/queries/catalog/df-shape-query/df-shape-query-format.js +25 -5
  486. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +4 -0
  487. package/queries/catalog/happens-before-query/happens-before-query-executor.js +4 -0
  488. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  489. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  490. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  491. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  492. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
  493. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
  494. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
  495. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  496. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  497. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  498. package/queries/catalog/linter-query/linter-query-format.js +80 -2
  499. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  500. package/queries/catalog/location-map-query/location-map-query-executor.js +7 -2
  501. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  502. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  503. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  504. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  505. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  506. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  507. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  508. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  509. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  510. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  511. package/queries/catalog/project-query/project-query-executor.js +6 -1
  512. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  513. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  514. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  515. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  516. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  517. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  518. package/queries/catalog/search-query/search-query-executor.js +3 -0
  519. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  520. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  521. package/queries/catalog/static-slice-query/static-slice-query-executor.js +10 -1
  522. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  523. package/queries/catalog/static-slice-query/static-slice-query-format.js +30 -1
  524. package/queries/query-print.d.ts +20 -4
  525. package/queries/query-print.js +18 -2
  526. package/queries/query.d.ts +93 -55
  527. package/queries/query.js +55 -23
  528. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  529. package/r-bridge/data/get.d.ts +6 -0
  530. package/r-bridge/data/get.js +6 -0
  531. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -2
  532. package/r-bridge/lang-4.x/ast/model/collect.js +4 -1
  533. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  534. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  535. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  536. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  537. package/r-bridge/lang-4.x/ast/model/nodes/r-project.d.ts +29 -0
  538. package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -0
  539. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  540. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  541. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  542. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  543. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +11 -14
  545. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +30 -17
  546. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  547. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  548. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  549. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  550. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  551. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  552. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  553. package/r-bridge/lang-4.x/ast/model/type.d.ts +6 -5
  554. package/r-bridge/lang-4.x/ast/model/type.js +6 -5
  555. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  556. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  557. package/r-bridge/lang-4.x/ast/parser/json/format.js +1 -1
  558. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +12 -12
  559. package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -11
  560. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  561. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  562. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  563. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  564. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  565. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  566. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  567. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  568. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  569. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  570. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  571. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  572. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  573. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  574. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  575. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  576. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  577. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  578. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  579. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  580. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  581. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  582. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  583. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  584. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  585. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  586. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  587. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  588. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  589. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  590. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  591. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  592. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  593. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  594. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.d.ts +4 -3
  595. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
  596. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  597. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  598. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  599. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  600. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  601. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  602. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  603. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  604. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  605. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  606. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  607. package/r-bridge/lang-4.x/convert-values.js +12 -1
  608. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  609. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +18 -0
  610. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +15 -2
  611. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +62 -24
  612. package/r-bridge/parser.d.ts +43 -12
  613. package/r-bridge/parser.js +27 -13
  614. package/r-bridge/retriever.d.ts +25 -16
  615. package/r-bridge/retriever.js +29 -5
  616. package/r-bridge/shell-executor.d.ts +3 -3
  617. package/r-bridge/shell-executor.js +6 -1
  618. package/r-bridge/shell.d.ts +24 -23
  619. package/r-bridge/shell.js +37 -31
  620. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -2
  621. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  622. package/reconstruct/auto-select/magic-comments.js +2 -3
  623. package/reconstruct/reconstruct.d.ts +18 -12
  624. package/reconstruct/reconstruct.js +19 -10
  625. package/search/flowr-search-builder.d.ts +12 -5
  626. package/search/flowr-search-builder.js +7 -2
  627. package/search/flowr-search-executor.d.ts +3 -3
  628. package/search/flowr-search-filters.d.ts +14 -1
  629. package/search/flowr-search-filters.js +13 -0
  630. package/search/flowr-search-printer.d.ts +6 -0
  631. package/search/flowr-search-printer.js +6 -0
  632. package/search/flowr-search-traverse.d.ts +1 -1
  633. package/search/flowr-search.d.ts +15 -3
  634. package/search/search-executor/search-enrichers.d.ts +16 -6
  635. package/search/search-executor/search-enrichers.js +4 -3
  636. package/search/search-executor/search-generators.d.ts +19 -10
  637. package/search/search-executor/search-generators.js +57 -5
  638. package/search/search-executor/search-mappers.d.ts +8 -5
  639. package/search/search-executor/search-mappers.js +3 -0
  640. package/search/search-executor/search-transformer.d.ts +19 -16
  641. package/search/search-executor/search-transformer.js +3 -0
  642. package/slicing/criterion/collect-all.d.ts +13 -12
  643. package/slicing/criterion/collect-all.js +1 -1
  644. package/slicing/criterion/parse.d.ts +4 -2
  645. package/slicing/criterion/parse.js +8 -6
  646. package/slicing/static/fingerprint.d.ts +9 -1
  647. package/slicing/static/fingerprint.js +8 -0
  648. package/slicing/static/slice-call.d.ts +2 -2
  649. package/slicing/static/static-slicer.d.ts +8 -4
  650. package/slicing/static/static-slicer.js +5 -1
  651. package/slicing/static/visiting-queue.d.ts +1 -1
  652. package/statistics/features/common-syntax-probability.d.ts +10 -1
  653. package/statistics/features/common-syntax-probability.js +9 -0
  654. package/statistics/features/feature.d.ts +0 -4
  655. package/statistics/features/feature.js +0 -1
  656. package/statistics/features/post-processing.d.ts +6 -0
  657. package/statistics/features/post-processing.js +6 -0
  658. package/statistics/features/supported/assignments/assignments.js +1 -1
  659. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  660. package/statistics/features/supported/assignments/post-process.js +3 -0
  661. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  662. package/statistics/features/supported/comments/post-process.js +3 -0
  663. package/statistics/features/supported/control-flow/control-flow.js +1 -1
  664. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  665. package/statistics/features/supported/control-flow/post-process.js +3 -0
  666. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  667. package/statistics/features/supported/data-access/data-access.js +1 -1
  668. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  669. package/statistics/features/supported/data-access/post-process.js +3 -0
  670. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  671. package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
  672. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  673. package/statistics/features/supported/expression-list/post-process.js +3 -0
  674. package/statistics/features/supported/expression-list/statistics-expression-list.js +1 -1
  675. package/statistics/features/supported/loops/loops.js +1 -1
  676. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  677. package/statistics/features/supported/loops/post-process.js +3 -0
  678. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  679. package/statistics/features/supported/used-functions/used-functions.js +1 -1
  680. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  681. package/statistics/features/supported/used-packages/post-process.js +3 -0
  682. package/statistics/features/supported/values/post-process.d.ts +3 -0
  683. package/statistics/features/supported/values/post-process.js +3 -0
  684. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  685. package/statistics/features/supported/variables/post-process.js +6 -0
  686. package/statistics/features/supported/variables/variables.js +1 -1
  687. package/statistics/meta-statistics.d.ts +8 -9
  688. package/statistics/output/file-provider.d.ts +5 -6
  689. package/statistics/output/file-provider.js +5 -6
  690. package/statistics/output/print-stats.d.ts +13 -1
  691. package/statistics/output/print-stats.js +12 -0
  692. package/statistics/output/statistics-file.d.ts +1 -2
  693. package/statistics/output/statistics-file.js +0 -1
  694. package/statistics/statistics.d.ts +3 -4
  695. package/statistics/statistics.js +4 -4
  696. package/statistics/summarizer/auto-detect.d.ts +3 -0
  697. package/statistics/summarizer/auto-detect.js +3 -0
  698. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  699. package/statistics/summarizer/post-process/clusterer.js +0 -2
  700. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  701. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  702. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  703. package/statistics/summarizer/post-process/histogram.js +0 -2
  704. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  705. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  706. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  707. package/statistics/summarizer/second-phase/process.js +3 -1
  708. package/statistics/summarizer/summarizer.d.ts +1 -2
  709. package/util/assert.d.ts +56 -2
  710. package/util/assert.js +56 -2
  711. package/util/collections/arrays.d.ts +10 -5
  712. package/util/collections/arrays.js +10 -5
  713. package/util/collections/defaultmap.d.ts +11 -11
  714. package/util/collections/defaultmap.js +11 -11
  715. package/util/containers.d.ts +2 -7
  716. package/util/containers.js +0 -5
  717. package/util/diff-graph.d.ts +0 -1
  718. package/util/diff-graph.js +0 -1
  719. package/util/diff.d.ts +3 -1
  720. package/util/diff.js +3 -1
  721. package/util/files.d.ts +12 -12
  722. package/util/files.js +11 -11
  723. package/util/html-hover-over.d.ts +5 -0
  724. package/util/html-hover-over.js +5 -0
  725. package/util/json.d.ts +13 -0
  726. package/util/json.js +13 -0
  727. package/util/log.d.ts +2 -2
  728. package/util/log.js +2 -2
  729. package/util/mermaid/ast.d.ts +7 -3
  730. package/util/mermaid/ast.js +39 -8
  731. package/util/mermaid/cfg.d.ts +1 -1
  732. package/util/mermaid/cfg.js +1 -1
  733. package/util/mermaid/dfg.d.ts +12 -4
  734. package/util/mermaid/dfg.js +9 -1
  735. package/util/mermaid/mermaid.d.ts +6 -1
  736. package/util/mermaid/mermaid.js +6 -1
  737. package/util/numbers.d.ts +7 -0
  738. package/util/numbers.js +7 -0
  739. package/util/objects.d.ts +0 -2
  740. package/util/os.d.ts +3 -0
  741. package/util/os.js +3 -0
  742. package/util/parallel.d.ts +4 -4
  743. package/util/parallel.js +4 -4
  744. package/util/prefix.d.ts +0 -1
  745. package/util/prefix.js +0 -1
  746. package/util/quads.d.ts +14 -17
  747. package/util/quads.js +3 -5
  748. package/util/r-value.d.ts +10 -1
  749. package/util/r-value.js +21 -0
  750. package/util/random.d.ts +3 -0
  751. package/util/random.js +3 -0
  752. package/util/range.d.ts +9 -3
  753. package/util/range.js +15 -2
  754. package/util/schema.d.ts +14 -1
  755. package/util/schema.js +15 -2
  756. package/util/simple-df/dfg-view.d.ts +4 -1
  757. package/util/simple-df/dfg-view.js +4 -1
  758. package/util/summarizer.d.ts +9 -1
  759. package/util/summarizer.js +9 -0
  760. package/util/text/ansi.d.ts +3 -0
  761. package/util/text/ansi.js +3 -0
  762. package/util/text/args.d.ts +2 -4
  763. package/util/text/args.js +7 -5
  764. package/util/text/text.d.ts +4 -0
  765. package/util/text/text.js +4 -0
  766. package/util/text/time.d.ts +0 -1
  767. package/util/text/time.js +0 -1
  768. package/util/version.d.ts +12 -3
  769. package/util/version.js +12 -3
  770. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  771. package/abstract-interpretation/data-frame/domain.js +0 -315
  772. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  773. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  774. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  775. package/cli/repl/commands/repl-lineage.js +0 -66
  776. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  777. package/cli/repl/server/messages/message-lineage.js +0 -25
  778. package/documentation/print-analyzer-wiki.d.ts +0 -1
  779. package/documentation/print-analyzer-wiki.js +0 -137
  780. package/documentation/print-capabilities-markdown.d.ts +0 -1
  781. package/documentation/print-cfg-wiki.d.ts +0 -1
  782. package/documentation/print-core-wiki.d.ts +0 -2
  783. package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
  784. package/documentation/print-engines-wiki.d.ts +0 -1
  785. package/documentation/print-faq-wiki.d.ts +0 -1
  786. package/documentation/print-faq-wiki.js +0 -90
  787. package/documentation/print-interface-wiki.d.ts +0 -1
  788. package/documentation/print-linter-issue.d.ts +0 -1
  789. package/documentation/print-linter-wiki.d.ts +0 -1
  790. package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
  791. package/documentation/print-normalized-ast-wiki.d.ts +0 -1
  792. package/documentation/print-onboarding-wiki.d.ts +0 -1
  793. package/documentation/print-query-wiki.d.ts +0 -1
  794. package/documentation/print-readme.d.ts +0 -1
  795. package/documentation/print-search-wiki.d.ts +0 -1
  796. package/documentation/print-search-wiki.js +0 -74
  797. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  798. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  799. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  800. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
  801. package/util/formats/adapter-format.d.ts +0 -6
  802. package/util/formats/adapter-format.js +0 -3
  803. package/util/formats/adapter.d.ts +0 -18
  804. package/util/formats/adapter.js +0 -49
  805. package/util/formats/adapters/r-adapter.d.ts +0 -4
  806. package/util/formats/adapters/r-adapter.js +0 -7
  807. package/util/formats/adapters/rmd-adapter.d.ts +0 -26
  808. package/util/formats/adapters/rmd-adapter.js +0 -91
@@ -4,6 +4,9 @@ exports.findAllClusters = findAllClusters;
4
4
  const edge_1 = require("./graph/edge");
5
5
  const vertex_1 = require("./graph/vertex");
6
6
  const assert_1 = require("../util/assert");
7
+ /**
8
+ * Find all clusters in the given dataflow graph.
9
+ */
7
10
  function findAllClusters(graph) {
8
11
  const clusters = [];
9
12
  // we reverse the vertices since dependencies usually point "backwards" from later nodes
@@ -1,4 +1,4 @@
1
- import type { REnvironmentInformation } from './environment';
1
+ import { type REnvironmentInformation } from './environment';
2
2
  /**
3
3
  * Adds all writes of `next` to `base` (i.e., the operations of `next` *might* happen).
4
4
  */
@@ -1,5 +1,4 @@
1
- import type { BuiltInMappingName, ConfigOfBuiltInMappingName } from './built-in';
2
- import { BuiltIns } from './built-in';
1
+ import { type BuiltInMappingName, type ConfigOfBuiltInMappingName, BuiltIns } from './built-in';
3
2
  import type { Identifier } from './identifier';
4
3
  export interface BaseBuiltInDefinition {
5
4
  /** The type of the built-in configuration */
@@ -11,7 +10,6 @@ export interface BaseBuiltInDefinition {
11
10
  }
12
11
  /**
13
12
  * Define a built-in constant (like `NULL` or `TRUE`) and the TS value it should have
14
- *
15
13
  * @template Value - The type of the constant value
16
14
  */
17
15
  export interface BuiltInConstantDefinition<Value> extends BaseBuiltInDefinition {
@@ -21,7 +19,6 @@ export interface BuiltInConstantDefinition<Value> extends BaseBuiltInDefinition
21
19
  }
22
20
  /**
23
21
  * Define a built-in function (like `print` or `c`) and the processor to use.
24
- *
25
22
  * @template BuiltInProcessor - The processor to use for this function
26
23
  */
27
24
  export interface BuiltInFunctionDefinition<BuiltInProcessor extends BuiltInMappingName> extends BaseBuiltInDefinition {
@@ -52,7 +49,6 @@ export type BuiltInDefinitions = BuiltInDefinition[];
52
49
  export declare function getDefaultBuiltInDefinitions(): BuiltIns;
53
50
  /**
54
51
  * Get the {@link BuiltIns#builtInMemory} and {@link BuiltIns#emptyBuiltInMemory} for the given list of built-in definitions.
55
- *
56
52
  * @param definitions - the list of built-in definitions
57
53
  * @param loadDefaults - whether to first add the {@link DefaultBuiltinConfig} before the given {@link definitions}
58
54
  */
@@ -16,7 +16,6 @@ function getDefaultBuiltInDefinitions() {
16
16
  }
17
17
  /**
18
18
  * Get the {@link BuiltIns#builtInMemory} and {@link BuiltIns#emptyBuiltInMemory} for the given list of built-in definitions.
19
- *
20
19
  * @param definitions - the list of built-in definitions
21
20
  * @param loadDefaults - whether to first add the {@link DefaultBuiltinConfig} before the given {@link definitions}
22
21
  */
@@ -8,15 +8,14 @@ import { processPipe } from '../internal/process/functions/call/built-in/built-i
8
8
  import { processForLoop } from '../internal/process/functions/call/built-in/built-in-for-loop';
9
9
  import { processRepeatLoop } from '../internal/process/functions/call/built-in/built-in-repeat-loop';
10
10
  import { processWhileLoop } from '../internal/process/functions/call/built-in/built-in-while-loop';
11
- import type { Identifier, IdentifierDefinition, IdentifierReference } from './identifier';
12
- import { ReferenceType } from './identifier';
11
+ import { type Identifier, type IdentifierDefinition, type IdentifierReference, ReferenceType } from './identifier';
13
12
  import { processReplacementFunction } from '../internal/process/functions/call/built-in/built-in-replacement';
14
13
  import { processQuote } from '../internal/process/functions/call/built-in/built-in-quote';
15
14
  import { processFunctionDefinition } from '../internal/process/functions/call/built-in/built-in-function-definition';
16
15
  import { processExpressionList } from '../internal/process/functions/call/built-in/built-in-expression-list';
17
16
  import { processGet } from '../internal/process/functions/call/built-in/built-in-get';
18
17
  import type { AstIdMap, ParentInformation, RNodeWithParent } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
19
- import type { RFunctionArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
18
+ import { type RFunctionArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
20
19
  import type { RSymbol } from '../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
21
20
  import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
22
21
  import { processLibrary } from '../internal/process/functions/call/built-in/built-in-library';
@@ -35,7 +34,13 @@ import type { DataflowGraph } from '../graph/graph';
35
34
  import type { VariableResolve } from '../../config';
36
35
  import type { BuiltInConstantDefinition, BuiltInDefinition, BuiltInFunctionDefinition, BuiltInReplacementDefinition } from './built-in-config';
37
36
  export type BuiltIn = `built-in:${string}`;
37
+ /**
38
+ * Generate a built-in id for the given name
39
+ */
38
40
  export declare function builtInId(name: string): BuiltIn;
41
+ /**
42
+ * Checks whether the given name is a built-in identifier
43
+ */
39
44
  export declare function isBuiltIn(name: NodeId | string): name is BuiltIn;
40
45
  export type BuiltInIdentifierProcessor = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>) => DataflowInformation;
41
46
  export type BuiltInIdentifierProcessorWithConfig<Config> = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: Config) => DataflowInformation;
@@ -58,7 +63,8 @@ export interface DefaultBuiltInProcessorConfiguration extends ForceArguments {
58
63
  readonly hasUnknownSideEffects?: boolean | LinkTo<RegExp | string>;
59
64
  /** record mapping the actual function name called to the arguments that should be treated as function calls */
60
65
  readonly treatAsFnCall?: Record<string, readonly string[]>;
61
- /** Name that should be used for the origin (useful when needing to differentiate between
66
+ /**
67
+ * Name that should be used for the origin (useful when needing to differentiate between
62
68
  * functions like 'return' that use the default builtin processor)
63
69
  */
64
70
  readonly useAsProcessor?: UseAsProcessors;
@@ -125,7 +131,6 @@ export declare class BuiltIns {
125
131
  * The twin of the {@link builtInMemory} but with less built ins defined for
126
132
  * cases in which we want some commonly overwritten variables to remain open.
127
133
  * If you do not know if you need the empty environment, you do not need the empty environment (right now).
128
- *
129
134
  * @see {@link builtInMemory}
130
135
  */
131
136
  emptyBuiltInMemory: BuiltInMemory;
@@ -32,9 +32,15 @@ const vertex_1 = require("../graph/vertex");
32
32
  const type_1 = require("../../r-bridge/lang-4.x/ast/model/type");
33
33
  const unknown_side_effect_1 = require("../graph/unknown-side-effect");
34
34
  const resolve_1 = require("../eval/resolve/resolve");
35
+ /**
36
+ * Generate a built-in id for the given name
37
+ */
35
38
  function builtInId(name) {
36
39
  return `built-in:${name}`;
37
40
  }
41
+ /**
42
+ * Checks whether the given name is a built-in identifier
43
+ */
38
44
  function isBuiltIn(name) {
39
45
  return String(name).startsWith('built-in:');
40
46
  }
@@ -218,7 +224,6 @@ class BuiltIns {
218
224
  * The twin of the {@link builtInMemory} but with less built ins defined for
219
225
  * cases in which we want some commonly overwritten variables to remain open.
220
226
  * If you do not know if you need the empty environment, you do not need the empty environment (right now).
221
- *
222
227
  * @see {@link builtInMemory}
223
228
  */
224
229
  emptyBuiltInMemory = new Map();
@@ -1,8 +1,7 @@
1
- import type { REnvironmentInformation } from './environment';
1
+ import { type REnvironmentInformation } from './environment';
2
2
  /**
3
3
  * Produce a clone of the given environment information.
4
4
  * @param environment - The environment information to clone.
5
- * @param builtInEnvironment - The built-in environment
6
5
  * @param recurseParents - Whether to clone the parent environments as well.
7
6
  */
8
7
  export declare function cloneEnvironmentInformation(environment: REnvironmentInformation, recurseParents?: boolean): REnvironmentInformation;
@@ -11,13 +11,23 @@ function cloneEnvironment(environment, recurseParents) {
11
11
  }
12
12
  /* make sure the clone has the same id */
13
13
  const clone = new environment_1.Environment(recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent, environment.builtInEnv);
14
- clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
14
+ if (environment.memory.size < 10) {
15
+ clone.memory = new Map(JSON.parse(JSON.stringify(environment.memory.entries().toArray())));
16
+ }
17
+ else {
18
+ clone.memory = new Map(environment.memory.entries()
19
+ .map(([k, v]) => [k,
20
+ v.map(s => ({
21
+ ...s,
22
+ controlDependencies: s.controlDependencies?.slice()
23
+ }))
24
+ ]));
25
+ }
15
26
  return clone;
16
27
  }
17
28
  /**
18
29
  * Produce a clone of the given environment information.
19
30
  * @param environment - The environment information to clone.
20
- * @param builtInEnvironment - The built-in environment
21
31
  * @param recurseParents - Whether to clone the parent environments as well.
22
32
  */
23
33
  function cloneEnvironmentInformation(environment, recurseParents = true) {
@@ -13,4 +13,7 @@ export declare const GgPlotAddons: string[];
13
13
  * Contains the built-in definitions recognized by flowR
14
14
  */
15
15
  export declare const DefaultBuiltinConfig: BuiltInDefinitions;
16
+ /**
17
+ *
18
+ */
16
19
  export declare function getDefaultProcessor(name: string): BuiltInMappingName | 'unnamed' | undefined;
@@ -93,7 +93,7 @@ function toRegex(n) {
93
93
  * Contains the built-in definitions recognized by flowR
94
94
  */
95
95
  exports.DefaultBuiltinConfig = [
96
- { type: 'constant', names: ['NULL', 'NA'], value: null, assumePrimitive: true },
96
+ { type: 'constant', names: ['NULL', 'NA', 'NaN', 'NA_integer_', 'NA_real_', 'NA_complex_', 'NA_character_'], value: null, assumePrimitive: true },
97
97
  { type: 'constant', names: ['TRUE', 'T'], value: true, assumePrimitive: true },
98
98
  { type: 'constant', names: ['FALSE', 'F'], value: false, assumePrimitive: true },
99
99
  {
@@ -302,6 +302,9 @@ exports.DefaultBuiltinConfig = [
302
302
  }
303
303
  }
304
304
  ];
305
+ /**
306
+ *
307
+ */
305
308
  function getDefaultProcessor(name) {
306
309
  if (name.startsWith(unnamed_call_handling_1.UnnamedFunctionCallPrefix)) {
307
310
  return 'unnamed';
@@ -1,6 +1,15 @@
1
- import type { GenericDifferenceInformation, WriteableDifferenceReport } from '../../util/diff';
2
- import type { IEnvironment, REnvironmentInformation } from './environment';
1
+ import { type GenericDifferenceInformation, type WriteableDifferenceReport } from '../../util/diff';
2
+ import { type IEnvironment, type REnvironmentInformation } from './environment';
3
3
  import type { IdentifierReference } from './identifier';
4
+ /**
5
+ * Compares two identifier references and reports differences.
6
+ */
4
7
  export declare function diffIdentifierReferences<Report extends WriteableDifferenceReport>(a: IdentifierReference | undefined, b: IdentifierReference | undefined, info: GenericDifferenceInformation<Report>): void;
8
+ /**
9
+ * Compares two environments and reports differences.
10
+ */
5
11
  export declare function diffEnvironment<Report extends WriteableDifferenceReport>(a: IEnvironment | undefined, b: IEnvironment | undefined, info: GenericDifferenceInformation<Report>, depth: number): void;
12
+ /**
13
+ * Compares two REnvironmentInformation objects and reports differences.
14
+ */
6
15
  export declare function diffEnvironmentInformation<Report extends WriteableDifferenceReport>(a: REnvironmentInformation | undefined, b: REnvironmentInformation | undefined, info: GenericDifferenceInformation<Report>): void;
@@ -7,6 +7,9 @@ const diff_1 = require("../../util/diff");
7
7
  const environment_1 = require("./environment");
8
8
  const json_1 = require("../../util/json");
9
9
  const info_1 = require("../info");
10
+ /**
11
+ * Compares two identifier references and reports differences.
12
+ */
10
13
  function diffIdentifierReferences(a, b, info) {
11
14
  if (a === undefined || b === undefined) {
12
15
  if (a !== b) {
@@ -30,8 +33,8 @@ function diffMemory(a, b, info) {
30
33
  continue;
31
34
  }
32
35
  // we sort both value arrays by their id so that we have no problems with differently ordered arrays (which have no impact)
33
- const sorted = [...value].sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
34
- const sorted2 = [...value2].sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
36
+ const sorted = value.slice().sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
37
+ const sorted2 = value2.slice().sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
35
38
  for (let i = 0; i < value.length; ++i) {
36
39
  const aVal = sorted[i];
37
40
  const bVal = sorted2[i];
@@ -51,6 +54,9 @@ function diffMemory(a, b, info) {
51
54
  }
52
55
  }
53
56
  }
57
+ /**
58
+ * Compares two environments and reports differences.
59
+ */
54
60
  function diffEnvironment(a, b, info, depth) {
55
61
  if (a === undefined || b === undefined) {
56
62
  if (a !== b) {
@@ -71,6 +77,9 @@ function diffEnvironment(a, b, info, depth) {
71
77
  diffMemory(a, b, { ...info, position: `${info.position}[at level: ${depth}] ` });
72
78
  diffEnvironment(a.parent, b.parent, { ...info, position: `${info.position}Parents of ${a.id} & ${b.id}. ` }, depth--);
73
79
  }
80
+ /**
81
+ * Compares two REnvironmentInformation objects and reports differences.
82
+ */
74
83
  function diffEnvironmentInformation(a, b, info) {
75
84
  if (a === undefined || b === undefined) {
76
85
  if (a !== b) {
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Provides an environment structure similar to R.
3
3
  * This allows the dataflow to hold current definition locations for variables, based on the current scope.
4
- *
5
4
  * @module
6
5
  */
7
6
  import type { IdentifierReference } from './identifier';
@@ -12,6 +11,9 @@ import type { BuiltInMemory } from './built-in';
12
11
  * Marks the reference as maybe (i.e., as controlled by a set of {@link IdentifierReference#controlDependencies|control dependencies}).
13
12
  */
14
13
  export declare function makeReferenceMaybe(ref: IdentifierReference, graph: DataflowGraph, environments: REnvironmentInformation, includeDefs: boolean, defaultCd?: ControlDependency | undefined): IdentifierReference;
14
+ /**
15
+ *
16
+ */
15
17
  export declare function makeAllMaybe(references: readonly IdentifierReference[] | undefined, graph: DataflowGraph, environments: REnvironmentInformation, includeDefs: boolean, defaultCd?: ControlDependency | undefined): IdentifierReference[];
16
18
  /** A single entry/scope within an {@link REnvironmentInformation} */
17
19
  export interface IEnvironment {
@@ -55,8 +57,6 @@ export interface WorkingDirectoryReference {
55
57
  * One important environment is the {@link BuiltIns|BuiltInEnvironment} which contains the default definitions for R's built-in functions and constants.
56
58
  * Please use {@link initializeCleanEnvironments} to initialize the environments (which includes the built-ins).
57
59
  * During serialization, you may want to rely on the {@link builtInEnvJsonReplacer} to avoid the huge built-in environment.
58
- *
59
- *
60
60
  * @see {@link define} - to define a new {@link IdentifierDefinition|identifier definition} within an environment
61
61
  * @see {@link resolveByName} - to resolve an {@link Identifier|identifier/name} to its {@link IdentifierDefinition|definitions} within an environment
62
62
  * @see {@link makeReferenceMaybe} - to attach control dependencies to a reference
@@ -29,16 +29,15 @@ function makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd = u
29
29
  }
30
30
  }
31
31
  }
32
- const node = graph.get(ref.nodeId, true);
32
+ const node = graph.getVertex(ref.nodeId, true);
33
33
  if (node) {
34
- const [fst] = node;
35
- if (fst.cds) {
36
- if (defaultCd && !fst.cds.find(c => c.id === defaultCd.id && c.when === defaultCd.when)) {
37
- fst.cds.push(defaultCd);
34
+ if (node.cds) {
35
+ if (defaultCd && !node.cds.find(c => c.id === defaultCd.id && c.when === defaultCd.when)) {
36
+ node.cds.push(defaultCd);
38
37
  }
39
38
  }
40
39
  else {
41
- fst.cds = defaultCd ? [defaultCd] : [];
40
+ node.cds = defaultCd ? [defaultCd] : [];
42
41
  }
43
42
  }
44
43
  if (ref.controlDependencies) {
@@ -51,6 +50,9 @@ function makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd = u
51
50
  }
52
51
  return ref;
53
52
  }
53
+ /**
54
+ *
55
+ */
54
56
  function makeAllMaybe(references, graph, environments, includeDefs, defaultCd = undefined) {
55
57
  return references?.map(ref => makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd)) ?? [];
56
58
  }
@@ -14,7 +14,6 @@ export type Identifier = string & {
14
14
  * a function when resolving an {@link Identifier|identifier}.
15
15
  * In `c <- 3; print(c(1, 2))` the call to `c` works normally (as the vector constructor),
16
16
  * while writing `c <- function(...) ..1` overshadows the built-in and causes `print` to only output the first element.
17
- *
18
17
  * @see {@link isReferenceType} - for checking if a (potentially joint) reference type contains a certain type
19
18
  * @see {@link ReferenceTypeReverseMapping} - for debugging
20
19
  */
@@ -45,7 +44,6 @@ export declare function isReferenceType(t: ReferenceType, target: ReferenceType)
45
44
  /**
46
45
  * Describes all types of reference (definitions) that can appear within a graph (i.e., that are not built-in like the
47
46
  * default definition for the assignment operator `<-`).
48
- *
49
47
  * @see {@link InGraphIdentifierDefinition} - for the definition of an identifier within the graph
50
48
  */
51
49
  export type InGraphReferenceType = Exclude<ReferenceType, ReferenceType.BuiltInConstant | ReferenceType.BuiltInFunction>;
@@ -61,7 +59,6 @@ export type InGraphReferenceType = Exclude<ReferenceType, ReferenceType.BuiltInC
61
59
  * they indicate the references that are currently (during the analysis at this given node)
62
60
  * {@link DataflowInformation#in|read (`in`)}, {@link DataflowInformation#out|written (`out`)},
63
61
  * or {@link DataflowInformation#unknownReferences|unknown (`unknownReferences`)}.
64
- *
65
62
  * @see {@link InGraphIdentifierDefinition}
66
63
  */
67
64
  export interface IdentifierReference {
@@ -88,7 +85,6 @@ export interface IdentifierReference {
88
85
  * Within a code snippet like `a <- 3`, the symbol processor will first create an
89
86
  * {@link IdentifierReference|identifier reference} for `a` to reference the use
90
87
  * and then promote it to an {@link InGraphIdentifierDefinition|identifier definition}.
91
- *
92
88
  * @see {@link IdentifierReference}
93
89
  */
94
90
  export interface InGraphIdentifierDefinition extends IdentifierReference {
@@ -11,7 +11,6 @@ exports.isReferenceType = isReferenceType;
11
11
  * a function when resolving an {@link Identifier|identifier}.
12
12
  * In `c <- 3; print(c(1, 2))` the call to `c` works normally (as the vector constructor),
13
13
  * while writing `c <- function(...) ..1` overshadows the built-in and causes `print` to only output the first element.
14
- *
15
14
  * @see {@link isReferenceType} - for checking if a (potentially joint) reference type contains a certain type
16
15
  * @see {@link ReferenceTypeReverseMapping} - for debugging
17
16
  */
@@ -1,6 +1,5 @@
1
- import type { IEnvironment, REnvironmentInformation } from './environment';
1
+ import { type REnvironmentInformation } from './environment';
2
2
  import type { ControlDependency } from '../info';
3
- export declare function overwriteIEnvironmentWith(base: IEnvironment | undefined, next: IEnvironment | undefined, includeParent?: boolean, applyCds?: readonly ControlDependency[]): IEnvironment;
4
3
  export declare function overwriteEnvironment(base: REnvironmentInformation, next: REnvironmentInformation | undefined, applyCds?: readonly ControlDependency[]): REnvironmentInformation;
5
4
  export declare function overwriteEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation, applyCds?: readonly ControlDependency[]): REnvironmentInformation;
6
5
  export declare function overwriteEnvironment(base: undefined, next: undefined, applyCds?: readonly ControlDependency[]): undefined;
@@ -1,40 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.overwriteIEnvironmentWith = overwriteIEnvironmentWith;
4
3
  exports.overwriteEnvironment = overwriteEnvironment;
5
4
  const assert_1 = require("../../util/assert");
6
5
  const environment_1 = require("./environment");
7
- const log_1 = require("../../util/log");
8
6
  function anyIsMaybeOrEmpty(values) {
9
- if (values.length === 0) {
10
- return true;
11
- }
12
- for (const val of values) {
13
- if (val.controlDependencies !== undefined) {
14
- return true;
15
- }
16
- }
17
- return false;
7
+ return values.length === 0 || values.some(v => v.controlDependencies !== undefined);
18
8
  }
19
9
  function overwriteIEnvironmentWith(base, next, includeParent = true, applyCds) {
20
10
  (0, assert_1.guard)(base !== undefined && next !== undefined, 'can not overwrite environments with undefined');
21
11
  const map = new Map(base.memory);
22
12
  for (const [key, values] of next.memory) {
23
- if (values.length > 1_000_000) {
24
- log_1.log.warn(`Overwriting environment with ${values.length} definitions for ${key}`);
25
- }
26
13
  const hasMaybe = applyCds !== undefined ? true : anyIsMaybeOrEmpty(values);
27
14
  if (hasMaybe) {
28
15
  const old = map.get(key);
29
16
  // we need to make a copy to avoid side effects for old reference in other environments
30
- const updatedOld = [...old ?? []];
17
+ const updatedOld = old?.slice() ?? [];
31
18
  for (const v of values) {
32
19
  const index = updatedOld.findIndex(o => o.nodeId === v.nodeId && o.definedAt === v.definedAt);
33
20
  if (index < 0) {
34
21
  if (applyCds !== undefined) {
35
22
  updatedOld.push({
36
23
  ...v,
37
- controlDependencies: applyCds.concat(v.controlDependencies ?? [])
24
+ controlDependencies: v.controlDependencies ? applyCds.concat(v.controlDependencies) : applyCds.slice()
38
25
  });
39
26
  }
40
27
  else {
@@ -1,16 +1,16 @@
1
1
  import type { REnvironmentInformation } from './environment';
2
2
  import { Ternary } from '../../util/logic';
3
- import type { Identifier, IdentifierDefinition } from './identifier';
4
- import { ReferenceType } from './identifier';
3
+ import { type Identifier, type IdentifierDefinition, ReferenceType } from './identifier';
5
4
  /**
6
5
  * Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
7
- *
8
6
  * @param name - The name of the identifier to resolve
9
7
  * @param environment - The current environment used for name resolution
10
8
  * @param target - The target (meta) type of the identifier to resolve
11
- *
12
9
  * @returns A list of possible identifier definitions (one if the definition location is exactly and always known), or `undefined`
13
10
  * if the identifier is undefined in the current scope/with the current environment information.
14
11
  */
15
12
  export declare function resolveByName(name: Identifier, environment: REnvironmentInformation, target?: ReferenceType): IdentifierDefinition[] | undefined;
13
+ /**
14
+ *
15
+ */
16
16
  export declare function resolvesToBuiltInConstant(name: Identifier | undefined, environment: REnvironmentInformation, wantedValue: unknown): Ternary;
@@ -22,11 +22,9 @@ const TargetTypePredicate = {
22
22
  };
23
23
  /**
24
24
  * Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
25
- *
26
25
  * @param name - The name of the identifier to resolve
27
26
  * @param environment - The current environment used for name resolution
28
27
  * @param target - The target (meta) type of the identifier to resolve
29
- *
30
28
  * @returns A list of possible identifier definitions (one if the definition location is exactly and always known), or `undefined`
31
29
  * if the identifier is undefined in the current scope/with the current environment information.
32
30
  */
@@ -56,6 +54,9 @@ function resolveByName(name, environment, target = identifier_1.ReferenceType.Un
56
54
  return builtIns;
57
55
  }
58
56
  }
57
+ /**
58
+ *
59
+ */
59
60
  function resolvesToBuiltInConstant(name, environment, wantedValue) {
60
61
  if (name === undefined) {
61
62
  return logic_1.Ternary.Never;
@@ -1,4 +1,11 @@
1
- import type { REnvironmentInformation } from './environment';
2
- /** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
1
+ import { type REnvironmentInformation } from './environment';
2
+ /**
3
+ * Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone)
4
+ * @see {@link popLocalEnvironment} - to remove the local scope again
5
+ */
3
6
  export declare function pushLocalEnvironment(base: REnvironmentInformation): REnvironmentInformation;
7
+ /**
8
+ * Remove the top local environment scope from the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone)
9
+ * @see {@link pushLocalEnvironment} - to add a local scope
10
+ */
4
11
  export declare function popLocalEnvironment(base: REnvironmentInformation): REnvironmentInformation;
@@ -4,13 +4,20 @@ exports.pushLocalEnvironment = pushLocalEnvironment;
4
4
  exports.popLocalEnvironment = popLocalEnvironment;
5
5
  const environment_1 = require("./environment");
6
6
  const assert_1 = require("../../util/assert");
7
- /** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
7
+ /**
8
+ * Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone)
9
+ * @see {@link popLocalEnvironment} - to remove the local scope again
10
+ */
8
11
  function pushLocalEnvironment(base) {
9
12
  return {
10
13
  current: new environment_1.Environment(base.current),
11
14
  level: base.level + 1
12
15
  };
13
16
  }
17
+ /**
18
+ * Remove the top local environment scope from the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone)
19
+ * @see {@link pushLocalEnvironment} - to add a local scope
20
+ */
14
21
  function popLocalEnvironment(base) {
15
22
  (0, assert_1.guard)(base.level > 0, 'cannot remove the global/root environment');
16
23
  const parent = base.current.parent;
@@ -1,10 +1,10 @@
1
1
  import { VariableResolve } from '../../../config';
2
2
  import type { AstIdMap, RNodeWithParent } from '../../../r-bridge/lang-4.x/ast/model/processing/decorate';
3
- import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
4
- import type { REnvironmentInformation } from '../../environments/environment';
5
- import type { Identifier } from '../../environments/identifier';
3
+ import { type NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
4
+ import { type REnvironmentInformation } from '../../environments/environment';
5
+ import { type Identifier } from '../../environments/identifier';
6
6
  import type { DataflowGraph } from '../../graph/graph';
7
- import type { Lift, Value, ValueSet } from '../values/r-value';
7
+ import { type Lift, type Value, type ValueSet } from '../values/r-value';
8
8
  export type ResolveResult = Lift<ValueSet<Value[]>>;
9
9
  export interface ResolveInfo {
10
10
  /** The current environment used for name resolution */
@@ -26,7 +26,6 @@ export interface ResolveInfo {
26
26
  * the sourceIds value field of their InGraphIdentifierDefinition. This enables
27
27
  * us later, in the {@link trackAliasInEnvironments} function, to get all the
28
28
  * aliases of an identifier.
29
- *
30
29
  * @param sourceIds - node ids to get the definitions for
31
30
  * @param dataflow - dataflow graph
32
31
  * @param environment - environment
@@ -45,7 +44,6 @@ export declare function getAliases(sourceIds: readonly NodeId[], dataflow: Dataf
45
44
  * This function is also used by the Resolve Value Query and the Dependency Query
46
45
  * to resolve values. For e.g. in the Dependency Query it is used to resolve calls
47
46
  * like `lapply(c("a", "b", "c"), library, character.only = TRUE)`
48
- *
49
47
  * @param id - The node id or node to resolve
50
48
  * @param environment - The current environment used for name resolution
51
49
  * @param graph - The graph to resolve in
@@ -59,8 +57,6 @@ export declare function resolveIdToValue(id: NodeId | RNodeWithParent | undefine
59
57
  *
60
58
  * Uses the aliases that were tracked in the environments (by the
61
59
  * {@link getAliases} function) to resolve a node to a value.
62
- *
63
- *
64
60
  * @param resolve - Variable resolve mode
65
61
  * @param identifier - Identifier to resolve
66
62
  * @param use - Environment to use
@@ -73,7 +69,6 @@ export declare function trackAliasInEnvironments(resolve: VariableResolve, ident
73
69
  * Please use {@link resolveIdToValue}
74
70
  *
75
71
  * Tries to resolve the value of a node by traversing the dataflow graph
76
- *
77
72
  * @param id - node to resolve
78
73
  * @param graph - dataflow graph
79
74
  * @param idMap - idmap of dataflow graph
@@ -84,7 +79,6 @@ export declare function trackAliasesInGraph(id: NodeId, graph: DataflowGraph, id
84
79
  * Please use {@link resolveIdToValue}
85
80
  *
86
81
  * Resolve an Identifier to a constant, if the identifier is a constant
87
- *
88
82
  * @param name - Identifier to resolve
89
83
  * @param environment - Environment to use
90
84
  * @returns Value of Constant or Top
@@ -77,7 +77,6 @@ function getUseAlias(sourceId, dataflow, environment) {
77
77
  * the sourceIds value field of their InGraphIdentifierDefinition. This enables
78
78
  * us later, in the {@link trackAliasInEnvironments} function, to get all the
79
79
  * aliases of an identifier.
80
- *
81
80
  * @param sourceIds - node ids to get the definitions for
82
81
  * @param dataflow - dataflow graph
83
82
  * @param environment - environment
@@ -109,7 +108,6 @@ function getAliases(sourceIds, dataflow, environment) {
109
108
  * This function is also used by the Resolve Value Query and the Dependency Query
110
109
  * to resolve values. For e.g. in the Dependency Query it is used to resolve calls
111
110
  * like `lapply(c("a", "b", "c"), library, character.only = TRUE)`
112
- *
113
111
  * @param id - The node id or node to resolve
114
112
  * @param environment - The current environment used for name resolution
115
113
  * @param graph - The graph to resolve in
@@ -157,8 +155,6 @@ function resolveIdToValue(id, { environment, graph, idMap, full = true, resolve
157
155
  *
158
156
  * Uses the aliases that were tracked in the environments (by the
159
157
  * {@link getAliases} function) to resolve a node to a value.
160
- *
161
- *
162
158
  * @param resolve - Variable resolve mode
163
159
  * @param identifier - Identifier to resolve
164
160
  * @param use - Environment to use
@@ -256,20 +252,22 @@ function isNestedInLoop(node, ast) {
256
252
  * Please use {@link resolveIdToValue}
257
253
  *
258
254
  * Tries to resolve the value of a node by traversing the dataflow graph
259
- *
260
255
  * @param id - node to resolve
261
256
  * @param graph - dataflow graph
262
257
  * @param idMap - idmap of dataflow graph
263
258
  * @returns Value of node or Top/Bottom
264
259
  */
265
260
  function trackAliasesInGraph(id, graph, idMap) {
261
+ if (!graph.get(id)) {
262
+ return r_value_1.Bottom;
263
+ }
266
264
  idMap ??= graph.idMap;
267
265
  (0, assert_1.guard)(idMap !== undefined, 'The ID map is required to get the lineage of a node');
268
266
  const queue = new visiting_queue_1.VisitingQueue(25);
269
267
  const clean = (0, environment_1.initializeCleanEnvironments)();
270
268
  const cleanFingerprint = (0, fingerprint_1.envFingerprint)(clean);
271
269
  queue.add(id, clean, cleanFingerprint, false);
272
- let forceBot = false;
270
+ let forceTop = false;
273
271
  const resultIds = [];
274
272
  while (queue.nonEmpty()) {
275
273
  const { id, baseEnvironment } = queue.next();
@@ -284,15 +282,15 @@ function trackAliasesInGraph(id, graph, idMap) {
284
282
  if (target === undefined) {
285
283
  continue;
286
284
  }
287
- if (target.type === type_1.RType.WhileLoop || target.type === type_1.RType.RepeatLoop) {
288
- forceBot = true;
285
+ if (target.type === type_1.RType.WhileLoop || target.type === type_1.RType.RepeatLoop || target.type === type_1.RType.ForLoop) {
286
+ forceTop = true;
289
287
  break;
290
288
  }
291
289
  }
292
- if (!forceBot && (cds?.length === 0 && isNestedInLoop(idMap.get(id), idMap))) {
293
- forceBot = true;
290
+ if (!forceTop && (cds?.length === 0 && isNestedInLoop(idMap.get(id), idMap))) {
291
+ forceTop = true;
294
292
  }
295
- if (forceBot) {
293
+ if (forceTop) {
296
294
  break;
297
295
  }
298
296
  if (vertex.tag === vertex_1.VertexType.Value) {
@@ -318,8 +316,8 @@ function trackAliasesInGraph(id, graph, idMap) {
318
316
  }
319
317
  }
320
318
  }
321
- if (forceBot || resultIds.length === 0) {
322
- return r_value_1.Bottom;
319
+ if (forceTop || resultIds.length === 0) {
320
+ return r_value_1.Top;
323
321
  }
324
322
  const values = new Set();
325
323
  for (const id of resultIds) {
@@ -334,7 +332,6 @@ function trackAliasesInGraph(id, graph, idMap) {
334
332
  * Please use {@link resolveIdToValue}
335
333
  *
336
334
  * Resolve an Identifier to a constant, if the identifier is a constant
337
- *
338
335
  * @param name - Identifier to resolve
339
336
  * @param environment - Environment to use
340
337
  * @returns Value of Constant or Top