@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
@@ -5,9 +5,7 @@ exports.formatSideEffect = formatSideEffect;
5
5
  exports.printDfGraphForCode = printDfGraphForCode;
6
6
  exports.verifyExpectedSubgraph = verifyExpectedSubgraph;
7
7
  const dfg_1 = require("../../util/mermaid/dfg");
8
- const pipeline_executor_1 = require("../../core/pipeline-executor");
9
8
  const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
10
- const retriever_1 = require("../../r-bridge/retriever");
11
9
  const decorate_1 = require("../../r-bridge/lang-4.x/ast/model/processing/decorate");
12
10
  const resolve_graph_1 = require("../../dataflow/graph/resolve-graph");
13
11
  const diff_dataflow_graph_1 = require("../../dataflow/graph/diff-dataflow-graph");
@@ -15,9 +13,10 @@ const assert_1 = require("../../util/assert");
15
13
  const time_1 = require("../../util/text/time");
16
14
  const doc_files_1 = require("./doc-files");
17
15
  const doc_code_1 = require("./doc-code");
18
- const config_1 = require("../../config");
16
+ const flowr_analyzer_context_1 = require("../../project/context/flowr-analyzer-context");
19
17
  /**
20
- *
18
+ * Visualizes the dataflow graph as a mermaid graph inside a markdown code block.
19
+ * Please use this only for documentation purposes, for programmatic usage use {@link graphToMermaid} directly.
21
20
  */
22
21
  function printDfGraph(graph, mark, simplified = false) {
23
22
  return `
@@ -30,7 +29,7 @@ ${(0, doc_code_1.codeBlock)('mermaid', (0, dfg_1.graphToMermaid)({
30
29
  `;
31
30
  }
32
31
  /**
33
- *
32
+ * Visualizes a side effect for documentation purposes.
34
33
  */
35
34
  function formatSideEffect(ef) {
36
35
  if (typeof ef === 'object') {
@@ -41,13 +40,15 @@ function formatSideEffect(ef) {
41
40
  }
42
41
  }
43
42
  /**
44
- *
43
+ * Visualizes the dataflow graph of the given R code using the given parser.
44
+ * This function returns a markdown string containing the dataflow graph as a mermaid code block,
45
+ * along with the R code itself in a collapsible section.
45
46
  */
46
47
  async function printDfGraphForCode(parser, code, { simplified = false, mark, showCode = true, codeOpen = false, exposeResult, switchCodeAndGraph = false } = {}) {
47
48
  const now = performance.now();
48
49
  const result = await (0, default_pipelines_1.createDataflowPipeline)(parser, {
49
- request: (0, retriever_1.requestFromInput)(code)
50
- }, config_1.defaultConfigOptions).allRemainingSteps();
50
+ context: (0, flowr_analyzer_context_1.contextFromInput)(code)
51
+ }).allRemainingSteps();
51
52
  const duration = performance.now() - now;
52
53
  if (switchCodeAndGraph) {
53
54
  (0, assert_1.guard)(showCode, 'can not switch code and graph if code is not shown');
@@ -80,15 +81,15 @@ ${switchCodeAndGraph ? dfGraph : codeText}
80
81
  return exposeResult ? [resultText, result] : resultText;
81
82
  }
82
83
  /** returns resolved expected df graph */
83
- async function verifyExpectedSubgraph(shell, code, expectedSubgraph) {
84
+ async function verifyExpectedSubgraph(parser, code, expectedSubgraph) {
85
+ const context = (0, flowr_analyzer_context_1.contextFromInput)(code);
84
86
  /* we verify that we get what we want first! */
85
- const info = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_DATAFLOW_PIPELINE, {
86
- parser: shell,
87
- request: (0, retriever_1.requestFromInput)(code),
87
+ const info = await (0, default_pipelines_1.createDataflowPipeline)(parser, {
88
+ context: context,
88
89
  getId: (0, decorate_1.deterministicCountingIdGenerator)(0)
89
- }, config_1.defaultConfigOptions).allRemainingSteps();
90
+ }).allRemainingSteps();
90
91
  expectedSubgraph.setIdMap(info.normalize.idMap);
91
- expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph);
92
+ expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph, context);
92
93
  const report = (0, diff_dataflow_graph_1.diffOfDataflowGraphs)({ name: 'expected', graph: expectedSubgraph }, { name: 'got', graph: info.dataflow.graph }, {
93
94
  leftIsSubgraph: true
94
95
  });
