@eagleoutice/flowr 2.6.2 → 2.7.0

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 (435) hide show
  1. package/README.md +36 -34
  2. package/abstract-interpretation/data-frame/absint-visitor.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.js +6 -6
  4. package/abstract-interpretation/data-frame/dataframe-domain.d.ts +4 -7
  5. package/abstract-interpretation/data-frame/dataframe-domain.js +5 -11
  6. package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +3 -1
  7. package/abstract-interpretation/data-frame/mappers/access-mapper.js +3 -2
  8. package/abstract-interpretation/data-frame/mappers/arguments.js +2 -2
  9. package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +3 -1
  10. package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +3 -2
  11. package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +7 -7
  12. package/abstract-interpretation/data-frame/mappers/function-mapper.js +28 -24
  13. package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +3 -1
  14. package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +3 -2
  15. package/abstract-interpretation/data-frame/semantics.js +54 -41
  16. package/abstract-interpretation/data-frame/shape-inference.d.ts +3 -3
  17. package/abstract-interpretation/data-frame/shape-inference.js +3 -3
  18. package/abstract-interpretation/domains/abstract-domain.d.ts +1 -0
  19. package/abstract-interpretation/domains/abstract-domain.js +3 -2
  20. package/abstract-interpretation/domains/bounded-set-domain.js +1 -1
  21. package/abstract-interpretation/domains/interval-domain.d.ts +2 -2
  22. package/abstract-interpretation/domains/interval-domain.js +3 -6
  23. package/abstract-interpretation/domains/lattice.d.ts +2 -0
  24. package/abstract-interpretation/domains/lattice.js +3 -1
  25. package/abstract-interpretation/domains/positive-interval-domain.d.ts +1 -1
  26. package/abstract-interpretation/domains/positive-interval-domain.js +1 -1
  27. package/abstract-interpretation/domains/satisfiable-domain.d.ts +2 -2
  28. package/abstract-interpretation/domains/satisfiable-domain.js +2 -2
  29. package/abstract-interpretation/domains/set-range-domain.d.ts +98 -0
  30. package/abstract-interpretation/domains/set-range-domain.js +400 -0
  31. package/abstract-interpretation/domains/set-upper-bound-domain.js +2 -2
  32. package/abstract-interpretation/domains/singleton-domain.js +2 -2
  33. package/abstract-interpretation/normalized-ast-fold.d.ts +1 -1
  34. package/benchmark/slicer.d.ts +3 -1
  35. package/benchmark/slicer.js +50 -27
  36. package/benchmark/stats/print.js +8 -5
  37. package/benchmark/stats/stats.d.ts +3 -2
  38. package/benchmark/summarizer/data.d.ts +11 -8
  39. package/benchmark/summarizer/first-phase/process.js +12 -9
  40. package/benchmark/summarizer/second-phase/graph.d.ts +3 -1
  41. package/benchmark/summarizer/second-phase/graph.js +3 -1
  42. package/benchmark/summarizer/second-phase/process.js +24 -18
  43. package/cli/export-quads-app.js +1 -1
  44. package/cli/repl/commands/repl-dataflow.js +2 -1
  45. package/cli/repl/commands/repl-parse.js +16 -4
  46. package/cli/repl/commands/repl-query.js +1 -1
  47. package/cli/repl/core.js +16 -13
  48. package/cli/repl/server/connection.js +2 -1
  49. package/cli/script-core/statistics-helper-core.js +2 -1
  50. package/cli/slicer-app.js +3 -4
  51. package/cli/wiki.d.ts +4 -0
  52. package/cli/wiki.js +165 -0
  53. package/config.d.ts +4 -0
  54. package/config.js +6 -0
  55. package/control-flow/cfg-dead-code.js +14 -3
  56. package/control-flow/cfg-simplification.d.ts +5 -2
  57. package/control-flow/cfg-simplification.js +3 -0
  58. package/control-flow/extract-cfg.d.ts +9 -3
  59. package/control-flow/extract-cfg.js +44 -4
  60. package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -2
  61. package/control-flow/simple-visitor.js +2 -2
  62. package/control-flow/useless-loop.d.ts +3 -3
  63. package/control-flow/useless-loop.js +16 -5
  64. package/core/pipeline-executor.d.ts +3 -6
  65. package/core/pipeline-executor.js +4 -7
  66. package/core/print/normalize-printer.d.ts +1 -1
  67. package/core/print/normalize-printer.js +2 -2
  68. package/core/steps/all/core/00-parse.d.ts +1 -1
  69. package/core/steps/all/core/00-parse.js +1 -1
  70. package/core/steps/all/core/10-normalize.d.ts +3 -9
  71. package/core/steps/all/core/10-normalize.js +1 -16
  72. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +2 -3
  73. package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
  74. package/core/steps/all/core/20-dataflow.d.ts +3 -4
  75. package/core/steps/all/core/20-dataflow.js +2 -2
  76. package/core/steps/all/static-slicing/00-slice.d.ts +4 -2
  77. package/core/steps/all/static-slicing/00-slice.js +3 -2
  78. package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
  79. package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
  80. package/core/steps/pipeline/default-pipelines.d.ts +94 -95
  81. package/core/steps/pipeline/default-pipelines.js +8 -8
  82. package/dataflow/cluster.js +2 -2
  83. package/dataflow/environments/append.d.ts +5 -0
  84. package/dataflow/environments/append.js +6 -20
  85. package/dataflow/environments/built-in.d.ts +2 -1
  86. package/dataflow/environments/clone.d.ts +1 -2
  87. package/dataflow/environments/clone.js +3 -17
  88. package/dataflow/environments/define.d.ts +7 -3
  89. package/dataflow/environments/define.js +9 -56
  90. package/dataflow/environments/diff.js +3 -3
  91. package/dataflow/environments/environment.d.ts +48 -28
  92. package/dataflow/environments/environment.js +187 -62
  93. package/dataflow/environments/overwrite.d.ts +1 -5
  94. package/dataflow/environments/overwrite.js +2 -61
  95. package/dataflow/environments/reference-to-maybe.d.ts +13 -0
  96. package/dataflow/environments/reference-to-maybe.js +54 -0
  97. package/dataflow/environments/resolve-by-name.d.ts +6 -1
  98. package/dataflow/environments/resolve-by-name.js +56 -4
  99. package/dataflow/environments/scoping.d.ts +8 -4
  100. package/dataflow/environments/scoping.js +13 -9
  101. package/dataflow/eval/resolve/alias-tracking.d.ts +10 -4
  102. package/dataflow/eval/resolve/alias-tracking.js +15 -13
  103. package/dataflow/eval/resolve/resolve-argument.d.ts +2 -1
  104. package/dataflow/eval/resolve/resolve-argument.js +10 -10
  105. package/dataflow/eval/resolve/resolve.d.ts +13 -11
  106. package/dataflow/eval/resolve/resolve.js +16 -15
  107. package/dataflow/eval/values/string/string-constants.d.ts +9 -3
  108. package/dataflow/eval/values/string/string-constants.js +9 -3
  109. package/dataflow/extractor.d.ts +2 -3
  110. package/dataflow/extractor.js +25 -28
  111. package/dataflow/fn/higher-order-function.d.ts +2 -1
  112. package/dataflow/fn/higher-order-function.js +4 -4
  113. package/dataflow/graph/dataflowgraph-builder.d.ts +9 -5
  114. package/dataflow/graph/dataflowgraph-builder.js +21 -11
  115. package/dataflow/graph/diff-dataflow-graph.js +2 -2
  116. package/dataflow/graph/graph.d.ts +13 -11
  117. package/dataflow/graph/graph.js +40 -24
  118. package/dataflow/graph/invert-dfg.d.ts +3 -2
  119. package/dataflow/graph/invert-dfg.js +3 -3
  120. package/dataflow/graph/resolve-graph.d.ts +2 -1
  121. package/dataflow/graph/resolve-graph.js +2 -2
  122. package/dataflow/graph/unknown-replacement.d.ts +4 -2
  123. package/dataflow/graph/unknown-replacement.js +4 -2
  124. package/dataflow/graph/vertex.d.ts +3 -3
  125. package/dataflow/graph/vertex.js +3 -3
  126. package/dataflow/info.d.ts +8 -1
  127. package/dataflow/info.js +21 -0
  128. package/dataflow/internal/linker.js +10 -11
  129. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +2 -2
  130. package/dataflow/internal/process/functions/call/argument/make-argument.js +2 -3
  131. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +7 -1
  132. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +12 -3
  133. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +1 -1
  134. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +7 -7
  135. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +2 -2
  136. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +3 -1
  137. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +6 -6
  138. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +14 -14
  139. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +10 -8
  140. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +4 -4
  141. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +2 -1
  142. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +10 -14
  143. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +1 -1
  144. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +2 -2
  145. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +3 -1
  146. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +8 -6
  147. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +1 -1
  148. package/dataflow/internal/process/functions/call/built-in/built-in-list.js +2 -2
  149. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +4 -4
  150. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +6 -1
  151. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +7 -2
  152. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -5
  153. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +6 -4
  154. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +15 -10
  155. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +78 -75
  156. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -1
  157. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -1
  158. package/dataflow/internal/process/functions/call/built-in/built-in-vector.js +2 -2
  159. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +5 -5
  160. package/dataflow/internal/process/functions/call/common.d.ts +1 -1
  161. package/dataflow/internal/process/functions/call/common.js +6 -7
  162. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -1
  163. package/dataflow/internal/process/functions/call/default-call-handling.js +3 -1
  164. package/dataflow/internal/process/functions/call/known-call-handling.js +4 -4
  165. package/dataflow/internal/process/functions/call/named-call-handling.js +4 -4
  166. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +1 -1
  167. package/dataflow/internal/process/functions/process-argument.js +1 -1
  168. package/dataflow/internal/process/functions/process-parameter.js +4 -4
  169. package/dataflow/internal/process/process-symbol.js +1 -1
  170. package/dataflow/internal/process/process-value.d.ts +1 -1
  171. package/dataflow/internal/process/process-value.js +7 -7
  172. package/dataflow/origin/dfg-get-symbol-refs.d.ts +1 -1
  173. package/dataflow/origin/dfg-get-symbol-refs.js +1 -1
  174. package/dataflow/processor.d.ts +7 -16
  175. package/documentation/data/dfg/doc-data-dfg-util.d.ts +0 -2
  176. package/documentation/data/faq/faqs.js +27 -18
  177. package/documentation/data/faq/recommended-configs.d.ts +36 -0
  178. package/documentation/data/faq/recommended-configs.js +40 -0
  179. package/documentation/data/faq/wiki-faq-store.d.ts +1 -0
  180. package/documentation/data/faq/wiki-faq-store.js +10 -2
  181. package/documentation/data/server/doc-data-server-messages.js +1 -1
  182. package/documentation/doc-capabilities.d.ts +9 -0
  183. package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
  184. package/documentation/doc-readme.d.ts +9 -0
  185. package/documentation/{print-readme.js → doc-readme.js} +31 -35
  186. package/documentation/doc-util/doc-benchmarks.d.ts +6 -4
  187. package/documentation/doc-util/doc-benchmarks.js +6 -4
  188. package/documentation/doc-util/doc-cfg.js +5 -8
  189. package/documentation/doc-util/doc-dfg.d.ts +7 -7
  190. package/documentation/doc-util/doc-dfg.js +15 -14
  191. package/documentation/doc-util/doc-escape.d.ts +6 -0
  192. package/documentation/doc-util/doc-escape.js +11 -0
  193. package/documentation/doc-util/doc-general.d.ts +22 -2
  194. package/documentation/doc-util/doc-general.js +22 -2
  195. package/documentation/doc-util/doc-normalized-ast.d.ts +10 -5
  196. package/documentation/doc-util/doc-normalized-ast.js +14 -10
  197. package/documentation/doc-util/doc-query.d.ts +12 -4
  198. package/documentation/doc-util/doc-query.js +18 -11
  199. package/documentation/doc-util/doc-search.d.ts +0 -30
  200. package/documentation/doc-util/doc-search.js +2 -73
  201. package/documentation/doc-util/doc-server-message.d.ts +5 -5
  202. package/documentation/doc-util/doc-server-message.js +4 -4
  203. package/documentation/doc-util/doc-types.d.ts +69 -32
  204. package/documentation/doc-util/doc-types.js +109 -62
  205. package/documentation/index.d.ts +9 -9
  206. package/documentation/index.js +9 -9
  207. package/documentation/issue-linting-rule.d.ts +9 -0
  208. package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
  209. package/documentation/wiki-analyzer.d.ts +9 -0
  210. package/documentation/wiki-analyzer.js +425 -0
  211. package/documentation/wiki-cfg.d.ts +9 -0
  212. package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
  213. package/documentation/wiki-core.d.ts +14 -0
  214. package/documentation/{print-core-wiki.js → wiki-core.js} +164 -175
  215. package/documentation/wiki-dataflow-graph.d.ts +9 -0
  216. package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +146 -177
  217. package/documentation/wiki-engine.d.ts +9 -0
  218. package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
  219. package/documentation/wiki-faq.d.ts +8 -0
  220. package/documentation/wiki-faq.js +21 -0
  221. package/documentation/wiki-interface.d.ts +9 -0
  222. package/documentation/{print-interface-wiki.js → wiki-interface.js} +59 -56
  223. package/documentation/wiki-linter.d.ts +9 -0
  224. package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
  225. package/documentation/wiki-linting-and-testing.d.ts +9 -0
  226. package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
  227. package/documentation/wiki-mk/doc-context.d.ts +186 -0
  228. package/documentation/wiki-mk/doc-context.js +84 -0
  229. package/documentation/wiki-mk/doc-maker.d.ts +95 -0
  230. package/documentation/wiki-mk/doc-maker.js +134 -0
  231. package/documentation/wiki-normalized-ast.d.ts +9 -0
  232. package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
  233. package/documentation/wiki-onboarding.d.ts +8 -0
  234. package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
  235. package/documentation/wiki-query.d.ts +9 -0
  236. package/documentation/{print-query-wiki.js → wiki-query.js} +62 -47
  237. package/documentation/wiki-search.d.ts +9 -0
  238. package/documentation/wiki-search.js +61 -0
  239. package/linter/linter-executor.js +3 -2
  240. package/linter/linter-format.d.ts +2 -2
  241. package/linter/linter-rules.d.ts +15 -19
  242. package/linter/rules/absolute-path.d.ts +1 -2
  243. package/linter/rules/absolute-path.js +5 -5
  244. package/linter/rules/dataframe-access-validation.d.ts +2 -2
  245. package/linter/rules/dataframe-access-validation.js +13 -9
  246. package/linter/rules/dead-code.d.ts +1 -1
  247. package/linter/rules/deprecated-functions.d.ts +1 -5
  248. package/linter/rules/file-path-validity.d.ts +1 -1
  249. package/linter/rules/file-path-validity.js +4 -4
  250. package/linter/rules/function-finder-util.d.ts +3 -7
  251. package/linter/rules/function-finder-util.js +1 -1
  252. package/linter/rules/naming-convention.d.ts +2 -2
  253. package/linter/rules/naming-convention.js +1 -1
  254. package/linter/rules/network-functions.d.ts +1 -1
  255. package/linter/rules/network-functions.js +1 -1
  256. package/linter/rules/seeded-randomness.d.ts +4 -3
  257. package/linter/rules/seeded-randomness.js +38 -18
  258. package/linter/rules/unused-definition.d.ts +1 -1
  259. package/linter/rules/useless-loop.d.ts +2 -2
  260. package/linter/rules/useless-loop.js +2 -2
  261. package/package.json +5 -17
  262. package/project/cache/flowr-analyzer-cache.d.ts +7 -10
  263. package/project/cache/flowr-analyzer-cache.js +17 -38
  264. package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
  265. package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
  266. package/project/context/flowr-analyzer-context.d.ts +37 -5
  267. package/project/context/flowr-analyzer-context.js +51 -4
  268. package/project/context/flowr-analyzer-environment-context.d.ts +47 -0
  269. package/project/context/flowr-analyzer-environment-context.js +50 -0
  270. package/project/context/flowr-analyzer-files-context.d.ts +63 -13
  271. package/project/context/flowr-analyzer-files-context.js +110 -39
  272. package/project/context/flowr-file.d.ts +32 -10
  273. package/project/context/flowr-file.js +30 -9
  274. package/project/flowr-analyzer-builder.d.ts +22 -28
  275. package/project/flowr-analyzer-builder.js +32 -70
  276. package/project/flowr-analyzer.d.ts +55 -14
  277. package/project/flowr-analyzer.js +53 -8
  278. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +7 -1
  279. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
  280. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
  281. package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
  282. package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -3
  283. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
  284. package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
  285. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
  286. package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
  287. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
  288. package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
  289. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
  290. package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
  291. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
  292. package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
  293. package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
  294. package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
  295. package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
  296. package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
  297. package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
  298. package/project/plugins/flowr-analyzer-plugin.js +2 -0
  299. package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
  300. package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
  301. package/project/plugins/plugin-registry.d.ts +34 -0
  302. package/project/plugins/plugin-registry.js +62 -0
  303. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
  304. package/queries/catalog/call-context-query/call-context-query-executor.js +5 -6
  305. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +5 -2
  306. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +25 -18
  307. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  308. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +1 -1
  309. package/queries/catalog/control-flow-query/control-flow-query-format.js +3 -2
  310. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +1 -1
  311. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  312. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  313. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +1 -1
  314. package/queries/catalog/dependencies-query/dependencies-query-executor.js +5 -5
  315. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +1 -1
  316. package/queries/catalog/dependencies-query/dependencies-query-format.js +1 -1
  317. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +1 -1
  318. package/queries/catalog/df-shape-query/df-shape-query-executor.js +2 -2
  319. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +6 -6
  320. package/queries/catalog/df-shape-query/df-shape-query-format.js +8 -7
  321. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +2 -1
  322. package/queries/catalog/happens-before-query/happens-before-query-executor.js +2 -1
  323. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  324. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  325. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +1 -1
  326. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +4 -4
  327. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +1 -1
  328. package/queries/catalog/linter-query/linter-query-format.d.ts +1 -1
  329. package/queries/catalog/linter-query/linter-query-format.js +13 -2
  330. package/queries/catalog/location-map-query/location-map-query-executor.js +2 -1
  331. package/queries/catalog/location-map-query/location-map-query-format.d.ts +1 -1
  332. package/queries/catalog/location-map-query/location-map-query-format.js +1 -1
  333. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  334. package/queries/catalog/origin-query/origin-query-format.d.ts +1 -1
  335. package/queries/catalog/project-query/project-query-executor.js +3 -1
  336. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  337. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +2 -2
  338. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +3 -3
  339. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +1 -1
  340. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  341. package/queries/catalog/static-slice-query/static-slice-query-executor.js +2 -2
  342. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +1 -1
  343. package/queries/catalog/static-slice-query/static-slice-query-format.js +13 -1
  344. package/queries/query.d.ts +26 -18
  345. package/queries/query.js +21 -1
  346. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
  347. package/r-bridge/lang-4.x/ast/model/collect.js +4 -0
  348. package/r-bridge/lang-4.x/ast/model/nodes/r-project.d.ts +29 -0
  349. package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -0
  350. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +5 -7
  351. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +24 -11
  352. package/r-bridge/lang-4.x/ast/model/type.d.ts +2 -0
  353. package/r-bridge/lang-4.x/ast/model/type.js +2 -0
  354. package/r-bridge/lang-4.x/ast/parser/json/format.js +1 -1
  355. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +9 -8
  356. package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -10
  357. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.d.ts +4 -3
  358. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
  359. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +3 -3
  360. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +5 -4
  361. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +3 -2
  362. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +14 -5
  363. package/r-bridge/parser.d.ts +15 -5
  364. package/r-bridge/parser.js +27 -13
  365. package/r-bridge/retriever.d.ts +9 -15
  366. package/r-bridge/retriever.js +14 -5
  367. package/r-bridge/shell.d.ts +1 -1
  368. package/r-bridge/shell.js +1 -1
  369. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
  370. package/reconstruct/auto-select/magic-comments.js +1 -1
  371. package/reconstruct/reconstruct.d.ts +17 -9
  372. package/reconstruct/reconstruct.js +19 -8
  373. package/search/flowr-search.d.ts +12 -0
  374. package/search/search-executor/search-enrichers.d.ts +9 -2
  375. package/search/search-executor/search-enrichers.js +1 -3
  376. package/search/search-executor/search-generators.d.ts +1 -1
  377. package/search/search-executor/search-generators.js +9 -4
  378. package/slicing/criterion/collect-all.d.ts +3 -2
  379. package/slicing/criterion/collect-all.js +1 -1
  380. package/slicing/criterion/parse.js +4 -4
  381. package/slicing/static/slice-call.d.ts +3 -2
  382. package/slicing/static/slice-call.js +4 -4
  383. package/slicing/static/static-slicer.d.ts +3 -1
  384. package/slicing/static/static-slicer.js +6 -7
  385. package/statistics/features/supported/assignments/assignments.js +1 -1
  386. package/statistics/features/supported/control-flow/control-flow.js +2 -2
  387. package/statistics/features/supported/data-access/data-access.js +1 -1
  388. package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
  389. package/statistics/features/supported/expression-list/statistics-expression-list.js +1 -1
  390. package/statistics/features/supported/loops/loops.js +1 -1
  391. package/statistics/features/supported/used-functions/used-functions.js +2 -2
  392. package/statistics/features/supported/variables/variables.js +3 -2
  393. package/statistics/statistics.js +3 -2
  394. package/util/assert.d.ts +4 -0
  395. package/util/assert.js +4 -0
  396. package/util/containers.js +1 -1
  397. package/util/files.d.ts +1 -1
  398. package/util/files.js +1 -1
  399. package/util/mermaid/ast.d.ts +4 -3
  400. package/util/mermaid/ast.js +36 -8
  401. package/util/mermaid/cfg.js +1 -1
  402. package/util/mermaid/dfg.d.ts +1 -0
  403. package/util/mermaid/dfg.js +3 -3
  404. package/util/simple-df/dfg-view.d.ts +2 -1
  405. package/util/simple-df/dfg-view.js +2 -2
  406. package/util/version.js +1 -1
  407. package/dataflow/environments/remove.d.ts +0 -12
  408. package/dataflow/environments/remove.js +0 -52
  409. package/documentation/print-analyzer-wiki.d.ts +0 -1
  410. package/documentation/print-analyzer-wiki.js +0 -141
  411. package/documentation/print-capabilities-markdown.d.ts +0 -1
  412. package/documentation/print-cfg-wiki.d.ts +0 -1
  413. package/documentation/print-core-wiki.d.ts +0 -5
  414. package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
  415. package/documentation/print-engines-wiki.d.ts +0 -1
  416. package/documentation/print-faq-wiki.d.ts +0 -1
  417. package/documentation/print-faq-wiki.js +0 -18
  418. package/documentation/print-interface-wiki.d.ts +0 -1
  419. package/documentation/print-linter-issue.d.ts +0 -1
  420. package/documentation/print-linter-wiki.d.ts +0 -1
  421. package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
  422. package/documentation/print-normalized-ast-wiki.d.ts +0 -1
  423. package/documentation/print-onboarding-wiki.d.ts +0 -1
  424. package/documentation/print-query-wiki.d.ts +0 -1
  425. package/documentation/print-readme.d.ts +0 -1
  426. package/documentation/print-search-wiki.d.ts +0 -1
  427. package/documentation/print-search-wiki.js +0 -74
  428. package/util/formats/adapter-format.d.ts +0 -6
  429. package/util/formats/adapter-format.js +0 -3
  430. package/util/formats/adapter.d.ts +0 -27
  431. package/util/formats/adapter.js +0 -58
  432. package/util/formats/adapters/r-adapter.d.ts +0 -4
  433. package/util/formats/adapters/r-adapter.js +0 -7
  434. package/util/formats/adapters/rmd-adapter.d.ts +0 -35
  435. package/util/formats/adapters/rmd-adapter.js +0 -100
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const shell_1 = require("../r-bridge/shell");
3
+ exports.WikiQuery = void 0;
7
4
  const doc_dfg_1 = require("./doc-util/doc-dfg");
