@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
package/queries/query.js CHANGED
@@ -10,16 +10,17 @@ exports.SupportedQueriesSchema = SupportedQueriesSchema;
10
10
  exports.VirtualQuerySchema = VirtualQuerySchema;
11
11
  exports.AnyQuerySchema = AnyQuerySchema;
12
12
  exports.QueriesSchema = QueriesSchema;
13
+ exports.genericWrapReplFailIfNoRequest = genericWrapReplFailIfNoRequest;
13
14
  const call_context_query_format_1 = require("./catalog/call-context-query/call-context-query-format");
14
15
  const assert_1 = require("../util/assert");
15
16
  const virtual_queries_1 = require("./virtual-query/virtual-queries");
16
17
  const dataflow_query_format_1 = require("./catalog/dataflow-query/dataflow-query-format");
17
18
  const id_map_query_format_1 = require("./catalog/id-map-query/id-map-query-format");
18
19
  const normalized_ast_query_format_1 = require("./catalog/normalized-ast-query/normalized-ast-query-format");
19
- const lineage_query_format_1 = require("./catalog/lineage-query/lineage-query-format");
20
20
  const static_slice_query_format_1 = require("./catalog/static-slice-query/static-slice-query-format");
21
21
  const cluster_query_format_1 = require("./catalog/cluster-query/cluster-query-format");
22
22
  const dependencies_query_format_1 = require("./catalog/dependencies-query/dependencies-query-format");
23
+ const ansi_1 = require("../util/text/ansi");
23
24
  const joi_1 = __importDefault(require("joi"));
24
25
  const location_map_query_format_1 = require("./catalog/location-map-query/location-map-query-format");
25
26
  const config_query_format_1 = require("./catalog/config-query/config-query-format");