@@ -4,3 +4,9 @@
4
4
  * @returns The escaped string
5
5
  */
6
6
  export declare function escapeHTML(str: string | undefined): string | undefined;
7
+ /**
8
+ * Escapes newline characters in a string (Supports Windows and Unix newlines).
9
+ * @param str - The string to escape
10
+ * @returns The escaped string
11
+ */
12
+ export declare function escapeNewline(str: string): string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.escapeHTML = escapeHTML;
4
+ exports.escapeNewline = escapeNewline;
4
5
  /**
5
6
  * Escapes HTML special characters in a string.
6
7
  * @param str - The string to escape
@@ -15,4 +16,14 @@ function escapeHTML(str) {
15
16
  "'": ''',
16
17
  }[tag] ?? tag));
17
18
  }
19
+ /**
20
+ * Escapes newline characters in a string (Supports Windows and Unix newlines).
21
+ * @param str - The string to escape
22
+ * @returns The escaped string
23
+ */
24
+ function escapeNewline(str) {
25
+ return str.replace(/([\n\r])/g, (match) => {
26
+ return match == '\n' ? '\\n' : '\\r';
27
+ });
28
+ }
18
29
  //# sourceMappingURL=doc-escape.js.map
@@ -1,8 +1,28 @@
1
1
  /**
2
- *
2
+ * Prefixes each line in the given string with the given prefix.
3
+ * @example
4
+ * ```ts
5
+ * const text = `Line 1
6
+ * Line 2
7
+ * Line 3`;
8
+ * const prefixed = prefixLines(text, '> ');
9
+ * console.log(prefixed);
10
+ * ```
11
+ * This will output:
12
+ * ```md
13
+ * > Line 1
14
+ * > Line 2
15
+ * > Line 3
16
+ * ```
3
17
  */
4
18
  export declare function prefixLines(line: string, prefix: string): string;
5
19
  /**
6
- *
20
+ * Joins the given elements using the given join string, but uses a different string for the last join.
21
+ * @example
22
+ * ```ts
23
+ * const items = ['apple', 'banana', 'cherry'];
24
+ * const result = lastJoin(items, ', ', ' and ');
25
+ * console.log(result); // Output: "apple, banana and cherry"
26
+ * ```
7
27
  */
8
28
  export declare function lastJoin(elements: readonly string[], join: string, lastjoin: string): string;
@@ -3,13 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prefixLines = prefixLines;
4
4
  exports.lastJoin = lastJoin;
5
5
  /**
6
- *
6
+ * Prefixes each line in the given string with the given prefix.
7
+ * @example
8
+ * ```ts
9
+ * const text = `Line 1
10
+ * Line 2
11
+ * Line 3`;
12
+ * const prefixed = prefixLines(text, '> ');
13
+ * console.log(prefixed);
14
+ * ```
15
+ * This will output:
16
+ * ```md
17
+ * > Line 1
18
+ * > Line 2
19
+ * > Line 3
20
+ * ```
7
21
  */
8
22
  function prefixLines(line, prefix) {
9
23
  return line.split('\n').map(l => `${prefix}${l}`).join('\n');
10
24
  }
11
25
  /**
12
- *
26
+ * Joins the given elements using the given join string, but uses a different string for the last join.
27
+ * @example
28
+ * ```ts
29
+ * const items = ['apple', 'banana', 'cherry'];
30
+ * const result = lastJoin(items, ', ', ' and ');
31
+ * console.log(result); // Output: "apple, banana and cherry"
32
+ * ```
13
33
  */