8
- const log_1 = require("../../test/functionality/_helper/log");
9
5
  const query_1 = require("../queries/query");
10
6
  const doc_files_1 = require("./doc-util/doc-files");
11
7
  const doc_query_1 = require("./doc-util/doc-query");
@@ -13,7 +9,6 @@ const schema_1 = require("../util/schema");
13
9
  const ansi_1 = require("../util/text/ansi");
14
10
  const call_context_query_executor_1 = require("../queries/catalog/call-context-query/call-context-query-executor");
15
11
  const compound_query_1 = require("../queries/virtual-query/compound-query");
16
- const doc_auto_gen_1 = require("./doc-util/doc-auto-gen");
17
12
  const example_query_code_1 = require("./data/query/example-query-code");
18
13
  const doc_structure_1 = require("./doc-util/doc-structure");
19
14
  const doc_code_1 = require("./doc-util/doc-code");
@@ -31,14 +26,14 @@ const config_query_executor_1 = require("../queries/catalog/config-query/config-
31
26
  const search_query_executor_1 = require("../queries/catalog/search-query/search-query-executor");
32
27
  const flowr_search_builder_1 = require("../search/flowr-search-builder");
33
28
  const vertex_1 = require("../dataflow/graph/vertex");
34
- const doc_types_1 = require("./doc-util/doc-types");
35
- const path_1 = __importDefault(require("path"));
36
29
  const control_flow_query_executor_1 = require("../queries/catalog/control-flow-query/control-flow-query-executor");
37
30
  const doc_cfg_1 = require("./doc-util/doc-cfg");
38
31
  const df_shape_query_executor_1 = require("../queries/catalog/df-shape-query/df-shape-query-executor");
39
32
  const _00_slice_1 = require("../core/steps/all/static-slicing/00-slice");
40
33
  const doc_repl_1 = require("./doc-util/doc-repl");
41
34
  const inspect_higher_order_query_executor_1 = require("../queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor");
35
+ const doc_escape_1 = require("./doc-util/doc-escape");
36
+ const doc_maker_1 = require("./wiki-mk/doc-maker");
42
37
  (0, doc_query_1.registerQueryDocumentation)('call-context', {
43
38
  name: 'Call-Context Query',
44
39
  type: 'active',
@@ -199,16 +194,17 @@ ${await (0, doc_query_1.showQuery)(shell, example_query_code_1.exampleQueryCode,
199
194
  functionName: search_query_executor_1.executeSearch.name,
200
195
  functionFile: '../queries/catalog/resolve-value-query/resolve-value-query-executor.ts',
201
196
  buildExplanation: async (shell) => {
202
- const exampleCode = 'x <- 1\nprint(x)';
197
+ const exampleCode = 'x <- 1\ny <-2\nprint(x)\nprint(y)';
198
+ const criteria = ['3@x', '4@y'];
203
199
  return `
204
200
  With this query you can use flowR's value-tracking capabilities to resolve identifiers to all potential values they may have at runtime (if possible).
205
201
  The extent to which flowR traces values (e.g., built-ins vs. constants) can be configured in flowR's Configuration file (see the [Interface](${doc_files_1.FlowrWikiBaseRef}/Interface) wiki page for more information).
206
202
 
207
- Using the example code \`${exampleCode}\` (with the \`print(x)\` in the second line), the following query returns all values of \`x\` in the code:
203
+ Using the example code \`${exampleCode}\` (with newlines), the following query returns all values of \`x\` in the code:
208
204
  ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
209
205
  type: 'resolve-value',
210
- criteria: ['2@x']
211
- }], { showCode: true })}
206
+ criteria: criteria
207
+ }], { showCode: true, shorthand: (0, doc_query_1.sliceQueryShorthand)(criteria, (0, doc_escape_1.escapeNewline)(exampleCode)) })}
212
208
  `;
213
209
  }
214
210
  });
@@ -239,6 +235,7 @@ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
239
235
  functionFile: '../queries/catalog/origin-query/origin-query-executor.ts',
240
236
  buildExplanation: async (shell) => {
241
237
  const exampleCode = 'x <- 1\nprint(x)';
238
+ const criterion = '2@x';
242
239
  return `
243
240
  With this query you can use flowR's origin tracking to find out the read origins of a variable,
244
241
  the functions called by a call, and more.
@@ -246,8 +243,8 @@ the functions called by a call, and more.
246
243
  Using the example code \`${exampleCode}\` (with the \`print(x)\` in the second line), the following query returns the origins of \`x\` in the code:
247
244
  ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
248
245
  type: 'origin',
249
- criterion: '2@x'
250
- }], { showCode: true })}
246
+ criterion: criterion
247
+ }], { showCode: true, shorthand: (0, doc_query_1.sliceQueryShorthand)([criterion], (0, doc_escape_1.escapeNewline)(exampleCode)) })}
251
248
  `;
252
249
  }
253
250
  });
@@ -329,7 +326,7 @@ ${await (0, doc_query_1.showQuery)(shell, '', [{
329
326
  }
330
327
  }], { showCode: false, collapseQuery: true, collapseResult: true })}
