@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
@@ -4,6 +4,8 @@ exports.FlowrAnalyzer = void 0;
4
4
  const query_1 = require("../queries/query");
5
5
  const flowr_search_executor_1 = require("../search/flowr-search-executor");
6
6
  const cfg_kind_1 = require("./cfg-kind");
7
+ const retriever_1 = require("../r-bridge/retriever");
8
+ const files_1 = require("../util/files");
7
9
  /**
8
10
  * Central class for conducting analyses with FlowR.
9
11
  * Use the {@link FlowrAnalyzerBuilder} to create a new instance.
@@ -11,9 +13,9 @@ const cfg_kind_1 = require("./cfg-kind");
11
13
  * If you want the original pattern of creating a pipeline and running all steps, you can still do this with {@link FlowrAnalyzer#runFull}.
12
14
  *
13
15
  * To inspect the context of the analyzer, use {@link FlowrAnalyzer#inspectContext} (if you are a plugin and need to modify it, use {@link FlowrAnalyzer#context} instead).
16
+ * @see https://github.com/flowr-analysis/flowr/wiki/Analyzer
14
17
  */
15
18
  class FlowrAnalyzer {
16
- flowrConfig;
17
19
  /** The parser and engine backend */
18
20
  parser;
19
21
  /** The cache used for storing analysis results */
@@ -23,17 +25,18 @@ class FlowrAnalyzer {
23
25
  /**
24
26
  * Create a new analyzer instance.
25
27
  * **Prefer the use of the {@link FlowrAnalyzerBuilder} instead of calling this constructor directly.**
26
- * @param config - The FlowR config to use for the analyses
27
28
  * @param parser - The parser to use for parsing the given request.
28
29
  * @param ctx - The context to use for the analyses.
29
30
  * @param cache - The caching layer to use for storing analysis results.
30
31
  */
31
- constructor(config, parser, ctx, cache) {
32
- this.flowrConfig = config;
32
+ constructor(parser, ctx, cache) {
33
33
  this.parser = parser;
34
34
  this.ctx = ctx;
35
35
  this.cache = cache;
36
36
  }
37
+ get flowrConfig() {
38
+ return this.ctx.config;
39
+ }
37
40
  context() {
38
41
  return this.ctx;
39
42
  }
@@ -48,21 +51,60 @@ class FlowrAnalyzer {
48
51
  this.ctx.reset();
49
52
  this.cache.reset();
50
53
  }
51
- addRequests(requests) {
52
- this.ctx.addRequests(requests);
54
+ addRequest(...request) {
55
+ for (const r of request) {
56
+ if (typeof r === 'string') {
57
+ const trimmed = r.substring(retriever_1.fileProtocol.length);
58
+ if (r.startsWith(retriever_1.fileProtocol) && !(0, files_1.isFilePath)(trimmed)) {
59
+ this.addAnalysisRequest({ request: 'project', content: trimmed });
60
+ }
61
+ else {
62
+ this.addRequestFromInput(r);
63
+ }
64
+ }
65
+ else {
66
+ this.addAnalysisRequest(r);
67
+ }
68
+ }
69
+ return this;
70
+ }
71
+ addFile(...f) {
72
+ this.ctx.addFiles(f);
73
+ return this;
53
74
  }
54
- addRequest(request) {
55
- this.ctx.addRequest(request);
75
+ /**
76
+ * Add a request created from the given input.
77
+ * This is a convenience method that uses {@link requestFromInput} internally.
78
+ */
79
+ addRequestFromInput(input) {
80
+ this.addAnalysisRequest((0, retriever_1.requestFromInput)(input));
81
+ return this;
82
+ }
83
+ /**
84
+ * Add one or multiple requests to analyze the builder.
85
+ */
86
+ addAnalysisRequest(request) {
87
+ this.ctx.addRequests((Array.isArray(request) ? request : [request]));
88
+ return this;
56
89
  }
57
90
  async parse(force) {
58
91
  return this.cache.parse(force);
59
92
  }
93
+ peekParse() {
94
+ return this.cache.peekParse();
95
+ }
60
96
  async normalize(force) {
61
97
  return this.cache.normalize(force);
62
98
  }
99
+ peekNormalize() {
100
+ return this.cache.peekNormalize();
101
+ }
63
102
  async dataflow(force) {
64
103
  return this.cache.dataflow(force);
65
104
  }
105
+ peekDataflow() {
106
+ return this.cache.peekDataflow();
107
+ }
66
108
  async runFull(force) {
67
109
  await this.dataflow(force);
68
110
  return;
@@ -70,6 +112,9 @@ class FlowrAnalyzer {
70
112
  async controlflow(simplifications, kind, force) {
71
113
  return this.cache.controlflow(force, kind ?? cfg_kind_1.CfgKind.NoDataflow, simplifications);
72
114
  }
115
+ peekControlflow(simplifications, kind) {
116
+ return this.cache.peekControlflow(kind ?? cfg_kind_1.CfgKind.NoDataflow, simplifications);
117
+ }
73
118
  async query(query) {
74
119
  return (0, query_1.executeQueries)({ analyzer: this }, query);
75
120
  }
@@ -12,6 +12,12 @@ export declare class FlowrAnalyzerDescriptionFilePlugin extends FlowrAnalyzerFil
12
12
  readonly name = "flowr-analyzer-description-file-plugin";
13
13
  readonly description = "This plugin provides support for DESCRIPTION files and extracts their content into key-value(s) pairs.";
14
14
  readonly version: SemVer;
15
+ private readonly pattern;
16
+ /**
17
+ * Creates a new instance of the DESCRIPTION file plugin.
18
+ * @param filePattern - The pattern to identify DESCRIPTION files, see {@link DescriptionFilePattern} for the default pattern.
19
+ */
20
+ constructor(filePattern?: RegExp);
15
21
  applies(file: PathLike): boolean;
16
- process(_ctx: FlowrAnalyzerContext, file: FlowrFileProvider<string>): FlowrDescriptionFile;
22
+ process(_ctx: FlowrAnalyzerContext, file: FlowrFileProvider): FlowrDescriptionFile;
17
23
  }
@@ -6,7 +6,9 @@ const semver_1 = require("semver");
6
6
  const log_1 = require("../../../util/log");
7
7
  const flowr_description_file_1 = require("./flowr-description-file");
8
8
  const flowr_file_1 = require("../../context/flowr-file");
9
+ const built_in_source_1 = require("../../../dataflow/internal/process/functions/call/built-in/built-in-source");
9
10
  exports.descriptionFileLog = log_1.log.getSubLogger({ name: 'flowr-analyzer-loading-order-description-file-plugin' });
11
+ const DescriptionFilePattern = /^(DESCRIPTION|DESCRIPTION\.txt)$/i;
10
12
  /**
11
13
  * This plugin provides support for R `DESCRIPTION` files.
12
14
  */
@@ -14,14 +16,20 @@ class FlowrAnalyzerDescriptionFilePlugin extends flowr_analyzer_file_plugin_1.Fl
14
16
  name = 'flowr-analyzer-description-file-plugin';
15
17
  description = 'This plugin provides support for DESCRIPTION files and extracts their content into key-value(s) pairs.';
16
18
  version = new semver_1.SemVer('0.1.0');
19
+ pattern;
20
+ /**
21
+ * Creates a new instance of the DESCRIPTION file plugin.
22
+ * @param filePattern - The pattern to identify DESCRIPTION files, see {@link DescriptionFilePattern} for the default pattern.
23
+ */
24
+ constructor(filePattern = DescriptionFilePattern) {
25
+ super();
26
+ this.pattern = filePattern;
27
+ }
17
28
  applies(file) {
18
- return /^(DESCRIPTION|DESCRIPTION\.txt)$/i.test(file.toString().split(/[/\\]/).pop() ?? '');
29
+ return this.pattern.test((0, built_in_source_1.platformBasename)(file.toString()));
19
30
  }
20
31
  process(_ctx, file) {
21
- const f = flowr_description_file_1.FlowrDescriptionFile.from(file, flowr_file_1.SpecialFileRole.Description);
22
- // already load it here
23
- f.content();
24
- return f;
32
+ return flowr_description_file_1.FlowrDescriptionFile.from(file, flowr_file_1.FileRole.Description);
25
33
  }
26
34
  }
27
35
  exports.FlowrAnalyzerDescriptionFilePlugin = FlowrAnalyzerDescriptionFilePlugin;
@@ -4,14 +4,14 @@ import type { FlowrFileProvider } from '../../context/flowr-file';
4
4
  /**
5
5
  * This is the base class for all plugins that load and possibly transform files when they are loaded.
6
6
  * Different from other plugins, these plugins trigger for each file that is loaded (if they {@link applies} to the file).
7
- * See the {@link FlowrAnalyzerFilesContext.addFile} for more information on how files are loaded and managed.
7
+ * See the {@link FlowrAnalyzer.addFile} for more information on how files are loaded and managed.
8
8
  *
9
- * It is upt to the construction to ensure that no two file plugins {@link applies} to the same file, otherwise, the loading order
9
+ * It is up to the construction to ensure that no two file plugins {@link applies} to the same file, otherwise, the loading order
10
10
  * of these plugins will determine which plugin gets to process the file.
11
11
  *
12
12
  * See {@link DefaultFlowrAnalyzerFilePlugin} for the no-op default implementation.
13
13
  */
14
- export declare abstract class FlowrAnalyzerFilePlugin extends FlowrAnalyzerPlugin<FlowrFileProvider<string>, FlowrFileProvider> {
14
+ export declare abstract class FlowrAnalyzerFilePlugin extends FlowrAnalyzerPlugin<FlowrFileProvider, FlowrFileProvider> {
15
15
  readonly type = PluginType.FileLoad;
16
16
  /**
17
17
  * Determine whether this plugin applies to the given file.
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FlowrAnalyzerFilePlugin = void 0;
4
4
  const flowr_analyzer_plugin_1 = require("../flowr-analyzer-plugin");
5
+ const flowr_file_1 = require("../../context/flowr-file");
5
6
  const semver_1 = require("semver");
6
7
  /**
7
8
  * This is the base class for all plugins that load and possibly transform files when they are loaded.
8
9
  * Different from other plugins, these plugins trigger for each file that is loaded (if they {@link applies} to the file).
9
- * See the {@link FlowrAnalyzerFilesContext.addFile} for more information on how files are loaded and managed.
10
+ * See the {@link FlowrAnalyzer.addFile} for more information on how files are loaded and managed.
10
11
  *
11
- * It is upt to the construction to ensure that no two file plugins {@link applies} to the same file, otherwise, the loading order
12
+ * It is up to the construction to ensure that no two file plugins {@link applies} to the same file, otherwise, the loading order
12
13
  * of these plugins will determine which plugin gets to process the file.
13
14
  *
14
15
  * See {@link DefaultFlowrAnalyzerFilePlugin} for the no-op default implementation.
@@ -22,13 +23,18 @@ class FlowrAnalyzerFilePlugin extends flowr_analyzer_plugin_1.FlowrAnalyzerPlugi
22
23
  exports.FlowrAnalyzerFilePlugin = FlowrAnalyzerFilePlugin;
23
24
  class DefaultFlowrAnalyzerFilePlugin extends FlowrAnalyzerFilePlugin {
24
25
  name = 'default-file-plugin';
25
- description = 'This is the default file plugin that does nothing.';
26
+ description = 'This is the default file plugin that does nothing (but assigning default .r/.R files).';
26
27
  version = new semver_1.SemVer('0.0.0');
27
28
  applies() {
28
29
  return true;
29
30
  }
30
- process(_context, args) {
31
- return args;
31
+ process(_ctx, arg) {
32
+ const path = arg.path().toString();
33
+ if (/\.r$/i.test(path)) {
34
+ // we just assign the role :D
35
+ arg.assignRole(flowr_file_1.FileRole.Source);
36
+ }
37
+ return arg;
32
38
  }
33
39
  }
34
40
  //# sourceMappingURL=flowr-analyzer-file-plugin.js.map
@@ -1,4 +1,4 @@
1
- import { type FlowrFileProvider, type SpecialFileRole, FlowrFile } from '../../context/flowr-file';
1
+ import { type FlowrFileProvider, type FileRole, FlowrFile } from '../../context/flowr-file';
2
2
  export type DCF = Map<string, string[]>;
3
3
  /**
4
4
  * This decorates a text file and provides access to its content as a DCF (Debian Control File)-like structure.
@@ -9,7 +9,7 @@ export declare class FlowrDescriptionFile extends FlowrFile<DCF> {
9
9
  * Prefer the static {@link FlowrDescriptionFile.from} method to create instances of this class as it will not re-create if already a description file
10
10
  * and handle role assignments.
11
11
  */
12
- constructor(file: FlowrFileProvider<string>);
12
+ constructor(file: FlowrFileProvider);
13
13
  /**
14
14
  * Loads and parses the content of the wrapped file as a DCF structure.
15
15
  * @see {@link parseDCF} for details on the parsing logic.
@@ -18,5 +18,5 @@ export declare class FlowrDescriptionFile extends FlowrFile<DCF> {
18
18
  /**
19
19
  * Description file lifter, this does not re-create if already a description file
20
20
  */
21
- static from(file: FlowrFileProvider<string> | FlowrDescriptionFile, role?: SpecialFileRole): FlowrDescriptionFile;
21
+ static from(file: FlowrFileProvider | FlowrDescriptionFile, role?: FileRole): FlowrDescriptionFile;
22
22
  }
@@ -0,0 +1,22 @@
1
+ import type { PathLike } from 'fs';
2
+ import { SemVer } from 'semver';
3
+ import type { FlowrAnalyzerContext } from '../../../context/flowr-analyzer-context';
4
+ import type { FlowrFileProvider } from '../../../context/flowr-file';
5
+ import { FlowrAnalyzerFilePlugin } from '../flowr-analyzer-file-plugin';
6
+ import { FlowrJupyterFile } from './flowr-jupyter-file';
7
+ /**
8
+ * The plugin provides support for Jupyter (`.ipynb`) files
9
+ */
10
+ export declare class FlowrAnalyzerJupyterFilePlugin extends FlowrAnalyzerFilePlugin {
11
+ readonly name = "ipynb-file-plugin";
12
+ readonly description = "Parses Jupyter files";
13
+ readonly version: SemVer;
14
+ private readonly pattern;
15
+ /**
16
+ * Creates a new instance of the Jupyter file plugin.
17
+ * @param filePattern - The pattern to identify Jupyter files, see {@link IpynbPattern} for the default pattern.
18
+ */
19
+ constructor(filePattern?: RegExp);
20
+ applies(file: PathLike): boolean;
21
+ protected process(_ctx: FlowrAnalyzerContext, arg: FlowrFileProvider<string>): FlowrJupyterFile;
22
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowrAnalyzerJupyterFilePlugin = void 0;
4
+ const semver_1 = require("semver");
5
+ const flowr_analyzer_file_plugin_1 = require("../flowr-analyzer-file-plugin");
6
+ const built_in_source_1 = require("../../../../dataflow/internal/process/functions/call/built-in/built-in-source");
7
+ const flowr_jupyter_file_1 = require("./flowr-jupyter-file");
8
+ const IpynbPattern = /\.ipynb$/i;
9
+ /**
10
+ * The plugin provides support for Jupyter (`.ipynb`) files
11
+ */
12
+ class FlowrAnalyzerJupyterFilePlugin extends flowr_analyzer_file_plugin_1.FlowrAnalyzerFilePlugin {
13
+ name = 'ipynb-file-plugin';
14
+ description = 'Parses Jupyter files';
15
+ version = new semver_1.SemVer('0.1.0');
16
+ pattern;
17
+ /**
18
+ * Creates a new instance of the Jupyter file plugin.
19
+ * @param filePattern - The pattern to identify Jupyter files, see {@link IpynbPattern} for the default pattern.
20
+ */
21
+ constructor(filePattern = IpynbPattern) {
22
+ super();
23
+ this.pattern = filePattern;
24
+ }
25
+ applies(file) {
26
+ return this.pattern.test((0, built_in_source_1.platformBasename)(file.toString()));
27
+ }
28
+ process(_ctx, arg) {
29
+ return flowr_jupyter_file_1.FlowrJupyterFile.from(arg);
30
+ }
31
+ }
32
+ exports.FlowrAnalyzerJupyterFilePlugin = FlowrAnalyzerJupyterFilePlugin;
33
+ //# sourceMappingURL=flowr-analyzer-jupyter-file-plugin.js.map
@@ -0,0 +1,22 @@
1
+ import type { PathLike } from 'fs';
2
+ import { SemVer } from 'semver';
3
+ import type { FlowrAnalyzerContext } from '../../../context/flowr-analyzer-context';
4
+ import type { FlowrFileProvider } from '../../../context/flowr-file';
5
+ import { FlowrAnalyzerFilePlugin } from '../flowr-analyzer-file-plugin';
6
+ import { FlowrRMarkdownFile } from './flowr-rmarkdown-file';
7
+ /**
8
+ * The plugin provides support for Quarto R Markdown (`.qmd`) files
9
+ */
10
+ export declare class FlowrAnalyzerQmdFilePlugin extends FlowrAnalyzerFilePlugin {
11
+ readonly name = "qmd-file-plugin";
12
+ readonly description = "Parses Quarto R Markdown files";
13
+ readonly version: SemVer;
14
+ private readonly pattern;
15
+ /**
16
+ * Creates a new instance of the Quarto R Markdown file plugin.
17
+ * @param filePattern - The pattern to identify Quarto R Markdown files, see {@link QmdPattern} for the default pattern.
18
+ */
19
+ constructor(filePattern?: RegExp);
20
+ applies(file: PathLike): boolean;
21
+ protected process(_ctx: FlowrAnalyzerContext, arg: FlowrFileProvider<string>): FlowrRMarkdownFile;
22
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowrAnalyzerQmdFilePlugin = void 0;
4
+ const semver_1 = require("semver");
5
+ const flowr_analyzer_file_plugin_1 = require("../flowr-analyzer-file-plugin");
6
+ const flowr_rmarkdown_file_1 = require("./flowr-rmarkdown-file");
7
+ const built_in_source_1 = require("../../../../dataflow/internal/process/functions/call/built-in/built-in-source");
8
+ const QmdPattern = /\.qmd$/i;
9
+ /**
10
+ * The plugin provides support for Quarto R Markdown (`.qmd`) files
11
+ */
12
+ class FlowrAnalyzerQmdFilePlugin extends flowr_analyzer_file_plugin_1.FlowrAnalyzerFilePlugin {
13
+ name = 'qmd-file-plugin';
14
+ description = 'Parses Quarto R Markdown files';
15
+ version = new semver_1.SemVer('0.1.0');
16
+ pattern;
17
+ /**
18
+ * Creates a new instance of the Quarto R Markdown file plugin.
19
+ * @param filePattern - The pattern to identify Quarto R Markdown files, see {@link QmdPattern} for the default pattern.
20
+ */
21
+ constructor(filePattern = QmdPattern) {
22
+ super();
23
+ this.pattern = filePattern;
24
+ }
25
+ applies(file) {
26
+ return this.pattern.test((0, built_in_source_1.platformBasename)(file.toString()));
27
+ }
28
+ process(_ctx, arg) {
29
+ return flowr_rmarkdown_file_1.FlowrRMarkdownFile.from(arg);
30
+ }
31
+ }
32
+ exports.FlowrAnalyzerQmdFilePlugin = FlowrAnalyzerQmdFilePlugin;
33
+ //# sourceMappingURL=flowr-analyzer-qmd-file-plugin.js.map
@@ -0,0 +1,22 @@
1
+ import type { PathLike } from 'fs';
2
+ import { SemVer } from 'semver';
3
+ import type { FlowrAnalyzerContext } from '../../../context/flowr-analyzer-context';
4
+ import { type FlowrFileProvider } from '../../../context/flowr-file';
5
+ import { FlowrAnalyzerFilePlugin } from '../flowr-analyzer-file-plugin';
6
+ import { FlowrRMarkdownFile } from './flowr-rmarkdown-file';
7
+ /**
8
+ * The plugin provides support for R Markdown (`.rmd`) files
9
+ */
10
+ export declare class FlowrAnalyzerRmdFilePlugin extends FlowrAnalyzerFilePlugin {
11
+ readonly name = "rmd-file-plugin";
12
+ readonly description = "Parses R Markdown files";
13
+ readonly version: SemVer;
14
+ private readonly pattern;
15
+ /**
16
+ * Creates a new instance of the R Markdown file plugin.
17
+ * @param filePattern - The pattern to identify R Markdown files, see {@link RmdPattern} for the default pattern.
18
+ */
19
+ constructor(filePattern?: RegExp);
20
+ applies(file: PathLike): boolean;
21
+ protected process(_ctx: FlowrAnalyzerContext, arg: FlowrFileProvider<string>): FlowrRMarkdownFile;
22
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowrAnalyzerRmdFilePlugin = void 0;
4
+ const semver_1 = require("semver");
5
+ const flowr_analyzer_file_plugin_1 = require("../flowr-analyzer-file-plugin");
6
+ const flowr_rmarkdown_file_1 = require("./flowr-rmarkdown-file");
7
+ const built_in_source_1 = require("../../../../dataflow/internal/process/functions/call/built-in/built-in-source");
8
+ const RmdPattern = /\.rmd$/i;
9
+ /**
10
+ * The plugin provides support for R Markdown (`.rmd`) files
11
+ */
12
+ class FlowrAnalyzerRmdFilePlugin extends flowr_analyzer_file_plugin_1.FlowrAnalyzerFilePlugin {
13
+ name = 'rmd-file-plugin';
14
+ description = 'Parses R Markdown files';
15
+ version = new semver_1.SemVer('0.1.0');
16
+ pattern;
17
+ /**
18
+ * Creates a new instance of the R Markdown file plugin.
19
+ * @param filePattern - The pattern to identify R Markdown files, see {@link RmdPattern} for the default pattern.
20
+ */
21
+ constructor(filePattern = RmdPattern) {
22
+ super();
23
+ this.pattern = filePattern;
24
+ }
25
+ applies(file) {
26
+ return this.pattern.test((0, built_in_source_1.platformBasename)(file.toString()));
27
+ }
28
+ process(_ctx, arg) {
29
+ return flowr_rmarkdown_file_1.FlowrRMarkdownFile.from(arg);
30
+ }
31
+ }
32
+ exports.FlowrAnalyzerRmdFilePlugin = FlowrAnalyzerRmdFilePlugin;
33
+ //# sourceMappingURL=flowr-analyzer-rmd-file-plugin.js.map
@@ -0,0 +1,20 @@
1
+ import type { FlowrFileProvider } from '../../../context/flowr-file';
2
+ import { FlowrFile } from '../../../context/flowr-file';
3
+ /**
4
+ * This decorates a text file and parses its contents as a Jupyter file.
5
+ * Finnaly, it provides access to the single cells, and all cells fused together as one R file.
6
+ */
7
+ export declare class FlowrJupyterFile extends FlowrFile<string> {
8
+ private readonly wrapped;
9
+ /**
10
+ * Prefer the static {@link FlowrRMarkdownFile.from} method
11
+ * @param file - the file to load as R Markdown
12
+ */
13
+ constructor(file: FlowrFileProvider<string>);
14
+ /**
15
+ * Loads and parses the content of the wrapped file.
16
+ * @returns RmdInfo
17
+ */
18
+ protected loadContent(): string;
19
+ static from(file: FlowrFileProvider<string> | FlowrJupyterFile): FlowrJupyterFile;
20
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowrJupyterFile = void 0;
4
+ const flowr_file_1 = require("../../../context/flowr-file");
5
+ /**
6
+ * This decorates a text file and parses its contents as a Jupyter file.
7
+ * Finnaly, it provides access to the single cells, and all cells fused together as one R file.
8
+ */
9
+ class FlowrJupyterFile extends flowr_file_1.FlowrFile {
10
+ wrapped;
11
+ /**
12
+ * Prefer the static {@link FlowrRMarkdownFile.from} method
13
+ * @param file - the file to load as R Markdown
14
+ */
15
+ constructor(file) {
16
+ super(file.path(), flowr_file_1.FileRole.Source);
17
+ this.wrapped = file;
18
+ }
19
+ /**
20
+ * Loads and parses the content of the wrapped file.
21
+ * @returns RmdInfo
22
+ */
23
+ loadContent() {
24
+ return loadJupyter(this.wrapped.content());
25
+ }
26
+ static from(file) {
27
+ return file instanceof FlowrJupyterFile ? file : new FlowrJupyterFile(file);
28
+ }
29
+ }
30
+ exports.FlowrJupyterFile = FlowrJupyterFile;
31
+ function loadJupyter(content) {
32
+ const nb = JSON.parse(content);
33
+ return nb.cells.map(cell => {
34
+ if (cell.cell_type === 'code') {
35
+ return typeof cell.source === 'object' ? cell.source.join('') : cell.source;
36
+ }
37
+ else {
38
+ return typeof cell.source === 'object' ? cell.source.map(s => `# ${s}`).join('') : `# ${cell.source}`;
39
+ }
40
+ }).join('\n');
41
+ }
42
+ //# sourceMappingURL=flowr-jupyter-file.js.map
@@ -0,0 +1,59 @@
1
+ import type { FlowrFileProvider } from '../../../context/flowr-file';
2
+ import { FlowrFile } from '../../../context/flowr-file';
3
+ import { type Node } from 'commonmark';
4
+ /**
5
+ * This decorates a text file and parses its contents as a R Markdown file.
6
+ * Finnaly, it provides access to the single cells, and all cells fused together as one R file.
7
+ */
8
+ export declare class FlowrRMarkdownFile extends FlowrFile<string> {
9
+ private data?;
10
+ private readonly wrapped;
11
+ /**
12
+ * Prefer the static {@link FlowrRMarkdownFile.from} method
13
+ * @param file - the file to load as R Markdown
14
+ */
15
+ constructor(file: FlowrFileProvider<string>);
16
+ get rmd(): RmdInfo;
17
+ /**
18
+ * Loads and parses the content of the wrapped file.
19
+ * @returns RmdInfo
20
+ */
21
+ protected loadContent(): string;
22
+ static from(file: FlowrFileProvider<string> | FlowrRMarkdownFile): FlowrRMarkdownFile;
23
+ }
24
+ export interface CodeBlock {
25
+ options: string;
26
+ code: string;
27
+ }
28
+ export type CodeBlockEx = CodeBlock & {
29
+ startpos: {
30
+ line: number;
31
+ col: number;
32
+ };
33
+ };
34
+ export interface RmdInfo {
35
+ content: string;
36
+ blocks: CodeBlock[];
37
+ options: object;
38
+ }
39
+ /**
40
+ * Parse the contents of a RMarkdown file into complete code and blocks
41
+ * @param raw - the raw file content
42
+ * @returns Rmd Info
43
+ */
44
+ export declare function parseRMarkdownFile(raw: string): RmdInfo;
45
+ /**
46
+ * Checks whether a CommonMark node is an R code block
47
+ */
48
+ export declare function isRCodeBlock(node: Node): node is Node & {
49
+ literal: string;
50
+ info: string;
51
+ };
52
+ /**
53
+ * Restores an Rmd file from code blocks, filling non-code lines with empty lines
54
+ */
55
+ export declare function restoreBlocksWithoutMd(blocks: CodeBlockEx[], totalLines: number): string;
56
+ /**
57
+ * Parses the options of an R code block from its header and content
58
+ */
59
+ export declare function parseCodeBlockOptions(header: string, content: string): string;