14
34
  function lastJoin(elements, join, lastjoin) {
15
35
  if (elements.length <= 1) {
@@ -1,18 +1,23 @@
1
1
  import type { DataflowGraph } from '../../dataflow/graph/graph';
2
2
  import type { RShell } from '../../r-bridge/shell';
3
- import { type RNodeWithParent } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
3
+ import { type ParentInformation, type RNodeWithParent } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
4
  import type { KnownParser } from '../../r-bridge/parser';
5
+ import type { RProject } from '../../r-bridge/lang-4.x/ast/model/nodes/r-project';
5
6
  /**
6
- *
7
+ * Visualizes the normalized AST using mermaid syntax.
8
+ * This is mainly intended for documentation purposes.
7
9
  */
8
- export declare function printNormalizedAst(ast: RNodeWithParent, prefix?: string): string;
10
+ export declare function printNormalizedAst(ast: RProject<ParentInformation> | RNodeWithParent, prefix?: string): string;
9
11
  export interface PrintNormalizedAstOptions {
10
12
  readonly showCode?: boolean;
11
13
  readonly prefix?: string;
12
14
  }
13
15
  /**
14
- *
16
+ * Generates and prints the normalized AST for the given code, along with optional metadata and the original code.
17
+ * This is intended for documentation purposes.
15
18
  */
16
19
  export declare function printNormalizedAstForCode(parser: KnownParser, code: string, { showCode, prefix }?: PrintNormalizedAstOptions): Promise<string>;
17
- /** returns resolved expected df graph */
20
+ /**
21
+ * returns resolved expected df graph
22
+ */
18
23
  export declare function verifyExpectedSubgraph(shell: RShell, code: string, expectedSubgraph: DataflowGraph): Promise<DataflowGraph>;
@@ -4,7 +4,6 @@ exports.printNormalizedAst = printNormalizedAst;
4
4
  exports.printNormalizedAstForCode = printNormalizedAstForCode;
5
5
  exports.verifyExpectedSubgraph = verifyExpectedSubgraph;
6
6
  const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
7
- const retriever_1 = require("../../r-bridge/retriever");
8
7
  const decorate_1 = require("../../r-bridge/lang-4.x/ast/model/processing/decorate");
9
8
  const resolve_graph_1 = require("../../dataflow/graph/resolve-graph");
10
9
  const diff_dataflow_graph_1 = require("../../dataflow/graph/diff-dataflow-graph");
@@ -12,9 +11,10 @@ const assert_1 = require("../../util/assert");
12
11
  const ast_1 = require("../../util/mermaid/ast");
13
12
  const time_1 = require("../../util/text/time");
14
13
  const doc_files_1 = require("./doc-files");
15
- const config_1 = require("../../config");
14
+ const flowr_analyzer_context_1 = require("../../project/context/flowr-analyzer-context");
16
15
  /**
17
- *
16
+ * Visualizes the normalized AST using mermaid syntax.
17
+ * This is mainly intended for documentation purposes.
18
18
  */
19
19
  function printNormalizedAst(ast, prefix = 'flowchart TD\n') {
20
20
  return `
@@ -24,13 +24,14 @@ ${(0, ast_1.normalizedAstToMermaid)(ast, prefix)}
24
24
  `;
25
25
  }
26
26
  /**
27
- *
27
+ * Generates and prints the normalized AST for the given code, along with optional metadata and the original code.
28
+ * This is intended for documentation purposes.
28
29
  */
29
30
  async function printNormalizedAstForCode(parser, code, { showCode = true, prefix = 'flowchart TD\n' } = {}) {
30
31
  const now = performance.now();
31
32
  const result = await (0, default_pipelines_1.createNormalizePipeline)(parser, {
32
- request: (0, retriever_1.requestFromInput)(code)
33
- }, config_1.defaultConfigOptions).allRemainingSteps();
33
+ context: (0, flowr_analyzer_context_1.contextFromInput)(code)
34
+ }).allRemainingSteps();
34
35
  const duration = performance.now() - now;
35
36
  const metaInfo = `The analysis required _${(0, time_1.printAsMs)(duration)}_ (including parsing with the [${parser.name}](${doc_files_1.FlowrWikiBaseRef}/Engines) engine) within the generation environment.`;
36
37
  return '\n\n' + printNormalizedAst(result.normalize.ast, prefix) + (showCode ? `
@@ -58,15 +59,18 @@ ${(0, ast_1.normalizedAstToMermaid)(result.normalize.ast, prefix)}
58
59
 
59
60
  ` : '\n(' + metaInfo + ')\n\n');
60
61
  }