331
328
 
332
- Please note that, in the repl, a special syntax starting with \`+\` (which should be autocompleted) can be used to update the configuration on the fly:
329
+ Please note that, in the REPL, a special syntax starting with \`+\` (which should be autocompleted) can be used to update the configuration on the fly:
333
330
 
334
331
  ${await (0, doc_repl_1.documentReplSession)(shell, [
335
332
  {
@@ -348,11 +345,18 @@ ${await (0, doc_repl_1.documentReplSession)(shell, [
348
345
  functionFile: '../queries/catalog/df-shape-query/df-shape-query-format.ts',
349
346
  buildExplanation: async (shell) => {
350
347
  const exampleCode = 'x <- data.frame(a=1:3)\nfilter(x, FALSE)';
348
+ const criterion = '2@x';
351
349
  return `
352
350
  This query infers all shapes of dataframes within the code. For example, you can use:
353
351
  ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
354
352
  type: 'df-shape'
355
353
  }], { showCode: true, collapseQuery: true })}
354
+
355
+ The query also accepts an optional slice criterion to narrow the results to a specific node. For example:
356
+ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
357
+ type: 'df-shape',
358
+ criterion: criterion
359
+ }], { showCode: true, collapseQuery: true, shorthand: (0, doc_query_1.sliceQueryShorthand)([criterion], (0, doc_escape_1.escapeNewline)(exampleCode)) })}
356
360
  `;
357
361
  }
358
362
  });
@@ -417,7 +421,8 @@ Now, the results no longer contain calls to \`plot\` that are not defined locall
417
421
  functionName: static_slice_query_executor_1.executeStaticSliceQuery.name,
418
422
  functionFile: '../queries/catalog/static-slice-query/static-slice-query-executor.ts',
419
423
  buildExplanation: async (shell) => {
420
- const exampleCode = 'x <- 1\ny <- 2\nx';
424
+ const exampleCode = 'x <- 1\ny <- 2\nz <- 3\nx';
425
+ const criteria = ['3@z', '4@x'];
421
426
  return `
