@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
@@ -3,7 +3,6 @@ import type { IdMessageBase, MessageDefinition } from './all-messages';
3
3
  * Request the execution of the given expression as a REPL statement.
4
4
  * We strongly recommend that you make use of a unique {@link IdMessageBase#id}
5
5
  * in case the message responses happen in parallel.
6
- *
7
6
  * @see ExecuteIntermediateResponseMessage
8
7
  * @see ExecuteEndMessage
9
8
  */
@@ -1,4 +1,10 @@
1
1
  import type { IdMessageBase } from './messages/all-messages';
2
2
  import type { Socket } from './net';
3
+ /**
4
+ * Produce a new name for an unnamed socket connection
5
+ */
3
6
  export declare function getUnnamedSocketName(c: Socket): string;
7
+ /**
8
+ * Sends a message to the given socket
9
+ */
4
10
  export declare function sendMessage<T extends IdMessageBase>(c: Socket, message: T): void;
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUnnamedSocketName = getUnnamedSocketName;
4
4
  exports.sendMessage = sendMessage;
5
5
  const json_1 = require("../../../util/json");
6
+ /**
7
+ * Produce a new name for an unnamed socket connection
8
+ */
6
9
  function getUnnamedSocketName(c) {
7
10
  return `${c.remoteAddress ?? '?'}@${c.remotePort ?? '?'}`;
8
11
  }
12
+ /**
13
+ * Sends a message to the given socket
14
+ */
9
15
  function sendMessage(c, message) {
10
16
  return (0, json_1.superBigJsonStringify)(message, '\n', msg => {
11
17
  c.write(msg);
@@ -1,4 +1,4 @@
1
- import type { Server } from './net';
1
+ import { type Server } from './net';
2
2
  import { FlowrLogger } from '../../../util/log';
3
3
  import type { FlowrConfigOptions, KnownEngines } from '../../../config';
4
4
  export declare const serverLog: FlowrLogger;
@@ -1,5 +1,5 @@
1
1
  import type * as Joi from 'joi';
2
- import type { FlowrMessage, IdMessageBase, MessageDefinition } from './messages/all-messages';
2
+ import { type FlowrMessage, type IdMessageBase, type MessageDefinition } from './messages/all-messages';
3
3
  import type { Socket } from './net';
4
4
  export interface ValidationErrorResult {
5
5
  type: 'error';
@@ -10,6 +10,15 @@ export interface SuccessValidationResult<T extends IdMessageBase> {
10
10
  message: T;
11
11
  }
12
12
  export type ValidationResult<T extends IdMessageBase> = SuccessValidationResult<T> | ValidationErrorResult;
13
+ /**
14
+ * Check that the serialized input is a valid base message.
15
+ */
13
16
  export declare function validateBaseMessageFormat(input: string): ValidationResult<IdMessageBase>;
17
+ /**
18
+ * Validates that the given input matches the given message definition.
19
+ */
14
20
  export declare function validateMessage<T extends FlowrMessage | IdMessageBase>(input: IdMessageBase, def: MessageDefinition<T>): ValidationResult<T>;
21
+ /**
22
+ * Sends an error message to the given client indicating a validation error.
23
+ */
15
24
  export declare function answerForValidationError(client: Socket, result: ValidationErrorResult, id?: string): void;
@@ -5,6 +5,9 @@ exports.validateMessage = validateMessage;
5
5
  exports.answerForValidationError = answerForValidationError;
6
6
  const send_1 = require("./send");
7
7
  const all_messages_1 = require("./messages/all-messages");
8
+ /**
9
+ * Check that the serialized input is a valid base message.
10
+ */
8
11
  function validateBaseMessageFormat(input) {
9
12
  try {
10
13
  return validateMessage(JSON.parse(input), all_messages_1.baseMessage);
@@ -13,6 +16,9 @@ function validateBaseMessageFormat(input) {
13
16
  return { type: 'error', reason: e };
14
17
  }
15
18
  }
19
+ /**
20
+ * Validates that the given input matches the given message definition.
21
+ */
16
22
  function validateMessage(input, def) {
17
23
  try {
18
24
  const result = def.schema.validate(input);
@@ -22,6 +28,9 @@ function validateMessage(input, def) {
22
28
  return { type: 'error', reason: e };
23
29
  }
24
30
  }
31
+ /**
32
+ * Sends an error message to the given client indicating a validation error.
33
+ */
25
34
  function answerForValidationError(client, result, id) {
26
35
  (0, send_1.sendMessage)(client, {
27
36
  type: 'error',
@@ -1,8 +1,7 @@
1
- import type { StdioProcessor } from './repl/execute';
1
+ import { type StdioProcessor } from './repl/execute';
2
2
  import { scripts } from './common/scripts-info';
3
3
  /**
4
4
  * Path-safe helper of {@link waitOnScript} for other flowR scripts.
5
- *
6
5
  * @see waitOnScript
7
6
  */
8
7
  export declare function runScript(name: keyof typeof scripts, args: readonly string[], io?: StdioProcessor, exitOnError?: boolean): Promise<void>;
package/cli/run-script.js CHANGED
@@ -9,7 +9,6 @@ const scripts_info_1 = require("./common/scripts-info");
9
9
  const path_1 = __importDefault(require("path"));
10
10
  /**
11
11
  * Path-safe helper of {@link waitOnScript} for other flowR scripts.
12
- *
13
12
  * @see waitOnScript
14
13
  */
15
14
  async function runScript(name, args, io, exitOnError = false) {
@@ -1,3 +1,6 @@
1
1
  import type { StatsCliOptions } from '../statistics-app';
2
2
  import type { FlowrConfigOptions } from '../../config';
3
+ /**
4
+ * The core function for the 'flowr stats' script.
5
+ */
3
6
  export declare function flowrScriptGetStats(options: StatsCliOptions, config: FlowrConfigOptions): Promise<void>;
@@ -57,6 +57,9 @@ async function collectFileArguments(options, verboseAdd, dumpJson, features) {
57
57
  console.log(`Total: ${counter} files (${skipped} skipped with archive existing)`);
58
58
  return files;
59
59
  }
60
+ /**
61
+ * The core function for the 'flowr stats' script.
62
+ */
60
63
  async function flowrScriptGetStats(options, config) {
61
64
  if (options.input.length === 0) {
62
65
  console.error('No input files given. Nothing to do. See \'--help\' if this is an error.');
@@ -1,3 +1,6 @@
1
1
  import type { StatsHelperCliOptions } from '../statistics-helper-app';
2
- import type { FlowrConfigOptions } from '../../config';
2
+ import { type FlowrConfigOptions } from '../../config';
3
+ /**
4
+ * Get statistics for a single file
5
+ */
3
6
  export declare function getStatsForSingleFile(options: StatsHelperCliOptions, config: FlowrConfigOptions): Promise<void>;
@@ -21,6 +21,7 @@ const time_1 = require("../../util/text/time");
21
21
  const tar_1 = require("tar");
22
22
  const ansi_1 = require("../../util/text/ansi");
23
23
  const config_1 = require("../../config");
24
+ const flowr_analyzer_context_1 = require("../../project/context/flowr-analyzer-context");
24
25
  function compressFolder(folder, target) {
25
26
  return (0, tar_1.create)({
26
27
  gzip: true,
@@ -36,6 +37,9 @@ function compressFolder(folder, target) {
36
37
  console.error('Error during compression:', e);
37
38
  });
38
39
  }
40
+ /**
41
+ * Get statistics for a single file
42
+ */
39
43
  async function getStatsForSingleFile(options, config) {
40
44
  if (options['no-ansi']) {
41
45
  log_1.log.info('disabling ansi colors');
@@ -59,7 +63,7 @@ async function getStatsForSingleFile(options, config) {
59
63
  if (stats.outputs.size === 1) {
60
64
  if (options['dump-json']) {
61
65
  const [, output] = [...stats.outputs.entries()][0];
62
- const cfg = (0, extract_cfg_1.extractCfg)(output.normalize, config, output.dataflow.graph);
66
+ const cfg = (0, extract_cfg_1.extractCfg)(output.normalize, (0, flowr_analyzer_context_1.contextFromInput)('', config), output.dataflow.graph);
63
67
  statistics_file_1.statisticsFileProvider.append('output-json', 'parse', await (0, print_1.printStepResult)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, output.parse, 2 /* StepOutputFormat.Json */));
64
68
  statistics_file_1.statisticsFileProvider.append('output-json', 'normalize', await (0, print_1.printStepResult)(_10_normalize_1.NORMALIZE, output.normalize, 2 /* StepOutputFormat.Json */));
65
69
  statistics_file_1.statisticsFileProvider.append('output-json', 'dataflow', await (0, print_1.printStepResult)(_20_dataflow_1.STATIC_DATAFLOW, output.dataflow, 2 /* StepOutputFormat.Json */));
@@ -1,2 +1,5 @@
1
1
  import type { SummarizerCliOptions } from '../summarizer-app';
2
+ /**
3
+ * The core function for the 'flowr summarize' script.
4
+ */
2
5
  export declare function flowrScriptSummarizer(options: SummarizerCliOptions): Promise<void>;
@@ -39,6 +39,9 @@ async function retrieveSummarizer(options, outputBase) {
39
39
  process.exit(1);
40
40
  }
41
41
  }
42
+ /**
43
+ * The core function for the 'flowr summarize' script.
44
+ */
42
45
  async function flowrScriptSummarizer(options) {
43
46
  const outputBase = (options.output ?? options.input).replace(/\.json$|\/$/, '-summary');
44
47
  console.log(`Writing outputs to base ${outputBase}`);
package/cli/slicer-app.js CHANGED
@@ -15,7 +15,6 @@ const print_1 = require("../benchmark/stats/print");
15
15
  const magic_comments_1 = require("../reconstruct/auto-select/magic-comments");
16
16
  const auto_select_defaults_1 = require("../reconstruct/auto-select/auto-select-defaults");
17
17
  const config_1 = require("../config");
18
- const adapter_1 = require("../util/formats/adapter");
19
18
  const options = (0, script_1.processCommandLineArgs)('slicer', ['input', 'criterion'], {
20
19
  subtitle: 'Slice R code based on a given slicing criterion',
21
20
  examples: [
@@ -32,8 +31,8 @@ async function getSlice() {
32
31
  (0, assert_1.guard)(options.criterion !== undefined, 'a slicing criterion must be given');
33
32
  const config = (0, config_1.getConfig)();
34
33
  await slicer.init(options['input-is-text']
35
- ? (0, adapter_1.requestFromText)(options.input.replaceAll('\\n', '\n'))
36
- : (0, adapter_1.requestFromFile)(options.input), config, options['no-magic-comments'] ? auto_select_defaults_1.doNotAutoSelect : (0, magic_comments_1.makeMagicCommentHandler)(auto_select_defaults_1.doNotAutoSelect));
34
+ ? { request: 'text', content: options.input.replaceAll('\\n', '\n') }
35
+ : { request: 'file', content: options.input }, config, options['no-magic-comments'] ? auto_select_defaults_1.doNotAutoSelect : (0, magic_comments_1.makeMagicCommentHandler)(auto_select_defaults_1.doNotAutoSelect));
37
36
  let mappedSlices = [];
38
37
  let reconstruct = undefined;
39
38
  const doSlicing = options.criterion.trim() !== '';
@@ -77,7 +76,7 @@ async function getSlice() {
77
76
  if (doSlicing && options.diff) {
78
77
  let originalCode = options.input;
79
78
  if (!options['input-is-text']) {
80
- const request = (0, adapter_1.requestFromFile)(options.input);
79
+ const request = { request: 'file', content: options.input };
81
80
  originalCode = request.request === 'text' ? request.content : fs_1.default.readFileSync(request.content).toString();
82
81
  }
83
82
  console.log((0, slice_diff_ansi_1.sliceDiffAnsi)(slice.result, normalize, new Set(mappedSlices.map(({ id }) => id)), originalCode));
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * The summarizer intends to post-process and summarize the results of
3
- * * the benchmark tool, and
4
- * * the statistics extraction.
5
- *
3
+ * the benchmark tool, and
4
+ * the statistics extraction.
6
5
  * @module
7
6
  */
8
7
  export interface SummarizerCliOptions {
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  /**
3
3
  * The summarizer intends to post-process and summarize the results of
4
- * * the benchmark tool, and
5
- * * the statistics extraction.
6
- *
4
+ * the benchmark tool, and
5
+ * the statistics extraction.
7
6
  * @module
8
7
  */
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
package/cli/wiki.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Updates and optionally re-creates all flowR wikis.
3
+ */
4
+ export declare function makeAllWikis(force: boolean, filter: string[] | undefined): Promise<void>;
package/cli/wiki.js ADDED
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.makeAllWikis = makeAllWikis;
7
+ const doc_context_1 = require("../documentation/wiki-mk/doc-context");
8
+ const shell_1 = require("../r-bridge/shell");
9
+ const tree_sitter_executor_1 = require("../r-bridge/lang-4.x/tree-sitter/tree-sitter-executor");
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const log_1 = require("../../test/functionality/_helper/log");
12
+ const command_line_usage_1 = __importDefault(require("command-line-usage"));
13
+ const command_line_args_1 = __importDefault(require("command-line-args"));
14
+ const version_1 = require("../util/version");
15
+ const wiki_faq_1 = require("../documentation/wiki-faq");
16
+ const ansi_1 = require("../util/text/ansi");
17
+ const documentation_1 = require("../documentation");
18
+ const wiki_cfg_1 = require("../documentation/wiki-cfg");
19
+ const wiki_onboarding_1 = require("../documentation/wiki-onboarding");
20
+ const wiki_analyzer_1 = require("../documentation/wiki-analyzer");
21
+ const issue_linting_rule_1 = require("../documentation/issue-linting-rule");
22
+ const doc_readme_1 = require("../documentation/doc-readme");
23
+ const wiki_linter_1 = require("../documentation/wiki-linter");
24
+ const os_1 = __importDefault(require("os"));
25
+ const Documents = [
26
+ new wiki_faq_1.WikiFaq(),
27
+ new documentation_1.WikiSearch(),
28
+ new wiki_cfg_1.WikiCfg(),
29
+ new documentation_1.WikiQuery(),
30
+ new wiki_onboarding_1.WikiOnboarding(),
31
+ new wiki_analyzer_1.WikiAnalyzer(),
32
+ new documentation_1.WikiEngine(),
33
+ new documentation_1.WikiNormalizedAst(),
34
+ new documentation_1.WikiCore(),
35
+ new documentation_1.WikiInterface(),
36
+ new documentation_1.WikiDataflowGraph(),
37
+ new documentation_1.WikiLintingAndTesting(),
38
+ new wiki_linter_1.WikiLinter(),
39
+ new issue_linting_rule_1.IssueLintingRule(),
40
+ new doc_readme_1.DocReadme(),
41
+ new documentation_1.DocCapabilities()
42
+ ];
43
+ function sortByLeastRecentChanged(wikis) {
44
+ return wikis.slice().sort((a, b) => {
45
+ const aStat = fs_1.default.existsSync(a.getProducer()) ? fs_1.default.statSync(a.getProducer()) : undefined;
46
+ const bStat = fs_1.default.existsSync(b.getProducer()) ? fs_1.default.statSync(b.getProducer()) : undefined;
47
+ const aMTime = aStat ? aStat.mtime.getTime() : 0;
48
+ const bMTime = bStat ? bStat.mtime.getTime() : 0;
49
+ return bMTime - aMTime;
50
+ });
51
+ }
52
+ /**
53
+ * Updates and optionally re-creates all flowR wikis.
54
+ */
55
+ async function makeAllWikis(force, filter) {
56
+ const setupStart = new Date();
57
+ console.log('Setting up wiki generation...');
58
+ const shell = new shell_1.RShell();
59
+ console.log(' * R shell initialized');
60
+ await tree_sitter_executor_1.TreeSitterExecutor.initTreeSitter();
61
+ const treeSitter = new tree_sitter_executor_1.TreeSitterExecutor();
62
+ console.log(' * Tree-sitter parser initialized');
63
+ const ctx = (0, doc_context_1.makeDocContextForTypes)(shell);
64
+ console.log(' * Wiki context prepared');
65
+ if (force) {
66
+ console.log(ansi_1.ansiFormatter.format('Forcing wiki regeneration (existing files will be overwritten)', { style: 1 /* FontStyles.Bold */, color: 3 /* Colors.Yellow */, effect: ansi_1.ColorEffect.Foreground }));
67
+ }
68
+ const info = {
69
+ ctx,
70
+ shell, treeSitter,
71
+ force,
72
+ readFileSync(f) {
73
+ try {
74
+ return fs_1.default.readFileSync(f);
75
+ }
76
+ catch {
77
+ return undefined;
78
+ }
79
+ },
80
+ writeFileSync: fs_1.default.writeFileSync
81
+ };
82
+ console.log(`Setup for wiki generation took ${(new Date().getTime() - setupStart.getTime())}ms`);
83
+ const changedWikis = new Set();
84
+ try {
85
+ const sortedDocs = sortByLeastRecentChanged(Documents);
86
+ console.log(`Generating ${sortedDocs.length} wikis/docs, sorted by most recently updated...`);
87
+ for (const doc of sortedDocs) {
88
+ const type = doc.getTarget().toLowerCase().includes('wiki') ? 'Wiki' : 'Doc';
89
+ if (filter && !filter.some(f => doc.getTarget().includes(f))) {
90
+ console.log(` * Skipping ${type} (filtered out): ${doc.getTarget()}`);
91
+ continue;
92
+ }
93
+ const now = new Date();
94
+ console.log(ansi_1.ansiFormatter.format(` [${doc.getTarget()}] Updating ${type}...`, { style: 1 /* FontStyles.Bold */, color: 6 /* Colors.Cyan */, effect: ansi_1.ColorEffect.Foreground }));
95
+ const changed = await doc.make(info);
96
+ const text = changed ? `${type} updated` : `${type} identical, no changes made`;
97
+ if (changed) {
98
+ changedWikis.add(doc.getTarget());
99
+ }
100
+ const color = changed ? 2 /* Colors.Green */ : 7 /* Colors.White */;
101
+ console.log(ansi_1.ansiFormatter.format(` [${doc.getTarget()}] ${text}: ${doc.getTarget()} (took ${new Date().getTime() - now.getTime()}ms)`, { color, effect: ansi_1.ColorEffect.Foreground }));
102
+ for (const out of doc.getWrittenSubfiles()) {
103
+ changedWikis.add(out);
104
+ console.log(` - Also updated: ${out}`);
105
+ }
106
+ }
107
+ }
108
+ catch (error) {
109
+ console.error('Error while generating documents:', error);
110
+ }
111
+ finally {
112
+ shell.close();
113
+ }
114
+ console.log('All wikis processed in ' + (new Date().getTime() - setupStart.getTime()) + 'ms');
115
+ console.log(` * Changed ${changedWikis.size} wiki/doc files.`);
116
+ // write a temp file in the os temp dir with the changed wikis
117
+ const filename = `${os_1.default.tmpdir()}/flowr-wiki-changed-files.txt`;
118
+ fs_1.default.writeFileSync(`${filename}`, Array.from(changedWikis).join('\n'));
119
+ console.log(` * List of changed wikis/docs written to ${filename}`);
120
+ }
121
+ if (require.main === module) {
122
+ const wikiOptions = [
123
+ { name: 'force', alias: 'F', type: Boolean, description: 'Overwrite existing wiki files, even if nothing changes' },
124
+ { name: 'filter', alias: 'f', type: String, multiple: true, description: 'Only generate wikis whose target path contains the given string' },
125
+ { name: 'help', alias: 'h', type: Boolean, description: 'Print this usage guide for the wiki generator' },
126
+ { name: 'keep-alive', type: Boolean, description: 'Keep-alive wiki generator (only sensible with a reloading script like ts-node-dev)' },
127
+ ];
128
+ const optionHelp = [
129
+ {
130
+ header: `flowR (version ${(0, version_1.flowrVersion)().toString()})`,
131
+ content: 'Documentation (wiki, issue, ...) generator for flowR'
132
+ },
133
+ {
134
+ header: 'Synopsis',
135
+ content: [
136
+ '$ wiki {bold --help}',
137
+ '$ wiki {bold --force}',
138
+ '$ wiki {bold --filter} {italic "dataflow"}'
139
+ ]
140
+ },
141
+ {
142
+ header: 'Options',
143
+ optionList: wikiOptions
144
+ }
145
+ ];
146
+ (0, log_1.setMinLevelOfAllLogs)(6 /* LogLevel.Fatal */);
147
+ // parse args
148
+ const options = (0, command_line_args_1.default)(wikiOptions);
149
+ if (options.help) {
150
+ console.log((0, command_line_usage_1.default)(optionHelp));
151
+ process.exit(0);
152
+ }
153
+ void makeAllWikis(options.force, options.filter).catch(err => {
154
+ console.error('Error while generating wikis:', err);
155
+ process.exit(1);
156
+ }).then(() => {
157
+ if (options['keep-alive']) {
158
+ console.log('Wiki generator running in keep-alive mode...');
159
+ setInterval(() => {
160
+ // do nothing, just keep alive
161
+ }, 100);
162
+ }
163
+ });
164
+ }
165
+ //# sourceMappingURL=wiki.js.map
package/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { MergeableRecord } from './util/objects';
1
+ import { type MergeableRecord } from './util/objects';
2
2
  import Joi from 'joi';
3
3
  import type { BuiltInDefinitions } from './dataflow/environments/built-in-config';
4
4
  import type { KnownParser } from './r-bridge/parser';
@@ -59,10 +59,9 @@ export interface FlowrLaxSourcingOptions extends MergeableRecord {
59
59
  */
60
60
  readonly repeatedSourceLimit?: number;
61
61
  /**
62
- * sometimes files may have a different name in the source call (e.g., due to later replacements),
62
+ * sometimes files may have a different name in the source call (e.g., due to later replacements),
63
63
  * with this setting you can provide a list of replacements to apply for each sourced file.
64
64
  * Every replacement consists of a record that maps a regex to a replacement string.
65
- *
66
65
  * @example
67
66
  * ```ts
68
67
  * [
@@ -99,6 +98,10 @@ export interface FlowrConfigOptions extends MergeableRecord {
99
98
  };
100
99
  };
101
100
  };
101
+ readonly project: {
102
+ /** Whether to resolve unknown paths loaded by the r project disk when trying to source/analyze files */
103
+ resolveUnknownPathsOnDisk: boolean;
104
+ };
102
105
  /**
103
106
  * The engines to use for interacting with R code. Currently, supports {@link TreeSitterEngineConfig} and {@link RShellEngineConfig}.
104
107
  * An empty array means all available engines will be used.
@@ -205,14 +208,29 @@ export type KnownEngines = {
205
208
  };
206
209
  export declare const defaultConfigOptions: FlowrConfigOptions;
207
210
  export declare const flowrConfigFileSchema: Joi.ObjectSchema<any>;
211
+ /**
212
+ * Parses the given JSON string as a flowR config file.
213
+ */
208
214
  export declare function parseConfig(jsonString: string): FlowrConfigOptions | undefined;
209
215
  /**
210
216
  * Creates a new flowr config that has the updated values.
211
217
  */
212
218
  export declare function amendConfig(config: FlowrConfigOptions, amendmentFunc: (config: DeepWritable<FlowrConfigOptions>) => FlowrConfigOptions | void): FlowrConfigOptions;
219
+ /**
220
+ * Clones the given flowr config object.
221
+ */
213
222
  export declare function cloneConfig(config: FlowrConfigOptions): FlowrConfigOptions;
223
+ /**
224
+ * Loads the flowr config from the given file or the default locations.
225
+ */
214
226
  export declare function getConfig(configFile?: string, configWorkingDirectory?: string): FlowrConfigOptions;
227
+ /**
228
+ * Gets the configuration for the given engine type from the config.
229
+ */
215
230
  export declare function getEngineConfig<T extends EngineConfig['type']>(config: FlowrConfigOptions, engine: T): EngineConfig & {
216
231
  type: T;
217
232
  } | undefined;
233
+ /**
234
+ * Checks whether the given count is over the pointer analysis threshold configured in the config.
235
+ */
218
236
  export declare function isOverPointerAnalysisThreshold(config: FlowrConfigOptions, count: number): boolean;
package/config.js CHANGED
@@ -65,6 +65,9 @@ exports.defaultConfigOptions = {
65
65
  }
66
66
  }
67
67
  },
68
+ project: {
69
+ resolveUnknownPathsOnDisk: true
70
+ },
68
71
  engines: [],
69
72
  defaultEngine: 'tree-sitter',
70
73
  solver: {
@@ -103,6 +106,9 @@ exports.flowrConfigFileSchema = joi_1.default.object({
103
106
  }).optional().description('Do you want to overwrite (parts) of the builtin definition?')
104
107
  }).optional().description('Semantics regarding how to handle the R environment.')
105
108
  }).description('Configure language semantics and how flowR handles them.'),
109
+ project: joi_1.default.object({
110
+ resolveUnknownPathsOnDisk: joi_1.default.boolean().optional().description('Whether to resolve unknown paths loaded by the r project disk when trying to source/analyze files.')
111
+ }).description('Project specific configuration options.'),
106
112
  engines: joi_1.default.array().items(joi_1.default.alternatives(joi_1.default.object({
107
113
  type: joi_1.default.string().required().valid('tree-sitter').description('Use the tree sitter engine.'),
108
114
  wasmPath: joi_1.default.string().optional().description('The path to the tree-sitter-r WASM binary to use. If this is undefined, this uses the default path.'),
@@ -142,6 +148,9 @@ exports.flowrConfigFileSchema = joi_1.default.object({
142
148
  }).description('The configuration of the shape inference for data frames.')
143
149
  }).description('The configuration options for abstract interpretation.')
144
150
  }).description('The configuration file format for flowR.');
151
+ /**
152
+ * Parses the given JSON string as a flowR config file.
153
+ */
145
154
  function parseConfig(jsonString) {
146
155
  try {
147
156
  const parsed = JSON.parse(jsonString);
@@ -168,9 +177,15 @@ function amendConfig(config, amendmentFunc) {
168
177
  amendmentFunc(newConfig);
169
178
  return newConfig;
170
179
  }
180
+ /**
181
+ * Clones the given flowr config object.
182
+ */
171
183
  function cloneConfig(config) {
172
184
  return JSON.parse(JSON.stringify(config));
173
185
  }
186
+ /**
187
+ * Loads the flowr config from the given file or the default locations.
188
+ */
174
189
  function getConfig(configFile, configWorkingDirectory = process.cwd()) {
175
190
  try {
176
191
  return loadConfigFromFile(configFile, configWorkingDirectory);
@@ -180,6 +195,9 @@ function getConfig(configFile, configWorkingDirectory = process.cwd()) {
180
195
  return exports.defaultConfigOptions;
181
196
  }
182
197
  }
198
+ /**
199
+ * Gets the configuration for the given engine type from the config.
200
+ */
183
201
  function getEngineConfig(config, engine) {
184
202
  const engines = config.engines;
185
203
  if (!engines.length) {
@@ -198,6 +216,9 @@ function getPointerAnalysisThreshold(config) {
198
216
  return pointerTracking ? 'unlimited' : 'disabled';
199
217
  }
200
218
  }
219
+ /**
220
+ * Checks whether the given count is over the pointer analysis threshold configured in the config.
221
+ */
201
222
  function isOverPointerAnalysisThreshold(config, count) {
202
223
  const threshold = getPointerAnalysisThreshold(config);
203
224
  return threshold !== 'unlimited' && (threshold === 'disabled' || count > threshold);
@@ -1,4 +1,4 @@
1
- import type { CfgBasicBlockVertex, CfgEndMarkerVertex, CfgExpressionVertex, CfgSimpleVertex, CfgStatementVertex, ControlFlowInformation } from './control-flow-graph';
1
+ import { type CfgBasicBlockVertex, type CfgEndMarkerVertex, type CfgExpressionVertex, type CfgSimpleVertex, type CfgStatementVertex, type ControlFlowInformation } from './control-flow-graph';
2
2
  import type { NodeId } from '../r-bridge/lang-4.x/ast/model/processing/node-id';
3
3
  export interface BasicCfgGuidedVisitorConfiguration<ControlFlow extends ControlFlowInformation = ControlFlowInformation> {
4
4
  readonly controlFlow: ControlFlow;
@@ -17,7 +17,6 @@ export declare class BasicCfgGuidedVisitor<ControlFlow extends ControlFlowInform
17
17
  constructor(config: Config);
18
18
  /**
19
19
  * call this function to indicate that a node is to be considered visited.
20
- *
21
20
  * @returns `true` if the node was not visited before, `false` otherwise
22
21
  */
23
22
  protected visitNode(node: NodeId): boolean;
@@ -19,7 +19,6 @@ class BasicCfgGuidedVisitor {
19
19
  }
20
20
  /**
21
21
  * call this function to indicate that a node is to be considered visited.
22
- *
23
22
  * @returns `true` if the node was not visited before, `false` otherwise
24
23
  */
25
24
  visitNode(node) {
@@ -54,7 +54,12 @@ class CfgConditionalDeadCodeRemoval extends semantic_cfg_guided_visitor_1.Semant
54
54
  }
55
55
  }
56
56
  handleValuesFor(id, valueId) {
57
- const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(valueId, { graph: this.config.dfg, full: true, idMap: this.config.normalizedAst.idMap, resolve: this.config.flowrConfig.solver.variables }));
57
+ const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(valueId, {
58
+ graph: this.config.dfg,
59
+ full: true,
60
+ idMap: this.config.normalizedAst.idMap,
61
+ resolve: this.config.ctx.config.solver.variables
62
+ }));
58
63
  if (values === undefined || values.elements.length !== 1 || values.elements[0].type != 'logical' || !(0, r_value_1.isValue)(values.elements[0].value)) {
59
64
  this.unableToCalculateValue(id);
60
65
  return;
@@ -74,7 +79,12 @@ class CfgConditionalDeadCodeRemoval extends semantic_cfg_guided_visitor_1.Semant
74
79
  if (data.call.args.length !== 1 || data.call.args[0] === r_function_call_1.EmptyArgument) {
75
80
  return undefined;
76
81
  }
77
- const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(data.call.args[0].nodeId, { graph: this.config.dfg, full: true, idMap: this.config.normalizedAst.idMap, resolve: this.config.flowrConfig.solver.variables }));
82
+ const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(data.call.args[0].nodeId, {
83
+ graph: this.config.dfg,
84
+ full: true,
85
+ idMap: this.config.normalizedAst.idMap,
86
+ resolve: this.config.ctx.config.solver.variables
87
+ }));
78
88
  if (values === undefined || values.elements.length !== 1 || values.elements[0].type != 'logical' || !(0, r_value_1.isValue)(values.elements[0].value)) {
79
89
  return undefined;
80
90
  }
@@ -115,7 +125,7 @@ function cfgAnalyzeDeadCode(cfg, info) {
115
125
  controlFlow: cfg,
116
126
  normalizedAst: info.ast,
117
127
  dfg: info.dfg,
118
- flowrConfig: info.config,
128
+ ctx: info.ctx,
119
129
  defaultVisitingOrder: 'forward',
120
130
  });
121
131
  visitor.start();
@@ -3,13 +3,16 @@ import type { NormalizedAst } from '../r-bridge/lang-4.x/ast/model/processing/de
3
3
  import type { DataflowGraph } from '../dataflow/graph/graph';
4
4
  import type { NodeId } from '../r-bridge/lang-4.x/ast/model/processing/node-id';
5
5
  import { cfgAnalyzeDeadCode } from './cfg-dead-code';
6
- import type { FlowrConfigOptions } from '../config';
6
+ import type { ReadOnlyFlowrAnalyzerContext } from '../project/context/flowr-analyzer-context';
7
7
  export interface CfgPassInfo {
8
8
  ast?: NormalizedAst;
9
9
  dfg?: DataflowGraph;
10
- config: FlowrConfigOptions;
10
+ ctx: ReadOnlyFlowrAnalyzerContext;
11
11
  }
12
12
  export type CfgSimplificationPass = (cfg: ControlFlowInformation, info: CfgPassInfo) => ControlFlowInformation;
13
+ /**
14
+ * All available control flow graph simplification passes.
15
+ */
13
16
  export declare const CfgSimplificationPasses: {
14
17
  readonly 'unique-cf-sets': typeof uniqueControlFlowSets;
15
18
  readonly 'analyze-dead-code': typeof cfgAnalyzeDeadCode;
@@ -6,6 +6,9 @@ exports.cfgFindAllReachable = cfgFindAllReachable;
6
6
  const cfg_to_basic_blocks_1 = require("./cfg-to-basic-blocks");
7
7
  const simple_visitor_1 = require("./simple-visitor");
8
8
  const cfg_dead_code_1 = require("./cfg-dead-code");
9
+ /**
10
+ * All available control flow graph simplification passes.
11
+ */
9
12
  exports.CfgSimplificationPasses = {
10
13
  'unique-cf-sets': uniqueControlFlowSets,
11
14
  'analyze-dead-code': cfg_dead_code_1.cfgAnalyzeDeadCode,
@@ -1,4 +1,4 @@
1
- import type { ControlFlowInformation } from './control-flow-graph';
1
+ import { type ControlFlowInformation } from './control-flow-graph';
2
2
  /**
3
3
  * Take a control flow information of a graph without any basic blocks and convert it to a graph with basic blocks.
4
4
  */