61
- /** returns resolved expected df graph */
62
+ /**
63
+ * returns resolved expected df graph
64
+ */
62
65
  async function verifyExpectedSubgraph(shell, code, expectedSubgraph) {
63
66
  /* we verify that we get what we want first! */
67
+ const context = (0, flowr_analyzer_context_1.contextFromInput)(code);
64
68
  const info = await (0, default_pipelines_1.createDataflowPipeline)(shell, {
65
- request: (0, retriever_1.requestFromInput)(code),
69
+ context: context,
66
70
  getId: (0, decorate_1.deterministicCountingIdGenerator)(0)
67
- }, config_1.defaultConfigOptions).allRemainingSteps();
71
+ }).allRemainingSteps();
68
72
  expectedSubgraph.setIdMap(info.normalize.idMap);
69
- expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph);
73
+ expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph, context);
70
74
  const report = (0, diff_dataflow_graph_1.diffOfDataflowGraphs)({ name: 'expected', graph: expectedSubgraph }, { name: 'got', graph: info.dataflow.graph }, {
71
75
  leftIsSubgraph: true
72
76
  });
@@ -2,31 +2,39 @@ import type { RShell } from '../../r-bridge/shell';
2
2
  import type { Queries, SupportedQueryTypes } from '../../queries/query';
3
3
  import type { SupportedVirtualQueryTypes } from '../../queries/virtual-query/virtual-queries';
4
4
  import type { VirtualCompoundConstraint } from '../../queries/virtual-query/compound-query';
5
+ import type { SlicingCriteria } from '../../slicing/criterion/parse';
6
+ import type { GeneralDocContext } from '../wiki-mk/doc-context';
7
+ import type { KnownParser } from '../../r-bridge/parser';
5
8
  export interface ShowQueryOptions {
6
9
  readonly showCode?: boolean;
7
10
  readonly collapseResult?: boolean;
8
11
  readonly collapseQuery?: boolean;
12
+ readonly shorthand?: string;
9
13
  }
10
14
  /**
11
15
  * Visualizes a query and its results in markdown format.
12
16
  */
13
- export declare function showQuery<Base extends SupportedQueryTypes, VirtualArguments extends VirtualCompoundConstraint<Base> = VirtualCompoundConstraint<Base>>(shell: RShell, code: string, queries: Queries<Base, VirtualArguments>, { showCode, collapseResult, collapseQuery }?: ShowQueryOptions): Promise<string>;
17
+ export declare function showQuery<Base extends SupportedQueryTypes, VirtualArguments extends VirtualCompoundConstraint<Base> = VirtualCompoundConstraint<Base>>(parser: KnownParser, code: string, queries: Queries<Base, VirtualArguments>, { showCode, collapseResult, collapseQuery, shorthand }?: ShowQueryOptions): Promise<string>;
14
18
  export interface QueryDocumentation {
15
19
  readonly name: string;
16
20
  readonly type: 'virtual' | 'active';
17
21
  readonly shortDescription: string;
18
22
  readonly functionName: string;
19
23
  readonly functionFile: string;
20
- readonly buildExplanation: (shell: RShell) => Promise<string>;
24
+ readonly buildExplanation: (shell: RShell, ctx: GeneralDocContext) => Promise<string>;
21
25
  }
22
26
  export declare const RegisteredQueries: {
23
27
  active: Map<string, QueryDocumentation>;
24
28
  virtual: Map<string, QueryDocumentation>;
25
29
  };