422
427
  To slice, _flowR_ needs one thing from you: a variable or a list of variables (function calls are supported to, referring to the anonymous
423
428
  return of the call) that you want to slice the dataflow graph for (additionally, you have to tell flowR if you want to have a forward slice).
@@ -430,15 +435,15 @@ If you are interested in the parts required for the use of \`x\` in the last lin
430
435
 
431
436
  ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
432
437
  type: 'static-slice',
433
- criteria: ['3@x']
434
- }], { showCode: false })}
438
+ criteria: criteria
439
+ }], { showCode: false, shorthand: (0, doc_query_1.sliceQueryShorthand)(criteria, (0, doc_escape_1.escapeNewline)(exampleCode)) })}
435
440
 
436
441
  In general, you may be uninterested in seeing the reconstructed version and want to save some computation time, for this,
437
442
  you can use the \`noReconstruction\` flag.
438
443
 
439
444
  ${(0, doc_structure_1.details)('No Reconstruction Example', await (0, doc_query_1.showQuery)(shell, exampleCode, [{
440
445
  type: 'static-slice',
441
- criteria: ['3@x'],
446
+ criteria: ['4@x'],
442
447
  noReconstruction: true
443
448
  }], { showCode: false }))}
444
449
 
@@ -448,7 +453,7 @@ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
448
453
  type: 'static-slice',
449
454
  criteria: ['1@x'],
450
455
  direction: _00_slice_1.SliceDirection.Forward
451
- }], { showCode: false })}
456
+ }], { showCode: false, shorthand: (0, doc_query_1.sliceQueryShorthand)(['1@x'], (0, doc_escape_1.escapeNewline)(exampleCode), true) })}
452
457
 
453
458
  You can disable [magic comments](${doc_files_1.FlowrWikiBaseRef}/Interface#slice-magic-comments) using the \`noMagicComments\` flag.
454
459
  This query replaces the old [\`request-slice\`](${doc_files_1.FlowrWikiBaseRef}/Interface#message-request-slice) message.
@@ -524,7 +529,16 @@ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
524
529
  type: 'linter'
525
530
  }], { showCode: false, collapseQuery: true })}
526
531
 
527
- You can also configure which rules to apply and what settings to use for these rules.
532
+ You can also configure which rules to apply and what settings to use for these rules:
533
+ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
534
+ type: 'linter',
535
+ rules: ['file-path-validity'],
536
+ }], {
537
+ showCode: false,
538
+ collapseQuery: true,
539
+ shorthand: `rules:file-path-validity "${exampleCode}"`
540
+ })}
541
+
528
542
  We welcome any feedback and suggestions for new rules on this (consider opening a [new issue](${doc_issue_1.NewIssueUrl})).
529
543
  `;