@@ -33,6 +34,7 @@ const linter_query_format_1 = require("./catalog/linter-query/linter-query-forma
33
34
  const control_flow_query_format_1 = require("./catalog/control-flow-query/control-flow-query-format");
34
35
  const df_shape_query_format_1 = require("./catalog/df-shape-query/df-shape-query-format");
35
36
  const inspect_higher_order_query_format_1 = require("./catalog/inspect-higher-order-query/inspect-higher-order-query-format");
37
+ const log_1 = require("../util/log");
36
38
  exports.SupportedQueries = {
37
39
  'call-context': call_context_query_format_1.CallContextQueryDefinition,
38
40
  'config': config_query_format_1.ConfigQueryDefinition,
@@ -44,7 +46,6 @@ exports.SupportedQueries = {
44
46
  'normalized-ast': normalized_ast_query_format_1.NormalizedAstQueryDefinition,
45
47
  'dataflow-cluster': cluster_query_format_1.ClusterQueryDefinition,
46
48
  'static-slice': static_slice_query_format_1.StaticSliceQueryDefinition,
47
- 'lineage': lineage_query_format_1.LineageQueryDefinition,
48
49
  'dependencies': dependencies_query_format_1.DependenciesQueryDefinition,
49
50
  'location-map': location_map_query_format_1.LocationMapQueryDefinition,
50
51
  'search': search_query_format_1.SearchQueryDefinition,
@@ -55,6 +56,11 @@ exports.SupportedQueries = {
55
56
  'origin': origin_query_format_1.OriginQueryDefinition,
56
57
  'linter': linter_query_format_1.LinterQueryDefinition
57
58
  };
59
+ /**
60
+ * Executes a set of queries that are all of the same type.
61
+ * Only use this function if you are sure all queries are of the same type.
62
+ * Otherwise, use {@link executeQueries}.
63
+ */
58
64
  async function executeQueriesOfSameType(data, queries) {
59
65
  (0, assert_1.guard)(queries.length > 0, 'At least one query must be provided');
60
66
  /* every query must have the same type */
@@ -86,35 +92,34 @@ function groupQueriesByType(queries) {
86
92
  }
87
93
  return grouped;
88
94
  }
89
- function isPromiseLike(value) {
90
- return value !== null && typeof value === 'object' && typeof value.then === 'function';
91
- }
92
95
  /**
93
96
  * This is the main query execution function that takes a set of queries and executes them on the given data.
97
+ * @see {@link executeQueriesOfSameType}
94
98
  */
95
- function executeQueries(data, queries) {
99
+ async function executeQueries(data, queries) {
96
100
  const now = Date.now();
97
101
  const grouped = groupQueriesByType(queries);
98
102
  const entries = Object.entries(grouped);
99
- const results = entries.map(([type, group]) => [type, executeQueriesOfSameType(data, group)]);
100
- if (results.length === 0 || results.every(([_, r]) => !isPromiseLike(r))) {
101
- // all results are synchronous, we can return them directly
102
- const r = Object.fromEntries(results);
103
- r['.meta'] = {
104
- timing: Date.now() - now
105
- };
106
- return r;
103
+ const results = [];
104
+ for (const [type, group] of entries) {
105
+ try {
106
+ const result = await Promise.resolve(executeQueriesOfSameType(data, group));
107
+ results.push([type, result]);
108
+ }
109
+ catch (e) {
110
+ log_1.log.warn(e);
111
+ results.push([type, undefined]);
112
+ }
107
113
  }
108
- return Promise.all(results.map(([type, result]) => Promise.resolve(result).then(resolvedResult => [type, resolvedResult]).catch(() => {
109
- return [type, undefined];
110
- }))).then(resultsArray => {
111
- const results = Object.fromEntries(resultsArray);
112
- results['.meta'] = {
113
- timing: Date.now() - now
114
- };
115
- return results;
116
- });
114
+ const r = Object.fromEntries(results);
115
+ r['.meta'] = {
116
+ timing: Date.now() - now
117
+ };
118
+ return r;
117
119
  }
120
+ /**
121
+ * Produces a Joi schema representing all supported queries.
122
+ */
118
123
  function SupportedQueriesSchema() {
119
124
  return joi_1.default.alternatives(Object.values(exports.SupportedQueries).map(q => q.schema)).description('Supported queries');
120
125
  }
@@ -124,13 +129,40 @@ exports.CompoundQuerySchema = joi_1.default.object({
124
129
  commonArguments: joi_1.default.object().required().description('Common arguments for all queries.'),
125
130
  arguments: joi_1.default.array().items(joi_1.default.object()).required().description('Arguments for each query.')
126
131
  }).description('Compound query used to combine queries of the same type');
132
+ /**
133
+ * Produces a Joi schema representing all virtual queries.
134
+ */
127
135
  function VirtualQuerySchema() {
128
136
  return joi_1.default.alternatives(exports.CompoundQuerySchema).description('Virtual queries (used for structure)');
129
137
  }
138
+ /**
139
+ * Produces a Joi schema representing any supported query (including virtual queries).
140
+ */
130
141
  function AnyQuerySchema() {
131
142
  return joi_1.default.alternatives(SupportedQueriesSchema(), VirtualQuerySchema()).description('Any query');
132
143
  }
144
+ /**
145
+ * Produces a Joi schema representing an array of supported queries.
146
+ */
133
147
  function QueriesSchema() {
134
148
  return joi_1.default.array().items(AnyQuerySchema()).description('Queries to run on the file analysis information (in the form of an array)');
135
149
  }
150
+ /**
151
+ * Wraps a function that executes a REPL query and, if it fails, checks whether there were any requests to analyze.
152
+ */
153
+ async function genericWrapReplFailIfNoRequest(fn, output, analyzer) {
154
+ try {
155
+ return await fn();
156
+ }
157
+ catch (e) {
158
+ if (analyzer.inspectContext().files.loadingOrder.getUnorderedRequests().length === 0) {
159
+ output.stderr(output.formatter.format('No requests to analyze were found.', { color: 1 /* Colors.Red */, style: 1 /* FontStyles.Bold */, effect: ansi_1.ColorEffect.Foreground })
160
+ + '\nIf you consider this an error, please report a bug: '
161
+ + (0, assert_1.getGuardIssueUrl)('analyzer found no requests to analyze'));
162
+ }
163
+ else {
164
+ throw e;
165
+ }
166
+ }
167
+ }
136
168
  //# sourceMappingURL=query.js.map
@@ -1,6 +1,5 @@
1
1
  import type { QueryArgumentsWithType, SupportedQueryTypes } from '../query';
2
- import type { CompoundQueryFormat, VirtualCompoundConstraint } from './compound-query';
3
- import { executeCompoundQueries } from './compound-query';
2
+ import { type CompoundQueryFormat, type VirtualCompoundConstraint, executeCompoundQueries } from './compound-query';
4
3
  import type { BaseQueryFormat } from '../base-query-format';
5
4
  /** A query that does not perform a search but may perform (e.g., convenience) modifications of other queries */
6
5
  export type VirtualQueryArgumentsWithType<Base extends SupportedQueryTypes, VirtualArguments extends VirtualCompoundConstraint<Base> = VirtualCompoundConstraint<Base>> = CompoundQueryFormat<Base, VirtualArguments>;
@@ -14,6 +14,12 @@ type PathToCapability = readonly number[];
14
14
  export interface FlowrCapabilityWithPath extends FlowrCapability {
15
15
  path: PathToCapability;
16
16
  }
17
+ /**
18
+ * Find a flowR capability by its id.
19
+ */
17
20
  export declare function getCapabilityById(id: FlowrCapabilityId): FlowrCapabilityWithPath;
21
+ /**
22
+ * Get all capabilities with their paths.
23
+ */
18
24
  export declare function getAllCapabilities(): readonly FlowrCapabilityWithPath[];
19
25
  export {};
@@ -21,6 +21,9 @@ function search(id, capabilities, path = []) {
21
21
  return undefined;
22
22
  }
23
23
  const capabilityCache = new Map();
24
+ /**
25
+ * Find a flowR capability by its id.
26
+ */
24
27
  function getCapabilityById(id) {
25
28
  const cached = capabilityCache.get(id);
26
29
  if (cached) {
@@ -31,6 +34,9 @@ function getCapabilityById(id) {
31
34
  capabilityCache.set(id, value);
32
35
  return value;
33
36
  }
37
+ /**
38
+ * Get all capabilities with their paths.
39
+ */
34
40
  function getAllCapabilities() {
35
41
  const result = [];
36
42
  function traverse(capabilities, currentPath = []) {
@@ -1,10 +1,10 @@
1
1
  import type { RNode } from './model';
2
2
  import type { NodeId } from './processing/node-id';
3
3
  import type { ParentInformation } from './processing/decorate';
4
+ import type { RProject } from './nodes/r-project';
4
5
  /**
5
6
  * Collects all node ids within a tree given by a respective root node
6
- *
7
7
  * @param nodes - The root id nodes to start collecting from
8
8
  * @param stop - A function that determines whether to stop collecting at a given node, does not stop by default
9
9
  */
10
- export declare function collectAllIds<OtherInfo>(nodes: RNode<OtherInfo & ParentInformation> | (RNode<OtherInfo & ParentInformation> | null | undefined)[] | undefined, stop?: (node: RNode<OtherInfo & ParentInformation>) => boolean): Set<NodeId>;
10
+ export declare function collectAllIds<OtherInfo>(nodes: RProject<OtherInfo & ParentInformation> | RNode<OtherInfo & ParentInformation> | (RNode<OtherInfo & ParentInformation> | null | undefined)[] | undefined, stop?: (node: RNode<OtherInfo & ParentInformation>) => boolean): Set<NodeId>;
@@ -2,13 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.collectAllIds = collectAllIds;
4
4
  const visitor_1 = require("./processing/visitor");
5
+ const type_1 = require("./type");
5
6
  /**
6
7
  * Collects all node ids within a tree given by a respective root node
7
- *
8
8
  * @param nodes - The root id nodes to start collecting from
9
9
  * @param stop - A function that determines whether to stop collecting at a given node, does not stop by default
10
10
  */
11
11
  function collectAllIds(nodes, stop = () => false) {
12
+ if (nodes && 'type' in nodes && nodes.type === type_1.RType.Project) {
13
+ nodes = nodes.files.map(f => f.root);
14
+ }
12
15
  const ids = new Set();
13
16
  (0, visitor_1.visitAst)(nodes, (node) => {
14
17
  if (stop(node)) {
@@ -31,16 +31,16 @@ export type NoInfo = object;
31
31
  */
32
32
  interface Source {
33
33
  /**
34
- * The range is different from the assigned {@link Location} as it refers to the complete source range covered by the given
35
- * element.
36
- * <p>
37
- * As an example for the difference, consider a for loop, the location of `for` will be just the three characters,
38
- * but the *range* will be everything including the loop body.
39
- */
34
+ * The range is different from the assigned {@link Location} as it refers to the complete source range covered by the given
35
+ * element.
36
+ * <p>
37
+ * As an example for the difference, consider a for loop, the location of `for` will be just the three characters,
38
+ * but the *range* will be everything including the loop body.
39
+ */
40
40
  fullRange?: SourceRange;
41
41
  /**
42
- * Similar to {@link Source.fullRange} this contains the complete R lexeme of the given element.
43
- */
42
+ * Similar to {@link Source.fullRange} this contains the complete R lexeme of the given element.
43
+ */
44
44
  fullLexeme?: string;
45
45
  /**
46
46
  * This may contain additional elements that were part of the original R code, but are not part of the normalized R-ast.
@@ -54,7 +54,6 @@ interface Source {
54
54
  }
55
55
  /**
56
56
  * Provides the common base of all {@link RNode|RNodes}.
57
- *
58
57
  * @typeParam Info - can be used to store additional information about the node
59
58
  * @typeParam LexemeType - the type of the lexeme, probably always a `string` or `string | undefined`
60
59
  */
@@ -85,7 +84,6 @@ export interface Location {
85
84
  /**
86
85
  * The location may differ from what is stated in {@link Source#fullRange} as it
87
86
  * represents the location identified by the R parser.
88
- *
89
87
  * @see Source#fullRange
90
88
  */
91
89
  location: SourceRange;
@@ -144,7 +142,6 @@ export type ROther<Info> = RComment<Info> | RLineDirective<Info>;
144
142
  * All other subtypes (like {@link RLoopConstructs}) listed above
145
143
  * can be used to restrict the kind of node. They do not have to be
146
144
  * exclusive, some nodes can appear in multiple subtypes.
147
- *
148
145
  * @see {@link recoverName} - to receive the name/lexeme from such a node
149
146
  * @see {@link recoverContent} - for a more rigorous approach to get the content of a node within a {@link DataflowGraph|dataflow graph}
150
147
  */
@@ -6,7 +6,6 @@ export declare const EmptyArgument = "<>";
6
6
  export type RFunctionArgument<Info = NoInfo> = RArgument<Info> | typeof EmptyArgument;
7
7
  /**
8
8
  * Calls of functions like `a()` and `foo(42, "hello")`.
9
- *
10
9
  * @see RUnnamedFunctionCall
11
10
  */
12
11
  export interface RNamedFunctionCall<Info = NoInfo> extends Base<Info>, Location {
@@ -18,7 +17,6 @@ export interface RNamedFunctionCall<Info = NoInfo> extends Base<Info>, Location
18
17
  }
19
18
  /**
20
19
  * Direct calls of functions like `(function(x) { x })(3)`.
21
- *
22
20
  * @see RNamedFunctionCall
23
21
  */
24
22
  export interface RUnnamedFunctionCall<Info = NoInfo> extends Base<Info>, Location {
@@ -10,4 +10,7 @@ export interface RNumber<Info = NoInfo> extends Leaf<Info>, Location {
10
10
  readonly type: RType.Number;
11
11
  content: RNumberValue;
12
12
  }
13
+ /**
14
+ * Checks whether the given node is an RNumber.
15
+ */
13
16
  export declare function isRNumber(node: RNode | undefined): node is RNumber;
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isRNumber = isRNumber;
4
4
  const type_1 = require("../type");
5
+ /**
6
+ * Checks whether the given node is an RNumber.
7
+ */
5
8
  function isRNumber(node) {
6
9
  return node?.type === type_1.RType.Number;
7
10
  }
@@ -0,0 +1,29 @@
1
+ import type { NoInfo } from '../model';
2
+ import { RType } from '../type';
3
+ import type { RExpressionList } from './r-expression-list';
4
+ import type { NodeId } from '../processing/node-id';
5
+ /**
6
+ * Holds a single R file starting with an expression list.
7
+ */
8
+ export interface RProjectFile<Info = NoInfo> {
9
+ readonly filePath?: string;
10
+ readonly root: RExpressionList<Info>;
11
+ }
12
+ /**
13
+ * Holds a collection of files (started with the expression list)
14
+ * @see {@link RExpressionList} - for the root of each file
15
+ * @see {@link mergeProjects} - to merge multiple projects into a single one
16
+ * @see {@link RProjectFile} - for each file in the project
17
+ */
18
+ export interface RProject<Info = NoInfo> {
19
+ readonly type: RType.Project;
20
+ readonly files: RProjectFile<Info>[];
21
+ readonly info?: {
22
+ id: NodeId;
23
+ };
24
+ }
25
+ /**
26
+ * Merge multiple projects into a single one by concatenating their files.
27
+ * This will remove the `info` property of the resulting project.
28
+ */
29
+ export declare function mergeProjects<Info = NoInfo>(projects: RProject<Info>[]): RProject<Info>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeProjects = mergeProjects;
4
+ const type_1 = require("../type");
5
+ /**
6
+ * Merge multiple projects into a single one by concatenating their files.
7
+ * This will remove the `info` property of the resulting project.
8
+ */
9
+ function mergeProjects(projects) {
10
+ return {
11
+ type: type_1.RType.Project,
12
+ files: projects.flatMap(p => p.files)
13
+ };
14
+ }
15
+ //# sourceMappingURL=r-project.js.map
@@ -8,4 +8,7 @@ export interface RString<Info = NoInfo> extends Leaf<Info>, Location {
8
8
  readonly type: RType.String;
9
9
  content: RStringValue;
10
10
  }
11
+ /**
12
+ *
13
+ */
11
14
  export declare function isRString(node: RNode | undefined): node is RString;
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isRString = isRString;
4
4
  const type_1 = require("../type");
5
+ /**
6
+ *
7
+ */
5
8
  function isRString(node) {
6
9
  return node?.type === type_1.RType.String;
7
10
  }
@@ -1,5 +1,8 @@
1
1
  import type { Leaf, Location, Namespace, NoInfo } from '../model';
2
2
  import type { RType } from '../type';
3
+ /**
4
+ *
5
+ */
3
6
  export declare function isSpecialSymbol(symbol: RSymbol): boolean;
4
7
  /**
5
8
  * Represents identifiers (variables).
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isSpecialSymbol = isSpecialSymbol;
4
4
  const convert_values_1 = require("../../../convert-values");
5
+ /**
6
+ *
7
+ */
5
8
  function isSpecialSymbol(symbol) {
6
9
  return symbol.content === convert_values_1.RNull || symbol.content === convert_values_1.RNa;
7
10
  }
@@ -3,7 +3,6 @@ import { RawRType } from './type';
3
3
  import type { SupportedFlowrCapabilityId } from '../../../data/get';
4
4
  /**
5
5
  * Just a type-alias so that type declarations become more readable.
6
- *
7
6
  * @see OperatorDatabase
8
7
  */
9
8
  type StringUsedInRCode = string;
@@ -5,7 +5,6 @@
5
5
  * 2. transforming the AST into a doubly linked tree using the ids (so it stays serializable)
6
6
  *
7
7
  * The main entry point is {@link decorateAst}.
8
- *
9
8
  * @module
10
9
  */
11
10
  import type { NoInfo, RNode } from '../model';
@@ -15,29 +14,33 @@ import type { MergeableRecord } from '../../../../../util/objects';
15
14
  import { RoleInParent } from './role';
16
15
  import type { NodeId } from './node-id';
17
16
  import type { RDelimiter } from '../nodes/info/r-delimiter';
17
+ import type { RProject } from '../nodes/r-project';
18
18
  /**
19
19
  * A function that given an RNode returns a (guaranteed) unique id for it
20
20
  * @param data - the node to generate an id for
21
- *
22
21
  * @returns a unique id for the given node
23
22
  */
24
- export type IdGenerator<OtherInfo> = (data: RNode<OtherInfo>) => NodeId;
23
+ export type IdGenerator<OtherInfo> = (data: RProject<OtherInfo> | RNode<OtherInfo>) => NodeId;
25
24
  /**
26
25
  * The simplest id generator which just increments a number on each call.
27
26
  */
28
27
  export declare function deterministicCountingIdGenerator(id?: number): () => NodeId;
28
+ /**
29
+ * Generates ids with a fixed prefix and an incrementing counter.
30
+ */
29
31
  export declare function deterministicPrefixIdGenerator(prefix: string, id?: number): () => NodeId;
32
+ /**
33
+ * Generates ids with a fixed source path and location information as prefix and an incrementing counter.
34
+ */
30
35
  export declare function sourcedDeterministicCountingIdGenerator(path: string, location: SourceRange, start?: number): () => NodeId;
31
36
  /**
32
37
  * Generates the location id, used by {@link deterministicLocationIdGenerator}.
33
- *
34
38
  * @param data - the node to generate an id for, must have location information
35
39
  */
36
40
  export declare function nodeToLocationId<OtherInfo>(data: RNode<OtherInfo> | RDelimiter): NodeId;
37
41
  /**
38
42
  * Generates unique ids based on the locations of the node (see {@link nodeToLocationId}).
39
43
  * If a node has no location information, it will be assigned a unique counter-value.
40
- *
41
44
  * @param start - the start value for the counter, in case nodes do not have location information
42
45
  */
43
46
  export declare function deterministicLocationIdGenerator<OtherInfo>(start?: number): IdGenerator<OtherInfo>;
@@ -69,7 +72,7 @@ export type AstIdMap<OtherInfo = NoInfo> = BiMap<NodeId, RNodeWithParent<OtherIn
69
72
  * Contains the normalized AST as a doubly linked tree
70
73
  * and a map from ids to nodes so that parent links can be chased easily.
71
74
  */
72
- export interface NormalizedAst<OtherInfo = ParentInformation, Node = RNode<OtherInfo & ParentInformation>> {
75
+ export interface NormalizedAst<OtherInfo = ParentInformation, Node = RProject<OtherInfo & ParentInformation>> {
73
76
  /** Bidirectional mapping of ids to the corresponding nodes and the other way */
74
77
  idMap: AstIdMap<OtherInfo>;
75
78
  /** The root of the AST with parent information */
@@ -80,18 +83,12 @@ export interface NormalizedAst<OtherInfo = ParentInformation, Node = RNode<Other
80
83
  export interface NormalizedAstDecorationConfiguration<OtherInfo> {
81
84
  /** The id generator: must generate a unique id für each passed node */
82
85
  getId?: IdGenerator<OtherInfo>;
83
- /** the path to the file this AST was extracted from will be added to the nodes */
84
- file?: string;
85
86
  }
86
87
  /**
87
88
  * Covert the given AST into a doubly linked tree while assigning ids (so it stays serializable).
88
- *
89
- * @param ast - The root of the AST to convert
89
+ * @param project - The AST to decorate
90
90
  * @param getId - The id generator: must generate a unique id für each passed node
91
- * @param file - the path to the file this AST was extracted from will be added to the nodes
92
- *
93
91
  * @typeParam OtherInfo - The original decoration of the ast nodes (probably is nothing as the id decoration is most likely the first step to be performed after extraction)
94
- *
95
92
  * @returns A decorated AST based on the input and the id provider.
96
93
  */
97
- export declare function decorateAst<OtherInfo = NoInfo>(ast: RNode<OtherInfo>, { getId, file }: NormalizedAstDecorationConfiguration<OtherInfo>): NormalizedAst<OtherInfo & ParentInformation>;
94
+ export declare function decorateAst<OtherInfo = NoInfo>(project: RProject<OtherInfo>, { getId }: NormalizedAstDecorationConfiguration<OtherInfo>): NormalizedAst<OtherInfo & ParentInformation>;
@@ -6,7 +6,6 @@
6
6
  * 2. transforming the AST into a doubly linked tree using the ids (so it stays serializable)
7
7
  *
8
8
  * The main entry point is {@link decorateAst}.
9
- *
10
9
  * @module
11
10
  */
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -27,9 +26,15 @@ const r_function_call_1 = require("../nodes/r-function-call");
27
26
  function deterministicCountingIdGenerator(id = 0) {
28
27
  return () => id++;
29
28
  }
29
+ /**
30
+ * Generates ids with a fixed prefix and an incrementing counter.
31
+ */
30
32
  function deterministicPrefixIdGenerator(prefix, id = 0) {
31
33
  return () => `${prefix}-${id++}`;
32
34
  }
35
+ /**
36
+ * Generates ids with a fixed source path and location information as prefix and an incrementing counter.
37
+ */
33
38
  function sourcedDeterministicCountingIdGenerator(path, location, start = 0) {
34
39
  let id = start;
35
40
  return () => `${path}-${loc2Id(location)}-${id++}`;
@@ -39,7 +44,6 @@ function loc2Id([sl, sc, el, ec]) {
39
44
  }
40
45
  /**
41
46
  * Generates the location id, used by {@link deterministicLocationIdGenerator}.
42
- *
43
47
  * @param data - the node to generate an id for, must have location information
44
48
  */
45
49
  function nodeToLocationId(data) {
@@ -50,12 +54,11 @@ function nodeToLocationId(data) {
50
54
  /**
51
55
  * Generates unique ids based on the locations of the node (see {@link nodeToLocationId}).
52
56
  * If a node has no location information, it will be assigned a unique counter-value.
53
- *
54
57
  * @param start - the start value for the counter, in case nodes do not have location information
55
58
  */
56
59
  function deterministicLocationIdGenerator(start = 0) {
57
60
  let id = start;
58
- return (data) => data.location !== undefined ? nodeToLocationId(data) : `${id++}`;
61
+ return (data) => 'location' in data && data.location !== undefined ? nodeToLocationId(data) : `${id++}`;
59
62
  }
60
63
  const defaultParentContext = {
61
64
  role: "root" /* RoleInParent.Root */,
@@ -66,24 +69,19 @@ const nestForElement = new Set([
66
69
  ]);
67
70
  /**
68
71
  * Covert the given AST into a doubly linked tree while assigning ids (so it stays serializable).
69
- *
70
- * @param ast - The root of the AST to convert
72
+ * @param project - The AST to decorate
71
73
  * @param getId - The id generator: must generate a unique id für each passed node
72
- * @param file - the path to the file this AST was extracted from will be added to the nodes
73
- *
74
74
  * @typeParam OtherInfo - The original decoration of the ast nodes (probably is nothing as the id decoration is most likely the first step to be performed after extraction)
75
- *
76
75
  * @returns A decorated AST based on the input and the id provider.
77
76
  */
78
- function decorateAst(ast, { getId = deterministicCountingIdGenerator(0), file }) {
77
+ function decorateAst(project, { getId = deterministicCountingIdGenerator(0) }) {
79
78
  const idMap = new bimap_1.BiMap();
80
- const info = { idMap, getId, file };
79
+ const info = { idMap, getId, file: undefined };
81
80
  /* Please note, that all fold processors do not re-create copies in higher-folding steps so that the idMap stays intact. */
82
81
  const foldLeaf = createFoldForLeaf(info);
83
82
  const foldBinaryOp = createFoldForBinaryOp(info);
84
83
  const unaryOp = createFoldForUnaryOp(info);
85
- /* we pass down the nesting depth */
86
- const decoratedAst = (0, stateful_fold_1.foldAstStateful)(ast, 0, {
84
+ const folds = {
87
85
  down: (n, nesting) => {
88
86
  if (nestForElement.has(n.type)) {
89
87
  return nesting + 1;
@@ -119,11 +117,26 @@ function decorateAst(ast, { getId = deterministicCountingIdGenerator(0), file })
119
117
  foldArgument: createFoldForFunctionArgument(info),
120
118
  foldParameter: createFoldForFunctionParameter(info)
121
119
  }
122
- });
123
- decoratedAst.info.role = "root" /* RoleInParent.Root */;
124
- decoratedAst.info.index = 0;
120
+ };
121
+ // we return the project by mapping over the files
122
+ const decoratedProject = {
123
+ ...project,
124
+ files: project.files.map(file => {
125
+ info.file = file.filePath;
126
+ const decoratedAst = (0, stateful_fold_1.foldAstStateful)(file.root, 0, folds);
127
+ decoratedAst.info.role = "root" /* RoleInParent.Root */;
128
+ decoratedAst.info.index = 0;
129
+ return {
130
+ root: decoratedAst,
131
+ filePath: file.filePath
132
+ };
133
+ }),
134
+ info: {
135
+ id: getId(project)
136
+ }
137
+ };
125
138
  return {
126
- ast: decoratedAst,
139
+ ast: decoratedProject,
127
140
  idMap
128
141
  };
129
142
  }
@@ -1,6 +1,6 @@
1
1
  import type { DeepReadonly } from 'ts-essentials';
2
2
  import type { RNode } from '../model';
3
- import type { StatefulFoldFunctions } from './stateful-fold';
3
+ import { type StatefulFoldFunctions } from './stateful-fold';
4
4
  export type FoldFunctions<Info, Out> = Omit<StatefulFoldFunctions<Info, undefined, Out>, 'down'>;
5
5
  /**
6
6
  * Folds in old functional-fashion over the AST structure.
@@ -8,7 +8,6 @@ export type NodeId<T extends string | number = string | number> = T & {
8
8
  export declare function normalizeIdToNumberIfPossible(id: NodeId): NodeId;
9
9
  /**
10
10
  * Recovers the lexeme of a {@link RNode|node} from its id in the {@link AstIdMap|id map}.
11
- *
12
11
  * @see {@link recoverContent} - to recover the content of a node
13
12
  */
14
13
  export declare function recoverName(id: NodeId, idMap?: AstIdMap): string | undefined;
@@ -16,7 +16,6 @@ function normalizeIdToNumberIfPossible(id) {
16
16
  }
17
17
  /**
18
18
  * Recovers the lexeme of a {@link RNode|node} from its id in the {@link AstIdMap|id map}.
19
- *
20
19
  * @see {@link recoverContent} - to recover the content of a node
21
20
  */
22
21
  function recoverName(id, idMap) {
@@ -2,7 +2,6 @@ import type { AstIdMap, RNodeWithParent } from './decorate';
2
2
  /**
3
3
  * Describes the role of the node in its parent. For example,
4
4
  * if we have `if(TRUE) { ... }`, the role of the `TRUE` node is `IfCondition`.
5
- *
6
5
  * @see ParentContextInfo
7
6
  * @see ParentInformation
8
7
  */
@@ -8,8 +8,7 @@ import type { RAccess } from '../nodes/r-access';
8
8
  import type { RBinaryOp } from '../nodes/r-binary-op';
9
9
  import type { RPipe } from '../nodes/r-pipe';
10
10
  import type { RUnaryOp } from '../nodes/r-unary-op';
11
- import type { RFunctionCall } from '../nodes/r-function-call';
12
- import { EmptyArgument } from '../nodes/r-function-call';
11
+ import { type RFunctionCall, EmptyArgument } from '../nodes/r-function-call';
13
12
  import type { RForLoop } from '../nodes/r-for-loop';
14
13
  import type { RWhileLoop } from '../nodes/r-while-loop';
15
14
  import type { RRepeatLoop } from '../nodes/r-repeat-loop';
@@ -5,7 +5,6 @@ export type OnEnter<OtherInfo> = (node: RNode<OtherInfo>) => (boolean | void);
5
5
  export type OnExit<OtherInfo> = (node: RNode<OtherInfo>) => void;
6
6
  /**
7
7
  * Visits all node ids within a tree given by a respective root node using a depth-first search with prefix order.
8
- *
9
8
  * @param nodes - The root id nodes to start collecting from
10
9
  * @param onVisit - Called before visiting the subtree of each node. Can be used to stop visiting the subtree starting with this node (return `true` stop)
11
10
  * @param onExit - Called after the subtree of a node has been visited, called for leafs too (even though their subtree is empty)
@@ -101,7 +101,6 @@ class NodeVisitor {
101
101
  }
102
102
  /**
103
103
  * Visits all node ids within a tree given by a respective root node using a depth-first search with prefix order.
104
- *
105
104
  * @param nodes - The root id nodes to start collecting from
106
105
  * @param onVisit - Called before visiting the subtree of each node. Can be used to stop visiting the subtree starting with this node (return `true` stop)
107
106
  * @param onExit - Called after the subtree of a node has been visited, called for leafs too (even though their subtree is empty)