26
30
  /**
27
- *
31
+ * Registers a new documentation for a query.
28
32
  */
29
33
  export declare function registerQueryDocumentation(query: SupportedQueryTypes | SupportedVirtualQueryTypes, doc: QueryDocumentation): void;
34
+ /**
35
+ * Creates a REPL shorthand for the given slicing criteria and R code.
36
+ */
37
+ export declare function sliceQueryShorthand(criteria: SlicingCriteria, code: string, forward?: boolean): string;
30
38
  /**
31
39
  *
32
40
  */
@@ -38,4 +46,4 @@ export declare function tocForQueryType(type: 'active' | 'virtual'): string;
38
46
  /**
39
47
  *
40
48
  */
41
- export declare function explainQueries(shell: RShell, type: 'active' | 'virtual'): Promise<string>;
49
+ export declare function explainQueries(shell: RShell, ctx: GeneralDocContext, type: 'active' | 'virtual'): Promise<string>;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RegisteredQueries = void 0;
4
4
  exports.showQuery = showQuery;
5
5
  exports.registerQueryDocumentation = registerQueryDocumentation;
6
+ exports.sliceQueryShorthand = sliceQueryShorthand;
6
7
  exports.linkToQueryOfName = linkToQueryOfName;
7
8
  exports.tocForQueryType = tocForQueryType;
8
9
  exports.explainQueries = explainQueries;
9
- const retriever_1 = require("../../r-bridge/retriever");
10
10
  const json_1 = require("../../util/json");
11
11
  const ansi_1 = require("../../util/text/ansi");
12
12
  const doc_files_1 = require("./doc-files");
@@ -19,9 +19,10 @@ const doc_cli_option_1 = require("./doc-cli-option");
19
19
  /**
20
20
  * Visualizes a query and its results in markdown format.
21
21
  */