530
544
  }
@@ -592,11 +606,9 @@ ${await (0, doc_cfg_1.printCfgCode)(shell, exampleCode, { showCode: false, prefi
592
606
  shortDescription: 'Returns a simple mapping of ids to their location in the source file',
593
607
  functionName: location_map_query_executor_1.executeLocationMapQuery.name,
594
608
  functionFile: '../queries/catalog/location-map-query/location-map-query-executor.ts',
595
- buildExplanation: async (shell) => {
596
- const types = (0, doc_types_1.getTypesFromFolder)({
597
- files: [path_1.default.resolve('./src/util/range.ts')],
598
- });
609
+ buildExplanation: async (shell, ctx) => {
599
610
  const exampleCode = 'x + 1\nx * 2';
611
+ const criteria = ['1@x', '2@x'];
600
612
  return `
601
613
  A query like the ${(0, doc_query_1.linkToQueryOfName)('id-map')} query can return a huge result, especially for larger scripts.
602
614
  If you are not interested in all of the information contained within the full map, you can use the location map query to get a simple mapping of ids to their location in the source file.
@@ -611,28 +623,40 @@ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
611
623
  type: 'location-map'
612
624
  }], { showCode: false, collapseQuery: true })}
613
625
 
614
- All locations are given as a ${(0, doc_types_1.shortLink)('SourceRange', types.info)} paired with the file id in the format \`[file-id, [start-line, start-column, end-line, end-column]]\`.
626
+ The query also accepts a list of slice criteria to filter the results to only include the locations of specific nodes. For example:
627
+
628
+ ${await (0, doc_query_1.showQuery)(shell, exampleCode, [{
629
+ type: 'location-map',
630
+ ids: criteria
631
+ }], { showCode: false, collapseQuery: true, shorthand: (0, doc_query_1.sliceQueryShorthand)(criteria, (0, doc_escape_1.escapeNewline)(exampleCode)) })}
632
+
633
+ All locations are given as a ${ctx.link('SourceRange')} paired with the file id in the format \`[file-id, [start-line, start-column, end-line, end-column]]\`.
615
634
 
616
635
  `;
617
636
  }
618
637
  });
619
- async function getText(shell) {
620
- const rversion = (await shell.usedRVersion())?.format() ?? 'unknown';
621
- return `${(0, doc_auto_gen_1.autoGenHeader)({ filename: module.filename, purpose: 'query API', rVersion: rversion })}
622
-
638
+ /**
639
+ * https://github.com/flowr-analysis/flowr/wiki/Query-API
640
+ */
641
+ class WikiQuery extends doc_maker_1.DocMaker {
642
+ constructor() {
643
+ super('wiki/Query API.md', module.filename, 'query API');
644
+ }
645
+ async text({ ctx, shell }) {
646
+ return `
623
647
  This page briefly summarizes flowR's query API, represented by the ${query_1.executeQueries.name} function in ${(0, doc_files_1.getFilePathMd)('../queries/query.ts')}.
624
648
  Please see the [Interface](${doc_files_1.FlowrWikiBaseRef}/Interface) wiki page for more information on how to access this API.
625
649
 
626
650
  ${(0, doc_structure_1.block)({
627
- type: 'NOTE',
628
- content: `
651
+ type: 'NOTE',
652
+ content: `
629
653
  There are many ways to query a dataflow graph created by flowR.
630
654
  For example, you can use the [\`request-query\`](${doc_files_1.FlowrWikiBaseRef}/Interface#message-request-query) message
631
655
  with a running flowR server, or the ${(0, doc_cli_option_1.getReplCommand)('query')} command in the flowR [REPL](${doc_files_1.FlowrWikiBaseRef}/Interface#repl).
632
656
 
633
657
  Also, check out the [${doc_files_1.FlowrGithubGroupName}/sample-analyzer-project-query](${doc_files_1.FlowrGithubBaseRef}/sample-analyzer-project-query) repository for a complete example project using the query API.
634
658
  `.trim()
635
- })}
659
+ })}
636
660
 
637
661
  ## The Query Format
638
662
 
@@ -693,20 +717,11 @@ Just as an example, the following ${(0, doc_query_1.linkToQueryOfName)('call-con
693
717
 
694
718
  ${await (0, doc_query_1.showQuery)(shell, example_query_code_1.exampleQueryCode, [{ type: 'call-context', callName: '^read_csv$', callTargets: identify_link_to_last_call_relation_1.CallTargets.OnlyGlobal, kind: 'input', subkind: 'csv-file' }], { showCode: false })}
695
719
 
696
- ${await (0, doc_query_1.explainQueries)(shell, 'active')}
697
-
698
- ${await (0, doc_query_1.explainQueries)(shell, 'virtual')}
720
+ ${await (0, doc_query_1.explainQueries)(shell, ctx, 'active')}
699
721
 
722
+ ${await (0, doc_query_1.explainQueries)(shell, ctx, 'virtual')}
700
723
  `;
724
+ }
701
725
  }
702
- /** if we run this script, we want a Markdown representation of the capabilities */
703
- if (require.main === module) {
704
- (0, log_1.setMinLevelOfAllLogs)(6 /* LogLevel.Fatal */);
705
- const shell = new shell_1.RShell();
706
- void getText(shell).then(str => {
707
- console.log(str);
708
- }).finally(() => {
709
- shell.close();
710
- });
711
- }
712
- //# sourceMappingURL=print-query-wiki.js.map
726
+ exports.WikiQuery = WikiQuery;
727
+ //# sourceMappingURL=wiki-query.js.map
@@ -0,0 +1,9 @@
1
+ import type { DocMakerArgs } from './wiki-mk/doc-maker';
2
+ import { DocMaker } from './wiki-mk/doc-maker';
3
+ /**
4
+ * https://github.com/flowr-analysis/flowr/wiki/Search-API
5
+ */
6
+ export declare class WikiSearch extends DocMaker {
7
+ constructor();
8
+ text({ ctx, shell }: DocMakerArgs): Promise<string>;
9
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WikiSearch = void 0;
4
+ const doc_files_1 = require("./doc-util/doc-files");
5
+ const doc_search_1 = require("./doc-util/doc-search");
6
+ const flowr_search_builder_1 = require("../search/flowr-search-builder");
7
+ const vertex_1 = require("../dataflow/graph/vertex");
8
+ const flowr_search_executor_1 = require("../search/flowr-search-executor");
9
+ const doc_maker_1 = require("./wiki-mk/doc-maker");
10
+ const flowr_search_1 = require("../search/flowr-search");
11
+ /**
12
+ * https://github.com/flowr-analysis/flowr/wiki/Search-API
13
+ */
14
+ class WikiSearch extends doc_maker_1.DocMaker {
15
+ constructor() {
16
+ super('wiki/Search API.md', module.filename, 'search API');
17
+ }
18
+ async text({ ctx, shell }) {
19
+ return `
20
+ This page briefly summarizes flowR's search API which provides a set of functions to search for nodes in the [Dataflow Graph](${doc_files_1.FlowrWikiBaseRef}/Dataflow-Graph) and the
21
+ [Normalized AST](${doc_files_1.FlowrWikiBaseRef}/Normalized-AST) of a given R code (the search will always consider both, with respect to your search query).
22
+ Please see the [Interface](${doc_files_1.FlowrWikiBaseRef}/Interface) wiki page for more information on how to access this API.
23
+ Within code, you can execute a search using the ${ctx.link(flowr_search_executor_1.runSearch)} function.
24
+
25
+ For an initial motivation, let's have a look at the following example:
26
+
27
+ ${await (0, doc_search_1.showSearch)(shell, 'x <- x * x', flowr_search_builder_1.Q.var('x'))}
28
+
29
+ This returns all references to the variable \`x\` in the code.
30
+ However, the search API is not limited to simple variable references and can do much more.
31
+
32
+ For example, let's have every definition of \`x\` in the code but the first one:
33
+
34
+ ${await (0, doc_search_1.showSearch)(shell, 'x <- x * x\nprint(x)\nx <- y <- 3\nprint(x)\nx <- 2', flowr_search_builder_1.Q.var('x').filter(vertex_1.VertexType.VariableDefinition).skip(1))}
35
+
36
+ In summary, every search has two parts. It is initialized with a _generator_ (such as \`Q.var('x')\`)
37
+ and can be further refined with _transformers_ or _modifiers_.
38
+ Such queries can be constructed starting from the ${ctx.link('Q')} object (backed by ${ctx.link('FlowrSearchGenerator')}) and
39
+ are fully serializable so you can use them when communicating with the [Query API](${doc_files_1.FlowrWikiBaseRef}/Query%20API).
40
+
41
+ We offer the following generators:
42
+
43
+ ${Object.keys(flowr_search_builder_1.Q).sort().map(key => `- ${ctx.link(`FlowrSearchGenerator::${key}`)}\\\n${ctx.doc(`FlowrSearchGenerator::${key}`)}`).join('\n')}
44
+
45
+ Likewise, we have a palette of _transformers_ and _modifiers_:
46
+
47
+ ${
48
+ /* let's iterate over all methods of FlowrSearchBuilder */
49
+ Object.getOwnPropertyNames(Object.getPrototypeOf(new flowr_search_builder_1.FlowrSearchBuilder(undefined)))
50
+ .filter(n => n !== 'constructor').sort().map(key => `- ${ctx.link(`FlowrSearchBuilder::${key}`)}\\\n${ctx.doc(`FlowrSearchBuilder::${key}`)}`).join('\n')}
51
+
52
+ Every search (and consequently the search pipeline) works with an array of ${ctx.link('FlowrSearchElement')} (neatly wrapped in ${ctx.link(flowr_search_1.FlowrSearchElements)}).
53
+ Hence, even operations such as \`.first\` or \`.last\` return an array of elements (albeit with a single or no element).
54
+ The search API does its best to stay typesafe wrt. to the return type and the transformers in use.
55
+ In addition, it offers optimizer passes to optimize the search pipeline before execution.
56
+ They are executed with \`.build\` which may happen automatically, whenever you want to run a search using ${ctx.link(flowr_search_executor_1.runSearch)}.
57
+ `;
58
+ }
59
+ }
60
+ exports.WikiSearch = WikiSearch;
61
+ //# sourceMappingURL=wiki-search.js.map
@@ -17,10 +17,11 @@ async function executeLintingRule(ruleName, input, lintingRuleConfig) {
17
17
  const searchTime = Date.now() - searchStart;
18
18
  const processStart = Date.now();
19
19
  const result = await rule.processSearchResult(searchResult, fullConfig, {
20
- normalize: await input.normalize(),
20
+ /* we currently await them here for simplicity (no redundant awaits in the linting rules), but they could be passed as promises too */
21
21
  dataflow: await input.dataflow(),
22
+ normalize: await input.normalize(),
22
23
  cfg: await input.controlflow(),
23
- config: input.flowrConfig,
24
+ analyzer: input
24
25
  });
25
26
  const processTime = Date.now() - processStart;
26
27
  return {
@@ -9,8 +9,8 @@ import type { AsyncOrSync, DeepPartial, DeepReadonly } from 'ts-essentials';
9
9
  import type { LintingRuleTag } from './linter-tags';
10
10
  import type { SourceRange } from '../util/range';
11
11
  import type { DataflowInformation } from '../dataflow/info';
12
- import type { FlowrConfigOptions } from '../config';
13
12
  import type { ControlFlowInformation } from '../control-flow/control-flow-graph';
13
+ import type { ReadonlyFlowrAnalysisProvider } from '../project/flowr-analyzer';
14
14
  export interface LinterRuleInformation<Config extends MergeableRecord = never> {
15
15
  /** Human-Readable name of the linting rule. */
16
16
  readonly name: string;
@@ -51,7 +51,7 @@ export interface LintingRule<Result extends LintingResult, Metadata extends Merg
51
51
  normalize: NormalizedAst;
52
52
  dataflow: DataflowInformation;
53
53
  cfg: ControlFlowInformation;
54
- config: FlowrConfigOptions;
54
+ analyzer: ReadonlyFlowrAnalysisProvider;
55
55
  }) => AsyncOrSync<{
56
56
  results: Result[];
57
57
  '.meta': Metadata;
@@ -6,11 +6,7 @@ import type { LintingRule } from './linter-format';
6
6
  export declare const LintingRules: {
7
7
  readonly 'deprecated-functions': {
8
8
  readonly createSearch: (config: import("./rules/function-finder-util").FunctionsToDetectConfig) => import("../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with", "filter"], import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
9
- readonly processSearchResult: <T extends import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: import("./rules/function-finder-util").FunctionsToDetectConfig, _data: {
10
- normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
11
- dataflow: import("../dataflow/info").DataflowInformation;
12
- config: import("../config").FlowrConfigOptions;
13
- }, refineSearch?: (elements: T) => T) => {
9
+ readonly processSearchResult: <T extends import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: unknown, _data: unknown, refineSearch?: (elements: T) => T) => {
14
10
  results: {
15
11
  certainty: import("./linter-format").LintingResultCertainty;
16
12
  function: import("../dataflow/environments/identifier").Identifier;
@@ -38,7 +34,7 @@ export declare const LintingRules: {
38
34
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
39
35
  dataflow: import("../dataflow/info").DataflowInformation;
40
36
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
41
- config: import("../config").FlowrConfigOptions;
37
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
42
38
  }) => {
43
39
  results: import("./rules/file-path-validity").FilePathValidityResult[];
44
40
  ".meta": import("./rules/file-path-validity").FilePathValidityMetadata;
@@ -61,14 +57,14 @@ export declare const LintingRules: {
61
57
  };
62
58
  readonly 'seeded-randomness': {
63
59
  readonly createSearch: (config: import("./rules/seeded-randomness").SeededRandomnessConfig) => import("../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with", "filter", "with"], import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
64
- readonly processSearchResult: (elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, config: import("./rules/seeded-randomness").SeededRandomnessConfig, { dataflow }: {
60
+ readonly processSearchResult: (elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, config: import("./rules/seeded-randomness").SeededRandomnessConfig, { dataflow, analyzer }: {
65
61
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
66
62
  dataflow: import("../dataflow/info").DataflowInformation;
67
63
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
68
- config: import("../config").FlowrConfigOptions;
64
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
69
65
  }) => {
70
66
  results: {
71
- certainty: import("./linter-format").LintingResultCertainty.Certain;
67
+ certainty: import("./linter-format").LintingResultCertainty;
72
68
  function: import("../dataflow/environments/identifier").Identifier;
73
69
  range: import("../util/range").SourceRange;
74
70
  }[];
@@ -101,7 +97,7 @@ export declare const LintingRules: {
101
97
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
102
98
  dataflow: import("../dataflow/info").DataflowInformation;
103
99
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
104
- config: import("../config").FlowrConfigOptions;
100
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
105
101
  }) => {
106
102
  results: import("./rules/absolute-path").AbsoluteFilePathResult[];
107
103
  ".meta": import("./rules/absolute-path").AbsoluteFilePathMetadata;
@@ -132,7 +128,7 @@ export declare const LintingRules: {
132
128
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
133
129
  dataflow: import("../dataflow/info").DataflowInformation;
134
130
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
135
- config: import("../config").FlowrConfigOptions;
131
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
136
132
  }) => {
137
133
  results: import("./rules/unused-definition").UnusedDefinitionResult[];
138
134
  ".meta": import("./rules/unused-definition").UnusedDefinitionMetadata;
@@ -157,7 +153,7 @@ export declare const LintingRules: {
157
153
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
158
154
  dataflow: import("../dataflow/info").DataflowInformation;
159
155
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
160
- config: import("../config").FlowrConfigOptions;
156
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
161
157
  }) => {
162
158
  results: {
163
159
  quickFix: import("./linter-format").LintQuickFixReplacement[] | undefined;
@@ -178,7 +174,7 @@ export declare const LintingRules: {
178
174
  readonly info: {
179
175
  readonly name: "Naming Convention";
180
176
  readonly certainty: import("./linter-format").LintingRuleCertainty.OverApproximative;
181
- readonly description: "Checks wether the symbols conform to a certain naming convention";
177
+ readonly description: "Checks whether the symbols conform to a certain naming convention";
182
178
  readonly tags: readonly [import("./linter-tags").LintingRuleTag.Style, import("./linter-tags").LintingRuleTag.QuickFix];
183
179
  readonly defaultConfig: {
184
180
  readonly caseing: "auto";
@@ -192,7 +188,7 @@ export declare const LintingRules: {
192
188
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
193
189
  dataflow: import("../dataflow/info").DataflowInformation;
194
190
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
195
- config: import("../config").FlowrConfigOptions;
191
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
196
192
  }) => {
197
193
  results: {
198
194
  certainty: import("./linter-format").LintingResultCertainty;
@@ -222,7 +218,7 @@ export declare const LintingRules: {
222
218
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
223
219
  dataflow: import("../dataflow/info").DataflowInformation;
224
220
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
225
- config: import("../config").FlowrConfigOptions;
221
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
226
222
  }) => {
227
223
  results: import("./rules/dataframe-access-validation").DataFrameAccessValidationResult[];
228
224
  '.meta': import("./rules/dataframe-access-validation").DataFrameAccessValidationMetadata;
@@ -235,7 +231,7 @@ export declare const LintingRules: {
235
231
  readonly name: "Dataframe Access Validation";
236
232
  readonly tags: readonly [import("./linter-tags").LintingRuleTag.Bug, import("./linter-tags").LintingRuleTag.Usability, import("./linter-tags").LintingRuleTag.Reproducibility];
237
233
  readonly certainty: import("./linter-format").LintingRuleCertainty.BestEffort;
238
- readonly description: "Validates the existance of accessed columns and rows of dataframes.";
234
+ readonly description: "Validates the existence of accessed columns and rows of dataframes.";
239
235
  readonly defaultConfig: {
240
236
  readonly readLoadedData: false;
241
237
  };
@@ -247,7 +243,7 @@ export declare const LintingRules: {
247
243
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
248
244
  dataflow: import("../dataflow/info").DataflowInformation;
249
245
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
250
- config: import("../config").FlowrConfigOptions;
246
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
251
247
  }) => {
252
248
  results: {
253
249
  certainty: import("./linter-format").LintingResultCertainty.Certain;
@@ -269,11 +265,11 @@ export declare const LintingRules: {
269
265
  };
270
266
  readonly 'useless-loop': {
271
267
  readonly createSearch: () => import("../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
272
- readonly processSearchResult: (elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, useLessLoopConfig: import("./rules/useless-loop").UselessLoopConfig, { config, dataflow, normalize, cfg }: {
268
+ readonly processSearchResult: (elements: import("../search/flowr-search").FlowrSearchElements<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../search/flowr-search").FlowrSearchElement<import("../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, useLessLoopConfig: import("./rules/useless-loop").UselessLoopConfig, { analyzer, dataflow, normalize, cfg }: {
273
269
  normalize: import("../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
274
270
  dataflow: import("../dataflow/info").DataflowInformation;
275
271
  cfg: import("../control-flow/control-flow-graph").ControlFlowInformation;
276
- config: import("../config").FlowrConfigOptions;
272
+ analyzer: import("../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
277
273
  }) => {
278
274
  results: {
279
275
  certainty: import("./linter-format").LintingResultCertainty.Certain;
@@ -3,7 +3,6 @@ import { type MergeableRecord } from '../../util/objects';
3
3
  import { type SourceRange } from '../../util/range';
4
4
  import { LintingRuleTag } from '../linter-tags';
5
5
  import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
6
- import type { FlowrConfigOptions } from '../../config';
7
6
  export interface AbsoluteFilePathResult extends LintingResult {
8
7
  filePath: string;
9
8
  range: SourceRange;
@@ -40,7 +39,7 @@ export declare const ABSOLUTE_PATH: {
40
39
  normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
41
40
  dataflow: import("../../dataflow/info").DataflowInformation;
42
41
  cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
43
- config: FlowrConfigOptions;
42
+ analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
44
43
  }) => {
45
44
  results: AbsoluteFilePathResult[];
46
45
  ".meta": AbsoluteFilePathMetadata;
@@ -49,15 +49,15 @@ function buildQuickFix(str, filePath, wd) {
49
49
  }
50
50
  /** return all strings constructable by these functions */
51
51
  const PathFunctions = {
52
- 'file.path': (df, vtx, config) => {
53
- const fsep = (0, resolve_argument_1.getArgumentStringValue)(config.solver.variables, df, vtx, undefined, 'fsep', true);
52
+ 'file.path': (df, vtx, ctx) => {
53
+ const fsep = (0, resolve_argument_1.getArgumentStringValue)(ctx.config.solver.variables, df, vtx, undefined, 'fsep', true, ctx);
54
54
  // in the future we can access `.Platform$file.sep` here
55
- const sepValues = new Array(...fsep?.values()?.flatMap(s => [...s].filter(assert_1.isNotUndefined)) ?? [path_1.default.sep]);
55
+ const sepValues = fsep?.values()?.flatMap(s => s.values().filter(assert_1.isNotUndefined)).toArray() ?? [path_1.default.sep];
56
56
  if (sepValues.some(s => s === dependencies_query_format_1.Unknown || (0, assert_1.isUndefined)(s))) {
57
57
  // if we have no fsep, we cannot construct a path
58
58
  return undefined;
59
59
  }
60
- const args = (0, resolve_argument_1.getArgumentStringValue)(config.solver.variables, df, vtx, 'unnamed', undefined, true);
60
+ const args = (0, resolve_argument_1.getArgumentStringValue)(ctx.config.solver.variables, df, vtx, 'unnamed', undefined, true, ctx);
61
61
  const argValues = args ? Array.from(args.values()).flatMap(v => [...v]) : [];
62
62
  if (!argValues || argValues.length === 0 || argValues.some(v => v === dependencies_query_format_1.Unknown || (0, assert_1.isUndefined)(v))) {
63
63
  // if we have no arguments, we cannot construct a path
@@ -139,7 +139,7 @@ exports.ABSOLUTE_PATH = {
139
139
  const dfNode = data.dataflow.graph.getVertex(node.info.id);
140
140
  if ((0, vertex_1.isFunctionCallVertex)(dfNode)) {
141
141
  const handler = PathFunctions[dfNode.name ?? ''];
142
- const strings = handler ? handler(data.dataflow.graph, dfNode, data.config) : [];
142
+ const strings = handler ? handler(data.dataflow.graph, dfNode, data.analyzer.inspectContext()) : [];
143
143
  if (strings) {
144
144
  return strings.filter(s => (0, strings_1.isAbsolutePath)(s, regex)).map(str => ({
145
145
  certainty: linter_format_1.LintingResultCertainty.Uncertain,
@@ -34,7 +34,7 @@ export declare const DATA_FRAME_ACCESS_VALIDATION: {
34
34
  normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
35
35
  dataflow: import("../../dataflow/info").DataflowInformation;
36
36
  cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
37
- config: import("../../config").FlowrConfigOptions;
37
+ analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
38
38
  }) => {
39
39
  results: DataFrameAccessValidationResult[];
40
40
  '.meta': DataFrameAccessValidationMetadata;
@@ -47,7 +47,7 @@ export declare const DATA_FRAME_ACCESS_VALIDATION: {
47
47
  readonly name: "Dataframe Access Validation";
48
48
  readonly tags: readonly [LintingRuleTag.Bug, LintingRuleTag.Usability, LintingRuleTag.Reproducibility];
49
49
  readonly certainty: LintingRuleCertainty.BestEffort;
50
- readonly description: "Validates the existance of accessed columns and rows of dataframes.";
50
+ readonly description: "Validates the existence of accessed columns and rows of dataframes.";
51
51
  readonly defaultConfig: {
52
52
  readonly readLoadedData: false;
53
53
  };
@@ -17,14 +17,18 @@ const linter_tags_1 = require("../linter-tags");
17
17
  exports.DATA_FRAME_ACCESS_VALIDATION = {
18
18
  createSearch: () => flowr_search_builder_1.Q.all().with(search_enrichers_1.Enrichment.CallTargets, { onlyBuiltin: true }),
19
19
  processSearchResult: (elements, config, data) => {
20
- const flowrConfig = (0, config_1.amendConfig)(data.config, flowrConfig => {
21
- if (config.readLoadedData !== undefined) {
22
- flowrConfig.abstractInterpretation.dataFrame.readLoadedData.readExternalFiles = config.readLoadedData;
23
- }
24
- return flowrConfig;
25
- });
26
- const cfg = (0, extract_cfg_1.extractCfg)(data.normalize, flowrConfig, data.dataflow.graph);
27
- (0, shape_inference_1.inferDataFrameShapes)(cfg, data.dataflow.graph, data.normalize, flowrConfig);
20
+ let ctx = data.analyzer.inspectContext();
21
+ ctx = {
22
+ ...ctx,
23
+ config: (0, config_1.amendConfig)(data.analyzer.flowrConfig, flowrConfig => {
24
+ if (config.readLoadedData !== undefined) {
25
+ flowrConfig.abstractInterpretation.dataFrame.readLoadedData.readExternalFiles = config.readLoadedData;
26
+ }
27
+ return flowrConfig;
28
+ })
29
+ };
30
+ const cfg = (0, extract_cfg_1.extractCfg)(data.normalize, ctx, data.dataflow.graph);
31
+ (0, shape_inference_1.inferDataFrameShapes)(cfg, data.dataflow.graph, data.normalize, ctx);
28
32
  const accessOperations = getAccessOperations(elements);
29
33
  const accesses = [];
30
34
  for (const [nodeId, operations] of accessOperations) {
@@ -81,7 +85,7 @@ exports.DATA_FRAME_ACCESS_VALIDATION = {
81
85
  tags: [linter_tags_1.LintingRuleTag.Bug, linter_tags_1.LintingRuleTag.Usability, linter_tags_1.LintingRuleTag.Reproducibility],
82
86
  // this rule is unable to detect all cases of dataframe access, but sufficiently ensures returned results are valid
83
87
  certainty: linter_format_1.LintingRuleCertainty.BestEffort,
84
- description: 'Validates the existance of accessed columns and rows of dataframes.',
88
+ description: 'Validates the existence of accessed columns and rows of dataframes.',
85
89
  defaultConfig: { readLoadedData: false }
86
90
  }
87
91
  };
@@ -22,7 +22,7 @@ export declare const DEAD_CODE: {
22
22
  normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
23
23
  dataflow: import("../../dataflow/info").DataflowInformation;
24
24
  cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
25
- config: import("../../config").FlowrConfigOptions;
25
+ analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
26
26
  }) => {
27
27
  results: {
28
28
  certainty: LintingResultCertainty.Certain;
@@ -3,11 +3,7 @@ import { LintingRuleTag } from '../linter-tags';
3
3
  import { type FunctionsMetadata, type FunctionsResult, type FunctionsToDetectConfig } from './function-finder-util';
4
4
  export declare const DEPRECATED_FUNCTIONS: {
5
5
  readonly createSearch: (config: FunctionsToDetectConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with", "filter"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
6
- readonly processSearchResult: <T extends import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: FunctionsToDetectConfig, _data: {
7
- normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
8
- dataflow: import("../../dataflow/info").DataflowInformation;
9
- config: import("../../config").FlowrConfigOptions;
10
- }, refineSearch?: (elements: T) => T) => {
6
+ readonly processSearchResult: <T extends import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: unknown, _data: unknown, refineSearch?: (elements: T) => T) => {
11
7
  results: {
12
8
  certainty: import("../linter-format").LintingResultCertainty;
13
9
  function: import("../../dataflow/environments/identifier").Identifier;