22
- async function showQuery(shell, code, queries, { showCode, collapseResult, collapseQuery } = {}) {
22
+ async function showQuery(parser, code, queries, { showCode, collapseResult, collapseQuery, shorthand } = {}) {
23
23
  const now = performance.now();
24
- const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder((0, retriever_1.requestFromInput)(code)).setParser(shell).build();
24
+ const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder().setParser(parser).build();
25
+ analyzer.addRequest(code);
25
26
  const results = await analyzer.query(queries);
26
27
  const duration = performance.now() - now;
27
28
  const metaInfo = `
@@ -33,8 +34,8 @@ The analysis required _${(0, time_1.printAsMs)(duration)}_ (including parsing an
33
34
  ${(0, doc_code_1.codeBlock)('json', collapseQuery ? str.split('\n').join(' ').replace(/([{[])\s{2,}/g, '$1 ').replace(/\s{2,}([\]}])/g, ' $1') : str)}
34
35
 
35
36
  ${(function () {
36
- if (queries.length === 1 && Object.keys(queries[0]).length === 1) {
37
- return `(This query can be shortened to \`@${queries[0].type}\` when used within the REPL command ${(0, doc_cli_option_1.getReplCommand)('query')}).`;
37
+ if ((queries.length === 1 && Object.keys(queries[0]).length === 1) || shorthand) {
38
+ return `(This query can be shortened to \`@${queries[0].type}${shorthand ? ' ' + shorthand : ''}\` when used within the REPL command ${(0, doc_cli_option_1.getReplCommand)('query')}).`;
38
39
  }
39
40
  else {
40
41
  return '';
@@ -61,7 +62,7 @@ ${(0, doc_code_1.jsonWithLimit)(results)}
61
62
  ${showCode ? `
62
63
  <details> <summary style="color:gray">Original Code</summary>
63
64
 
64
- ${await (0, doc_dfg_1.printDfGraphForCode)(shell, code, { switchCodeAndGraph: true })}
65
+ ${await (0, doc_dfg_1.printDfGraphForCode)(parser, code, { switchCodeAndGraph: true })}
65
66
 
66
67
  </details>
67
68
  ` : ''}
@@ -75,7 +76,7 @@ exports.RegisteredQueries = {
75
76
  'virtual': new Map()
76
77
  };
77
78
  /**
78
- *
79
+ * Registers a new documentation for a query.
79
80
  */
80
81
  function registerQueryDocumentation(query, doc) {
81
82
  const map = exports.RegisteredQueries[doc.type];
@@ -84,6 +85,12 @@ function registerQueryDocumentation(query, doc) {
84
85
  }
85
86
  map.set(query, doc);
86
87
  }
88
+ /**
89
+ * Creates a REPL shorthand for the given slicing criteria and R code.
90
+ */
91
+ function sliceQueryShorthand(criteria, code, forward) {
92
+ return `(${(criteria.join(';'))})${forward ? 'f' : ''} "${code}"`;
93
+ }
87
94
  function linkify(name) {
88
95
  return name.toLowerCase().replace(/ /g, '-');
89
96
  }
@@ -108,11 +115,11 @@ function tocForQueryType(type) {
108
115
  }
109
116
  return result.join('\n');
110
117
  }
111
- async function explainQuery(shell, { name, functionName, functionFile, buildExplanation }) {
118
+ async function explainQuery(shell, ctx, { name, functionName, functionFile, buildExplanation }) {
112
119
  return `
113
120
  ### ${name}
114
121
 
115
- ${await buildExplanation(shell)}
122
+ ${await buildExplanation(shell, ctx)}
116
123
 
117
124
  <details>
118
125
 
@@ -127,11 +134,11 @@ Responsible for the execution of the ${name} query is \`${functionName}\` in ${(
127
134
  /**
128
135
  *
129
136
  */
130
- async function explainQueries(shell, type) {
137
+ async function explainQueries(shell, ctx, type) {
131
138
  const queries = [...exports.RegisteredQueries[type].entries()].sort(([, { name: a }], [, { name: b }]) => a.localeCompare(b));
132
139
  const result = [];
133
140
  for (const [, doc] of queries) {
134
- result.push(await explainQuery(shell, doc));
141
+ result.push(await explainQuery(shell, ctx, doc));
135
142
  }
136
143
  return result.join(`\n${'-'.repeat(5)}\n\n`);
137
144
  }
@@ -1,6 +1,4 @@
1
1
  import type { RShell } from '../../r-bridge/shell';
2
- import type { SupportedQueryTypes } from '../../queries/query';
3
- import type { SupportedVirtualQueryTypes } from '../../queries/virtual-query/virtual-queries';
4
2
  import type { FlowrSearchLike } from '../../search/flowr-search-builder';
5
3
  export interface ShowSearchOptions {
6
4
  readonly showCode?: boolean;
@@ -10,31 +8,3 @@ export interface ShowSearchOptions {
10
8
  * Visualizes a search and its results in markdown format.
11
9
  */
12
10
  export declare function showSearch(shell: RShell, code: string, search: FlowrSearchLike, { collapseResult }?: ShowSearchOptions): Promise<string>;
13
- export interface QueryDocumentation {
14
- readonly name: string;
15
- readonly type: 'virtual' | 'active';
16
- readonly shortDescription: string;
17
- readonly functionName: string;
18
- readonly functionFile: string;
19
- readonly buildExplanation: (shell: RShell) => Promise<string>;
20
- }
21
- export declare const RegisteredQueries: {
22
- active: Map<string, QueryDocumentation>;
23
- virtual: Map<string, QueryDocumentation>;
24
- };
25
- /**
26
- *
27
- */
28
- export declare function registerQueryDocumentation(query: SupportedQueryTypes | SupportedVirtualQueryTypes, doc: QueryDocumentation): void;
29
- /**
30
- *
31
- */
32
- export declare function linkToQueryOfName(id: SupportedQueryTypes | SupportedVirtualQueryTypes): string;
33
- /**
34
- *
35
- */
36
- export declare function tocForQueryType(type: 'active' | 'virtual'): string;
37
- /**
38
- *
39
- */
40
- export declare function explainQueries(shell: RShell, type: 'active' | 'virtual'): Promise<string>;
@@ -1,13 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RegisteredQueries = void 0;
4
3
  exports.showSearch = showSearch;
5
- exports.registerQueryDocumentation = registerQueryDocumentation;
6
- exports.linkToQueryOfName = linkToQueryOfName;
7
- exports.tocForQueryType = tocForQueryType;
8
- exports.explainQueries = explainQueries;
9
- const retriever_1 = require("../../r-bridge/retriever");
10
- const doc_files_1 = require("./doc-files");
11
4
  const doc_dfg_1 = require("./doc-dfg");
12
5
  const doc_code_1 = require("./doc-code");
13
6
  const time_1 = require("../../util/text/time");
@@ -20,9 +13,10 @@ const flowr_analyzer_builder_1 = require("../../project/flowr-analyzer-builder")
20
13
  */
21
14
  async function showSearch(shell, code, search, { collapseResult = true } = {}) {
22
15
  const now = performance.now();
23
- const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder((0, retriever_1.requestFromInput)(code))
16
+ const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder()
24
17
  .setParser(shell)
25
18
  .build();
19
+ analyzer.addRequest(code);
26
20
  const result = await analyzer.runSearch(search);
27
21
  const duration = performance.now() - now;
28
22
  const metaInfo = `
@@ -66,69 +60,4 @@ ${collapseResult ? '</details>' : ''}
66
60
 
67
61
  `;
68
62
  }
69
- exports.RegisteredQueries = {
70
- 'active': new Map(),
71
- 'virtual': new Map()
72
- };
73
- /**
74
- *
75
- */
76
- function registerQueryDocumentation(query, doc) {
77
- const map = exports.RegisteredQueries[doc.type];
78
- if (map.has(query)) {
79
- throw new Error(`Query ${query} already registered`);
80
- }
81
- map.set(query, doc);
82
- }
83
- function linkify(name) {
84
- return name.toLowerCase().replace(/ /g, '-');
85
- }
86
- /**
87
- *
88
- */
89
- function linkToQueryOfName(id) {
90
- const query = exports.RegisteredQueries.active.get(id) ?? exports.RegisteredQueries.virtual.get(id);
91
- if (!query) {
92
- throw new Error(`Query ${id} not found`);
93
- }
94
- return `[${query.name}](#${linkify(query.name)})`;
95
- }
96
- /**
97
- *
98
- */
99
- function tocForQueryType(type) {
100
- const queries = [...exports.RegisteredQueries[type].entries()].sort(([, { name: a }], [, { name: b }]) => a.localeCompare(b));
101
- const result = [];
102
- for (const [id, { name, shortDescription }] of queries) {
103
- result.push(`1. [${name}](#${linkify(name)}) (\`${id}\`):\\\n ${shortDescription}`);
104
- }
105
- return result.join('\n');
106
- }
107
- async function explainQuery(shell, { name, functionName, functionFile, buildExplanation }) {
108
- return `
109
- ### ${name}
110
-
111
- ${await buildExplanation(shell)}
112
-
113
- <details>
114
-
115
- <summary style="color:gray">Implementation Details</summary>
116
-
117
- Responsible for the execution of the ${name} query is \`${functionName}\` in ${(0, doc_files_1.getFilePathMd)(functionFile)}.
118
-
119
- </details>
120
-
121
- `;
122
- }
123
- /**
124
- *
125
- */
126
- async function explainQueries(shell, type) {
127
- const queries = [...exports.RegisteredQueries[type].entries()].sort(([, { name: a }], [, { name: b }]) => a.localeCompare(b));
128
- const result = [];
129
- for (const [, doc] of queries) {
130
- result.push(await explainQuery(shell, doc));
131
- }
132
- return result.join(`\n${'-'.repeat(5)}\n\n`);
133
- }
134
63
  //# sourceMappingURL=doc-search.js.map
@@ -1,6 +1,6 @@
1
- import type { RShell } from '../../r-bridge/shell';
2
1
  import type { FlowrMessage, IdMessageBase, MessageDefinition } from '../../cli/repl/server/messages/all-messages';
3
2
  import { type FakeServer, type FakeSocket } from '../../../test/functionality/_helper/net';
3
+ import type { KnownParser } from '../../r-bridge/parser';
4
4
  export interface ServerMessageDescription {
5
5
  readonly title: string;
6
6
  readonly type: 'request' | 'response';
@@ -10,7 +10,7 @@ export interface ServerMessageDescription {
10
10
  readonly defRequest?: MessageDefinition<IdMessageBase>;
11
11
  readonly defResponse?: MessageDefinition<IdMessageBase>;
12
12
  readonly additionalDefs?: MessageDefinition<IdMessageBase>[];
13
- readonly text: (shell: RShell) => Promise<string>;
13
+ readonly text: (shell: KnownParser) => Promise<string>;
14
14
  }
15
15
  /**
16
16
  * Documents a server message for later printing.
@@ -19,11 +19,11 @@ export declare function documentServerMessage(description: ServerMessageDescript
19
19
  /**
20
20
  * Visualizes all documented server messages in markdown format.
21
21
  */
22
- export declare function printServerMessages(shell: RShell): Promise<string>;
22
+ export declare function printServerMessages(treeSitter: KnownParser): Promise<string>;
23
23
  /**
24
24
  * Executes the given function within a server context.
25
25
  */
26
- export declare function inServerContext<T>(shell: RShell, fn: (socket: FakeSocket, server: FakeServer) => Promise<T> | T): Promise<T>;
26
+ export declare function inServerContext<T>(shell: KnownParser, fn: (socket: FakeSocket, server: FakeServer) => Promise<T> | T): Promise<T>;
27
27
  interface ResponseMessageInPingPong {
28
28
  readonly type: 'response';
29
29
  readonly expectedType: FlowrMessage['type'];
@@ -37,7 +37,7 @@ interface RequestMessageInPingPong {
37
37
  readonly mark?: boolean;
38
38
  }
39
39
  export interface MessagePingPongDocumentationArguments {
40
- readonly shell: RShell;
40
+ readonly shell: KnownParser;
41
41
  readonly title?: string;
42
42
  readonly messageType?: FlowrMessage['type'];
43
43
  readonly messages: readonly (ResponseMessageInPingPong | RequestMessageInPingPong)[];
@@ -21,10 +21,10 @@ function documentServerMessage(description) {
21
21
  /**
22
22
  * Visualizes all documented server messages in markdown format.
23
23
  */
24
- async function printServerMessages(shell) {
24
+ async function printServerMessages(treeSitter) {
25
25
  let text = '<ul>';
26
26
  for (const message of messages) {
27
- text += '<li>' + await printServerMessage(message, shell) + '</li>\n\n';
27
+ text += '<li>' + await printServerMessage(message, treeSitter) + '</li>\n\n';
28
28
  }
29
29
  return text + '</ul>';
30
30
  }
@@ -128,7 +128,7 @@ ${(0, schema_1.describeSchema)(def.schema, ansi_1.markdownFormatter)}
128
128
  </details>
129
129
  ` : '';
130
130
  }
131
- async function printServerMessage({ mermaidSequenceDiagram, text, title, shortDescription, definitionPath, defRequest, defResponse, additionalDefs }, shell) {
131
+ async function printServerMessage({ mermaidSequenceDiagram, text, title, shortDescription, definitionPath, defRequest, defResponse, additionalDefs }, treeSitter) {
132
132
  const base = defRequest ?? defResponse;
133
133
  (0, assert_1.guard)(base !== undefined, 'At least one of the definitions must be given');
134
134
  return `
@@ -147,7 +147,7 @@ sequenceDiagram
147
147
  ${mermaidSequenceDiagram}
148
148
  \`\`\`
149
149
 
150
- ${await text(shell)}
150
+ ${await text(treeSitter)}
151
151
 
152
152
  <hr>
153
153