@eagleoutice/flowr 2.0.25 → 2.1.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 (381) hide show
  1. package/benchmark/slicer.js +2 -1
  2. package/benchmark/stats/print.js +3 -4
  3. package/benchmark/stats/size-of.js +9 -7
  4. package/benchmark/summarizer/first-phase/input.d.ts +0 -1
  5. package/benchmark/summarizer/first-phase/input.js +2 -3
  6. package/benchmark/summarizer/first-phase/process.js +7 -7
  7. package/benchmark/summarizer/second-phase/graph.js +1 -2
  8. package/benchmark/summarizer/second-phase/process.d.ts +0 -1
  9. package/benchmark/summarizer/second-phase/process.js +4 -5
  10. package/benchmark/summarizer/summarizer.js +7 -1
  11. package/cli/benchmark-app.js +6 -1
  12. package/cli/common/features.js +2 -3
  13. package/cli/common/script.js +2 -3
  14. package/cli/common/scripts-info.d.ts +69 -1
  15. package/cli/common/scripts-info.js +6 -6
  16. package/cli/flowr-main-options.d.ts +4 -0
  17. package/cli/flowr-main-options.js +88 -0
  18. package/cli/flowr.d.ts +3 -3
  19. package/cli/flowr.js +22 -31
  20. package/cli/repl/commands/{cfg.d.ts → repl-cfg.d.ts} +1 -1
  21. package/cli/repl/commands/{cfg.js → repl-cfg.js} +3 -3
  22. package/cli/repl/commands/{commands.d.ts → repl-commands.d.ts} +3 -1
  23. package/cli/repl/commands/{commands.js → repl-commands.js} +56 -35
  24. package/cli/repl/commands/{dataflow.d.ts → repl-dataflow.d.ts} +1 -1
  25. package/cli/repl/commands/{dataflow.js → repl-dataflow.js} +2 -2
  26. package/cli/repl/commands/{execute.d.ts → repl-execute.d.ts} +1 -1
  27. package/cli/repl/commands/{execute.js → repl-execute.js} +3 -3
  28. package/cli/repl/commands/repl-lineage.d.ts +15 -0
  29. package/cli/repl/commands/{lineage.js → repl-lineage.js} +14 -12
  30. package/cli/repl/commands/{main.js → repl-main.js} +1 -1
  31. package/cli/repl/commands/{normalize.d.ts → repl-normalize.d.ts} +1 -1
  32. package/cli/repl/commands/{normalize.js → repl-normalize.js} +3 -3
  33. package/cli/repl/commands/{parse.d.ts → repl-parse.d.ts} +1 -1
  34. package/cli/repl/commands/{parse.js → repl-parse.js} +3 -2
  35. package/cli/repl/commands/repl-query.d.ts +8 -0
  36. package/cli/repl/commands/repl-query.js +155 -0
  37. package/cli/repl/commands/repl-quit.d.ts +2 -0
  38. package/cli/repl/commands/{quit.js → repl-quit.js} +1 -1
  39. package/cli/repl/commands/{version.d.ts → repl-version.d.ts} +1 -1
  40. package/cli/repl/commands/{version.js → repl-version.js} +4 -4
  41. package/cli/repl/core.d.ts +1 -2
  42. package/cli/repl/core.js +13 -13
  43. package/cli/repl/execute.d.ts +1 -2
  44. package/cli/repl/execute.js +2 -3
  45. package/cli/repl/print-version.js +3 -4
  46. package/cli/repl/server/connection.d.ts +1 -0
  47. package/cli/repl/server/connection.js +45 -12
  48. package/cli/repl/server/messages/{messages.d.ts → all-messages.d.ts} +8 -7
  49. package/cli/repl/server/messages/{messages.js → all-messages.js} +1 -1
  50. package/cli/repl/server/messages/{analysis.d.ts → message-analysis.d.ts} +2 -1
  51. package/cli/repl/server/messages/message-analysis.js +39 -0
  52. package/cli/repl/server/messages/{error.d.ts → message-error.d.ts} +1 -1
  53. package/cli/repl/server/messages/{error.js → message-error.js} +1 -1
  54. package/cli/repl/server/messages/{hello.d.ts → message-hello.d.ts} +4 -3
  55. package/cli/repl/server/messages/message-hello.js +20 -0
  56. package/cli/repl/server/messages/{lineage.d.ts → message-lineage.d.ts} +2 -1
  57. package/cli/repl/server/messages/message-lineage.js +25 -0
  58. package/cli/repl/server/messages/message-query.d.ts +16 -0
  59. package/cli/repl/server/messages/message-query.js +26 -0
  60. package/cli/repl/server/messages/{repl.d.ts → message-repl.d.ts} +3 -1
  61. package/cli/repl/server/messages/message-repl.js +53 -0
  62. package/cli/repl/server/messages/{slice.d.ts → message-slice.d.ts} +2 -1
  63. package/cli/repl/server/messages/{slice.js → message-slice.js} +14 -6
  64. package/cli/repl/server/net.d.ts +0 -1
  65. package/cli/repl/server/send.d.ts +1 -1
  66. package/cli/repl/server/send.js +2 -3
  67. package/cli/repl/server/server.js +2 -2
  68. package/cli/repl/server/validate.d.ts +1 -1
  69. package/cli/repl/server/validate.js +5 -6
  70. package/cli/run-script.d.ts +8 -0
  71. package/cli/run-script.js +18 -0
  72. package/cli/script-core/statistics-core.d.ts +2 -0
  73. package/cli/script-core/statistics-core.js +100 -0
  74. package/cli/script-core/statistics-helper-core.d.ts +2 -0
  75. package/cli/script-core/statistics-helper-core.js +81 -0
  76. package/cli/script-core/summarizer-core.d.ts +2 -0
  77. package/cli/script-core/summarizer-core.js +51 -0
  78. package/cli/statistics-app.js +3 -87
  79. package/cli/statistics-helper-app.js +3 -77
  80. package/cli/summarizer-app.js +2 -48
  81. package/config.d.ts +20 -4
  82. package/config.js +62 -36
  83. package/core/pipeline-executor.js +11 -1
  84. package/core/print/dataflow-printer.js +4 -5
  85. package/core/print/normalize-printer.js +4 -5
  86. package/core/print/parse-printer.js +1 -2
  87. package/core/print/print.js +2 -3
  88. package/core/print/slice-diff-ansi.js +1 -2
  89. package/core/steps/pipeline/create-pipeline.js +1 -2
  90. package/core/steps/pipeline/default-pipelines.d.ts +18 -18
  91. package/core/steps/pipeline/pipeline.js +1 -2
  92. package/dataflow/environments/append.js +1 -2
  93. package/dataflow/environments/built-in-config.d.ts +47 -0
  94. package/dataflow/environments/built-in-config.js +83 -0
  95. package/dataflow/environments/built-in.d.ts +49 -6
  96. package/dataflow/environments/built-in.js +29 -97
  97. package/dataflow/environments/clone.js +2 -2
  98. package/dataflow/environments/default-builtin-config.d.ts +5 -0
  99. package/dataflow/environments/default-builtin-config.js +83 -0
  100. package/dataflow/environments/define.js +1 -2
  101. package/dataflow/environments/diff.js +5 -6
  102. package/dataflow/environments/environment.js +8 -7
  103. package/dataflow/environments/identifier.d.ts +39 -8
  104. package/dataflow/environments/identifier.js +33 -0
  105. package/dataflow/environments/overwrite.d.ts +6 -5
  106. package/dataflow/environments/overwrite.js +16 -9
  107. package/dataflow/environments/resolve-by-name.d.ts +3 -1
  108. package/dataflow/environments/resolve-by-name.js +40 -8
  109. package/dataflow/environments/scoping.js +2 -3
  110. package/dataflow/extractor.js +25 -24
  111. package/dataflow/graph/dataflowgraph-builder.d.ts +139 -0
  112. package/dataflow/graph/dataflowgraph-builder.js +247 -0
  113. package/dataflow/graph/diff.js +12 -11
  114. package/dataflow/graph/edge.d.ts +2 -2
  115. package/dataflow/graph/edge.js +46 -20
  116. package/dataflow/graph/graph.d.ts +14 -6
  117. package/dataflow/graph/graph.js +25 -21
  118. package/dataflow/graph/quads.js +1 -2
  119. package/dataflow/graph/resolve-graph.d.ts +7 -0
  120. package/dataflow/graph/resolve-graph.js +51 -0
  121. package/dataflow/graph/vertex.d.ts +12 -4
  122. package/dataflow/graph/vertex.js +19 -11
  123. package/dataflow/info.d.ts +3 -7
  124. package/dataflow/info.js +7 -8
  125. package/dataflow/internal/linker.d.ts +3 -1
  126. package/dataflow/internal/linker.js +77 -32
  127. package/dataflow/internal/process/functions/call/argument/make-argument.js +5 -5
  128. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +1 -2
  129. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +10 -8
  130. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +5 -1
  131. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +27 -10
  132. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +40 -26
  133. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +30 -20
  134. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +10 -9
  135. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +12 -11
  136. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +6 -5
  137. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +7 -6
  138. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +4 -4
  139. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +10 -6
  140. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +7 -3
  141. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +2 -3
  142. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -4
  143. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +6 -6
  144. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -3
  145. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +6 -5
  146. package/dataflow/internal/process/functions/call/common.js +30 -19
  147. package/dataflow/internal/process/functions/call/default-call-handling.js +1 -2
  148. package/dataflow/internal/process/functions/call/known-call-handling.js +8 -6
  149. package/dataflow/internal/process/functions/call/named-call-handling.js +7 -6
  150. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +11 -7
  151. package/dataflow/internal/process/functions/process-argument.js +10 -8
  152. package/dataflow/internal/process/functions/process-parameter.js +8 -6
  153. package/dataflow/internal/process/process-named-call.js +3 -3
  154. package/dataflow/internal/process/process-symbol.js +5 -4
  155. package/dataflow/internal/process/process-uninteresting-leaf.js +1 -2
  156. package/dataflow/internal/process/process-value.js +5 -4
  157. package/dataflow/processor.js +1 -2
  158. package/documentation/data/dfg/doc-data-dfg-util.d.ts +20 -0
  159. package/documentation/data/dfg/doc-data-dfg-util.js +13 -0
  160. package/documentation/data/query/example-query-code.d.ts +1 -0
  161. package/documentation/data/query/example-query-code.js +25 -0
  162. package/documentation/data/server/doc-data-server-messages.d.ts +1 -0
  163. package/documentation/data/server/doc-data-server-messages.js +508 -0
  164. package/documentation/doc-util/doc-auto-gen.d.ts +7 -0
  165. package/documentation/doc-util/doc-auto-gen.js +9 -0
  166. package/documentation/doc-util/doc-cfg.d.ts +7 -0
  167. package/documentation/doc-util/doc-cfg.js +18 -0
  168. package/documentation/doc-util/doc-cli-option.d.ts +8 -0
  169. package/documentation/doc-util/doc-cli-option.js +36 -0
  170. package/documentation/doc-util/doc-code.d.ts +1 -0
  171. package/documentation/doc-util/doc-code.js +7 -0
  172. package/documentation/doc-util/doc-dfg.d.ts +21 -0
  173. package/documentation/doc-util/doc-dfg.js +93 -0
  174. package/documentation/doc-util/doc-docker.d.ts +1 -0
  175. package/documentation/doc-util/doc-docker.js +5 -0
  176. package/documentation/doc-util/doc-env.d.ts +2 -0
  177. package/documentation/doc-util/doc-env.js +20 -0
  178. package/documentation/doc-util/doc-files.d.ts +6 -0
  179. package/documentation/doc-util/doc-files.js +25 -0
  180. package/documentation/doc-util/doc-general.d.ts +2 -0
  181. package/documentation/doc-util/doc-general.js +16 -0
  182. package/documentation/doc-util/doc-hover-over.d.ts +1 -0
  183. package/documentation/doc-util/doc-hover-over.js +7 -0
  184. package/documentation/doc-util/doc-issue.d.ts +1 -0
  185. package/documentation/doc-util/doc-issue.js +6 -0
  186. package/documentation/doc-util/doc-ms.d.ts +1 -0
  187. package/documentation/doc-util/doc-ms.js +8 -0
  188. package/documentation/doc-util/doc-normalized-ast.d.ts +11 -0
  189. package/documentation/doc-util/doc-normalized-ast.js +71 -0
  190. package/documentation/doc-util/doc-query.d.ts +24 -0
  191. package/documentation/doc-util/doc-query.js +113 -0
  192. package/documentation/doc-util/doc-repl.d.ts +13 -0
  193. package/documentation/doc-util/doc-repl.js +79 -0
  194. package/documentation/doc-util/doc-server-message.d.ts +37 -0
  195. package/documentation/doc-util/doc-server-message.js +153 -0
  196. package/documentation/doc-util/doc-structure.d.ts +12 -0
  197. package/documentation/doc-util/doc-structure.js +21 -0
  198. package/documentation/doc-util/doc-types.d.ts +38 -0
  199. package/documentation/doc-util/doc-types.js +276 -0
  200. package/{r-bridge/data/print.js → documentation/print-capabilities-markdown.js} +8 -4
  201. package/documentation/print-dataflow-graph-wiki.d.ts +1 -0
  202. package/documentation/print-dataflow-graph-wiki.js +849 -0
  203. package/documentation/print-interface-wiki.d.ts +1 -0
  204. package/documentation/print-interface-wiki.js +401 -0
  205. package/documentation/print-normalized-ast-wiki.d.ts +1 -0
  206. package/documentation/print-normalized-ast-wiki.js +98 -0
  207. package/documentation/print-query-wiki.d.ts +1 -0
  208. package/documentation/print-query-wiki.js +215 -0
  209. package/package.json +29 -33
  210. package/queries/base-query-format.d.ts +11 -0
  211. package/{cli/repl/server/messages/hello.js → queries/base-query-format.js} +1 -1
  212. package/queries/call-context-query/call-context-query-executor.d.ts +11 -0
  213. package/queries/call-context-query/call-context-query-executor.js +255 -0
  214. package/queries/call-context-query/call-context-query-format.d.ts +72 -0
  215. package/queries/call-context-query/call-context-query-format.js +17 -0
  216. package/queries/query-schema.d.ts +7 -0
  217. package/queries/query-schema.js +31 -0
  218. package/queries/query.d.ts +35 -0
  219. package/queries/query.js +57 -0
  220. package/queries/two-layer-collector.d.ts +8 -0
  221. package/queries/two-layer-collector.js +31 -0
  222. package/queries/virtual-query/compound-query.d.ts +24 -0
  223. package/queries/virtual-query/compound-query.js +18 -0
  224. package/queries/virtual-query/virtual-queries.d.ts +15 -0
  225. package/queries/virtual-query/virtual-queries.js +8 -0
  226. package/r-bridge/data/data.d.ts +5 -0
  227. package/r-bridge/data/data.js +6 -0
  228. package/r-bridge/data/get.js +2 -3
  229. package/r-bridge/init.js +2 -2
  230. package/r-bridge/lang-4.x/ast/model/collect.js +1 -2
  231. package/r-bridge/lang-4.x/ast/model/model.d.ts +1 -2
  232. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +3 -0
  233. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +3 -0
  234. package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +3 -0
  235. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +5 -0
  236. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +4 -0
  237. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +1 -1
  238. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -1
  239. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +5 -0
  240. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +3 -0
  241. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +3 -0
  242. package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +3 -0
  243. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +3 -0
  244. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +1 -1
  245. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  246. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  247. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +1 -2
  248. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +3 -0
  249. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +2 -2
  250. package/r-bridge/lang-4.x/ast/model/operators.js +27 -26
  251. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +9 -9
  252. package/r-bridge/lang-4.x/ast/model/processing/fold.js +1 -2
  253. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +5 -0
  254. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +26 -3
  255. package/r-bridge/lang-4.x/ast/model/processing/role.js +1 -2
  256. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +23 -23
  257. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +23 -23
  258. package/r-bridge/lang-4.x/ast/model/type.d.ts +2 -2
  259. package/r-bridge/lang-4.x/ast/model/type.js +221 -12
  260. package/r-bridge/lang-4.x/ast/parser/json/format.js +2 -2
  261. package/r-bridge/lang-4.x/ast/parser/json/parser.js +6 -5
  262. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +3 -3
  263. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/normalize-if-then-else.js +4 -4
  264. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/normalize-if-then.js +7 -7
  265. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +4 -4
  266. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-argument.js +10 -10
  267. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-call.js +18 -18
  268. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.js +8 -8
  269. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-parameter.js +9 -9
  270. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.js +3 -3
  271. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.js +10 -10
  272. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.js +3 -3
  273. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.js +5 -5
  274. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.js +7 -7
  275. package/r-bridge/lang-4.x/ast/parser/xml/internal/normalize-access.js +12 -12
  276. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-binary.js +14 -14
  277. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +4 -4
  278. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.js +3 -3
  279. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.js +4 -4
  280. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +3 -3
  281. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +13 -13
  282. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +6 -6
  283. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +19 -19
  284. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.js +5 -5
  285. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.js +3 -3
  286. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-symbol.js +2 -3
  287. package/r-bridge/lang-4.x/ast/parser/xml/normalize-meta.js +12 -12
  288. package/r-bridge/lang-4.x/convert-values.js +7 -7
  289. package/r-bridge/retriever.js +12 -11
  290. package/r-bridge/shell.d.ts +0 -1
  291. package/r-bridge/shell.js +6 -1
  292. package/reconstruct/auto-select/auto-select-defaults.js +1 -2
  293. package/reconstruct/auto-select/magic-comments.js +3 -3
  294. package/reconstruct/reconstruct.js +4 -3
  295. package/slicing/criterion/collect-all.js +1 -2
  296. package/slicing/criterion/parse.d.ts +1 -1
  297. package/slicing/criterion/parse.js +6 -5
  298. package/slicing/static/fingerprint.js +2 -3
  299. package/slicing/static/slice-call.js +9 -9
  300. package/slicing/static/static-slicer.js +5 -4
  301. package/statistics/features/common-syntax-probability.js +13 -13
  302. package/statistics/features/feature.d.ts +5 -9
  303. package/statistics/features/feature.js +2 -2
  304. package/statistics/features/post-processing.js +2 -3
  305. package/statistics/features/supported/assignments/assignments.js +3 -2
  306. package/statistics/features/supported/assignments/post-process.js +1 -2
  307. package/statistics/features/supported/comments/post-process.js +1 -2
  308. package/statistics/features/supported/control-flow/control-flow.js +4 -3
  309. package/statistics/features/supported/control-flow/post-process.js +1 -2
  310. package/statistics/features/supported/data-access/data-access.d.ts +2 -2
  311. package/statistics/features/supported/data-access/data-access.js +3 -2
  312. package/statistics/features/supported/data-access/post-process.js +1 -2
  313. package/statistics/features/supported/defined-functions/defined-functions.js +9 -7
  314. package/statistics/features/supported/defined-functions/post-process.d.ts +1 -1
  315. package/statistics/features/supported/defined-functions/post-process.js +2 -3
  316. package/statistics/features/supported/expression-list/post-process.js +1 -2
  317. package/statistics/features/supported/expression-list/{expression-list.js → statistics-expression-list.js} +4 -3
  318. package/statistics/features/supported/loops/loops.js +8 -7
  319. package/statistics/features/supported/loops/post-process.js +1 -2
  320. package/statistics/features/supported/used-functions/post-process.js +2 -3
  321. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  322. package/statistics/features/supported/used-functions/used-functions.js +4 -3
  323. package/statistics/features/supported/used-packages/post-process.js +1 -2
  324. package/statistics/features/supported/values/post-process.js +1 -2
  325. package/statistics/features/supported/variables/post-process.js +2 -3
  326. package/statistics/features/supported/variables/variables.js +2 -1
  327. package/statistics/meta-statistics.js +1 -2
  328. package/statistics/output/print-stats.js +4 -5
  329. package/statistics/output/statistics-file.js +5 -5
  330. package/statistics/statistics.js +2 -3
  331. package/statistics/summarizer/auto-detect.js +1 -2
  332. package/statistics/summarizer/post-process/clusterer.js +1 -2
  333. package/statistics/summarizer/post-process/file-based-count.js +2 -3
  334. package/statistics/summarizer/post-process/histogram.js +3 -4
  335. package/statistics/summarizer/post-process/post-process-output.js +2 -3
  336. package/statistics/summarizer/second-phase/process.d.ts +2 -0
  337. package/statistics/summarizer/second-phase/process.js +2 -2
  338. package/statistics/summarizer/summarizer.js +8 -1
  339. package/util/ansi.d.ts +1 -0
  340. package/util/ansi.js +27 -4
  341. package/util/args.js +2 -3
  342. package/util/arrays.js +8 -9
  343. package/util/assert.js +5 -6
  344. package/util/bimap.d.ts +4 -4
  345. package/util/cfg/cfg.d.ts +1 -0
  346. package/util/cfg/cfg.js +8 -5
  347. package/util/cfg/visitor.d.ts +8 -13
  348. package/util/cfg/visitor.js +22 -56
  349. package/util/diff.js +1 -2
  350. package/util/files.d.ts +0 -1
  351. package/util/files.js +11 -8
  352. package/util/json.js +2 -3
  353. package/util/mermaid/ast.js +7 -7
  354. package/util/mermaid/cfg.js +2 -3
  355. package/util/mermaid/dfg.d.ts +12 -4
  356. package/util/mermaid/dfg.js +28 -16
  357. package/util/mermaid/mermaid.js +5 -4
  358. package/util/numbers.js +1 -2
  359. package/util/objects.d.ts +7 -0
  360. package/util/objects.js +13 -3
  361. package/util/os.js +1 -2
  362. package/util/quads.js +5 -5
  363. package/util/random.js +2 -2
  364. package/util/range.js +8 -9
  365. package/util/schema.d.ts +11 -0
  366. package/util/schema.js +75 -0
  367. package/util/set.js +2 -3
  368. package/util/strings.js +3 -4
  369. package/util/summarizer.js +4 -4
  370. package/util/text.d.ts +1 -0
  371. package/util/text.js +20 -0
  372. package/util/time.js +1 -2
  373. package/util/version.js +2 -3
  374. package/cli/repl/commands/lineage.d.ts +0 -15
  375. package/cli/repl/commands/quit.d.ts +0 -2
  376. package/cli/repl/server/messages/analysis.js +0 -21
  377. package/cli/repl/server/messages/lineage.js +0 -17
  378. package/cli/repl/server/messages/repl.js +0 -37
  379. /package/cli/repl/commands/{main.d.ts → repl-main.d.ts} +0 -0
  380. /package/{r-bridge/data/print.d.ts → documentation/print-capabilities-markdown.d.ts} +0 -0
  381. /package/statistics/features/supported/expression-list/{expression-list.d.ts → statistics-expression-list.d.ts} +0 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printDfGraph = printDfGraph;
4
+ exports.printDfGraphForCode = printDfGraphForCode;
5
+ exports.verifyExpectedSubgraph = verifyExpectedSubgraph;
6
+ const dfg_1 = require("../../util/mermaid/dfg");
7
+ const pipeline_executor_1 = require("../../core/pipeline-executor");
8
+ const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
9
+ const retriever_1 = require("../../r-bridge/retriever");
10
+ const decorate_1 = require("../../r-bridge/lang-4.x/ast/model/processing/decorate");
11
+ const resolve_graph_1 = require("../../dataflow/graph/resolve-graph");
12
+ const diff_1 = require("../../dataflow/graph/diff");
13
+ const assert_1 = require("../../util/assert");
14
+ const doc_ms_1 = require("./doc-ms");
15
+ const json_1 = require("../../util/json");
16
+ function printDfGraph(graph, mark) {
17
+ return `
18
+ \`\`\`mermaid
19
+ ${(0, dfg_1.graphToMermaid)({
20
+ graph,
21
+ prefix: 'flowchart LR',
22
+ mark
23
+ }).string}
24
+ \`\`\`
25
+ `;
26
+ }
27
+ async function printDfGraphForCode(shell, code, { mark, showCode = true, codeOpen = false, exposeResult, switchCodeAndGraph = false } = {}) {
28
+ const now = performance.now();
29
+ const result = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_DATAFLOW_PIPELINE, {
30
+ shell,
31
+ request: (0, retriever_1.requestFromInput)(code)
32
+ }).allRemainingSteps();
33
+ const duration = performance.now() - now;
34
+ if (switchCodeAndGraph) {
35
+ (0, assert_1.guard)(showCode, 'can not switch code and graph if code is not shown');
36
+ }
37
+ const metaInfo = `The analysis required _${(0, doc_ms_1.printAsMs)(duration)}_ (including parsing and normalization) within the generation environment.`;
38
+ const dfGraph = printDfGraph(result.dataflow.graph, mark);
39
+ let resultText = '\n\n';
40
+ if (showCode) {
41
+ const codeText = `\`\`\`r
42
+ ${code}
43
+ \`\`\``;
44
+ resultText += switchCodeAndGraph ? codeText : dfGraph;
45
+ resultText += `
46
+ <details${codeOpen ? ' open' : ''}>
47
+
48
+ <summary style="color:gray">${switchCodeAndGraph ? 'Dataflow Graph of the R Code' : 'R Code of the Dataflow Graph'}</summary>
49
+
50
+ ${metaInfo} ${mark ? `The following marks are used in the graph to highlight sub-parts (uses ids): {${[...mark].join(', ')}}.` : ''}
51
+ We encountered ${result.dataflow.graph.unknownSideEffects.size > 0 ? 'unknown side effects (with ids: ' + JSON.stringify(result.dataflow.graph.unknownSideEffects, json_1.jsonReplacer) + ')' : 'no unknown side effects'} during the analysis.
52
+
53
+ ${switchCodeAndGraph ? dfGraph : codeText}
54
+
55
+ <details>
56
+
57
+ <summary style="color:gray">Mermaid Code ${(mark?.size ?? 0) > 0 ? '(without markings)' : ''}</summary>
58
+
59
+ \`\`\`
60
+ ${(0, dfg_1.graphToMermaid)({
61
+ graph: result.dataflow.graph,
62
+ prefix: 'flowchart LR'
63
+ }).string}
64
+ \`\`\`
65
+
66
+ </details>
67
+
68
+ </details>
69
+
70
+ `;
71
+ }
72
+ else {
73
+ resultText += dfGraph + '\n(' + metaInfo + ')\n\n';
74
+ }
75
+ return exposeResult ? [resultText, result] : resultText;
76
+ }
77
+ /** returns resolved expected df graph */
78
+ async function verifyExpectedSubgraph(shell, code, expectedSubgraph) {
79
+ /* we verify that we get what we want first! */
80
+ const info = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_DATAFLOW_PIPELINE, {
81
+ shell,
82
+ request: (0, retriever_1.requestFromInput)(code),
83
+ getId: (0, decorate_1.deterministicCountingIdGenerator)(0)
84
+ }).allRemainingSteps();
85
+ expectedSubgraph.setIdMap(info.normalize.idMap);
86
+ expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph);
87
+ const report = (0, diff_1.diffOfDataflowGraphs)({ name: 'expected', graph: expectedSubgraph }, { name: 'got', graph: info.dataflow.graph }, {
88
+ leftIsSubgraph: true
89
+ });
90
+ (0, assert_1.guard)(report.isEqual(), () => `report:\n * ${report.comments()?.join('\n * ') ?? ''}`);
91
+ return expectedSubgraph;
92
+ }
93
+ //# sourceMappingURL=doc-dfg.js.map
@@ -0,0 +1 @@
1
+ export declare const DockerName = "eagleoutice/flowr";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DockerName = void 0;
4
+ exports.DockerName = 'eagleoutice/flowr';
5
+ //# sourceMappingURL=doc-docker.js.map
@@ -0,0 +1,2 @@
1
+ import type { IEnvironment } from '../../dataflow/environments/environment';
2
+ export declare function printEnvironmentToMarkdown(env: IEnvironment | undefined): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printEnvironmentToMarkdown = printEnvironmentToMarkdown;
4
+ const environment_1 = require("../../dataflow/environments/environment");
5
+ const dfg_1 = require("../../util/mermaid/dfg");
6
+ function printEnvironmentToMarkdown(env) {
7
+ if (env === undefined) {
8
+ return '?? (error)';
9
+ }
10
+ else if (env.id === environment_1.BuiltInEnvironment.id) {
11
+ return `_Built-in Environment (${env.memory.size} entries)_`;
12
+ }
13
+ const lines = ['| Name | Definitions |', '|------|-------------|'];
14
+ for (const [name, defs] of env.memory.entries()) {
15
+ const printName = `\`${name}\``;
16
+ lines.push(`| ${printName} | {${defs.map(dfg_1.printIdentifier).join(', ')}} |`);
17
+ }
18
+ return lines.join('\n') + '\n\n<details><summary style="color:gray"> Parent Environment</summary>\n\n' + printEnvironmentToMarkdown(env.parent) + '\n\n</details>';
19
+ }
20
+ //# sourceMappingURL=doc-env.js.map
@@ -0,0 +1,6 @@
1
+ export declare const FlowrGithubBaseRef = "https://github.com/flowr-analysis";
2
+ export declare const RemoteFlowrFilePathBaseRef = "https://github.com/flowr-analysis/flowr/tree/main/";
3
+ export declare const FlowrWikiBaseRef = "https://github.com/flowr-analysis/flowr/wiki/";
4
+ export declare const FlowrNpmRef = "https://www.npmjs.com/package/@eagleoutice/flowr";
5
+ export declare function getFilePathMd(path: string): string;
6
+ export declare function getFileContentFromRoot(path: string): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FlowrNpmRef = exports.FlowrWikiBaseRef = exports.RemoteFlowrFilePathBaseRef = exports.FlowrGithubBaseRef = void 0;
7
+ exports.getFilePathMd = getFilePathMd;
8
+ exports.getFileContentFromRoot = getFileContentFromRoot;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ exports.FlowrGithubBaseRef = 'https://github.com/flowr-analysis';
11
+ exports.RemoteFlowrFilePathBaseRef = `${exports.FlowrGithubBaseRef}/flowr/tree/main/`;
12
+ exports.FlowrWikiBaseRef = `${exports.FlowrGithubBaseRef}/flowr/wiki/`;
13
+ exports.FlowrNpmRef = 'https://www.npmjs.com/package/@eagleoutice/flowr';
14
+ function getFilePathMd(path) {
15
+ // we go one up as we are in doc-util now :D #convenience
16
+ const fullpath = require.resolve('../' + path);
17
+ const relative = fullpath.replace(process.cwd(), '.');
18
+ /* remove project prefix */
19
+ return `[\`${relative}\`](${exports.RemoteFlowrFilePathBaseRef}${relative})`;
20
+ }
21
+ function getFileContentFromRoot(path) {
22
+ const fullpath = require.resolve('../../../' + path);
23
+ return fs_1.default.readFileSync(fullpath, 'utf-8');
24
+ }
25
+ //# sourceMappingURL=doc-files.js.map
@@ -0,0 +1,2 @@
1
+ export declare function prefixLines(line: string, prefix: string): string;
2
+ export declare function lastJoin(elements: readonly string[], join: string, lastjoin: string): string;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prefixLines = prefixLines;
4
+ exports.lastJoin = lastJoin;
5
+ function prefixLines(line, prefix) {
6
+ return line.split('\n').map(l => `${prefix}${l}`).join('\n');
7
+ }
8
+ function lastJoin(elements, join, lastjoin) {
9
+ if (elements.length <= 1) {
10
+ return elements.join(lastjoin);
11
+ }
12
+ else {
13
+ return elements.slice(0, -1).join(join) + lastjoin + elements[elements.length - 1];
14
+ }
15
+ }
16
+ //# sourceMappingURL=doc-general.js.map
@@ -0,0 +1 @@
1
+ export declare function textWithTooltip(text: string, tooltip?: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.textWithTooltip = textWithTooltip;
4
+ function textWithTooltip(text, tooltip) {
5
+ return tooltip ? `<span title=${JSON.stringify(tooltip)}>${text}</span>` : text;
6
+ }
7
+ //# sourceMappingURL=doc-hover-over.js.map
@@ -0,0 +1 @@
1
+ export declare const NewIssueUrl = "https://github.com/flowr-analysis/flowr/issues/new/choose";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NewIssueUrl = void 0;
4
+ const doc_files_1 = require("./doc-files");
5
+ exports.NewIssueUrl = `${doc_files_1.FlowrGithubBaseRef}/flowr/issues/new/choose`;
6
+ //# sourceMappingURL=doc-issue.js.map
@@ -0,0 +1 @@
1
+ export declare function printAsMs(ms: number, precision?: number): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printAsMs = printAsMs;
4
+ function printAsMs(ms, precision = 2) {
5
+ /* eslint-disable-next-line no-irregular-whitespace*/
6
+ return `${ms.toFixed(precision)} ms`;
7
+ }
8
+ //# sourceMappingURL=doc-ms.js.map
@@ -0,0 +1,11 @@
1
+ import type { DataflowGraph } from '../../dataflow/graph/graph';
2
+ import type { RShell } from '../../r-bridge/shell';
3
+ import type { RNodeWithParent } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
+ export declare function printNormalizedAst(ast: RNodeWithParent, prefix?: string): string;
5
+ export interface PrintNormalizedAstOptions {
6
+ readonly showCode?: boolean;
7
+ readonly prefix?: string;
8
+ }
9
+ export declare function printNormalizedAstForCode(shell: RShell, code: string, { showCode, prefix }?: PrintNormalizedAstOptions): Promise<string>;
10
+ /** returns resolved expected df graph */
11
+ export declare function verifyExpectedSubgraph(shell: RShell, code: string, expectedSubgraph: DataflowGraph): Promise<DataflowGraph>;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printNormalizedAst = printNormalizedAst;
4
+ exports.printNormalizedAstForCode = printNormalizedAstForCode;
5
+ exports.verifyExpectedSubgraph = verifyExpectedSubgraph;
6
+ const pipeline_executor_1 = require("../../core/pipeline-executor");
7
+ const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
8
+ const retriever_1 = require("../../r-bridge/retriever");
9
+ const decorate_1 = require("../../r-bridge/lang-4.x/ast/model/processing/decorate");
10
+ const resolve_graph_1 = require("../../dataflow/graph/resolve-graph");
11
+ const diff_1 = require("../../dataflow/graph/diff");
12
+ const assert_1 = require("../../util/assert");
13
+ const doc_ms_1 = require("./doc-ms");
14
+ const ast_1 = require("../../util/mermaid/ast");
15
+ function printNormalizedAst(ast, prefix = 'flowchart TD\n') {
16
+ return `
17
+ \`\`\`mermaid
18
+ ${(0, ast_1.normalizedAstToMermaid)(ast, prefix)}
19
+ \`\`\`
20
+ `;
21
+ }
22
+ async function printNormalizedAstForCode(shell, code, { showCode = true, prefix = 'flowchart TD\n' } = {}) {
23
+ const now = performance.now();
24
+ const result = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_NORMALIZE_PIPELINE, {
25
+ shell,
26
+ request: (0, retriever_1.requestFromInput)(code)
27
+ }).allRemainingSteps();
28
+ const duration = performance.now() - now;
29
+ const metaInfo = `The analysis required _${(0, doc_ms_1.printAsMs)(duration)}_ (including parsing) within the generation environment.`;
30
+ return '\n\n' + printNormalizedAst(result.normalize.ast, prefix) + (showCode ? `
31
+ <details>
32
+
33
+ <summary style="color:gray">R Code of the Normalized AST</summary>
34
+
35
+ ${metaInfo}
36
+
37
+ \`\`\`r
38
+ ${code}
39
+ \`\`\`
40
+
41
+ <details>
42
+
43
+ <summary style="color:gray">Mermaid Code</summary>
44
+
45
+ \`\`\`
46
+ ${(0, ast_1.normalizedAstToMermaid)(result.normalize.ast, prefix)}
47
+ \`\`\`
48
+
49
+ </details>
50
+
51
+ </details>
52
+
53
+ ` : '\n(' + metaInfo + ')\n\n');
54
+ }
55
+ /** returns resolved expected df graph */
56
+ async function verifyExpectedSubgraph(shell, code, expectedSubgraph) {
57
+ /* we verify that we get what we want first! */
58
+ const info = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_DATAFLOW_PIPELINE, {
59
+ shell,
60
+ request: (0, retriever_1.requestFromInput)(code),
61
+ getId: (0, decorate_1.deterministicCountingIdGenerator)(0)
62
+ }).allRemainingSteps();
63
+ expectedSubgraph.setIdMap(info.normalize.idMap);
64
+ expectedSubgraph = (0, resolve_graph_1.resolveDataflowGraph)(expectedSubgraph);
65
+ const report = (0, diff_1.diffOfDataflowGraphs)({ name: 'expected', graph: expectedSubgraph }, { name: 'got', graph: info.dataflow.graph }, {
66
+ leftIsSubgraph: true
67
+ });
68
+ (0, assert_1.guard)(report.isEqual(), () => `report:\n * ${report.comments()?.join('\n * ') ?? ''}`);
69
+ return expectedSubgraph;
70
+ }
71
+ //# sourceMappingURL=doc-normalized-ast.js.map
@@ -0,0 +1,24 @@
1
+ import type { RShell } from '../../r-bridge/shell';
2
+ import type { Queries, SupportedQueryTypes } from '../../queries/query';
3
+ import type { SupportedVirtualQueryTypes } from '../../queries/virtual-query/virtual-queries';
4
+ import type { VirtualCompoundConstraint } from '../../queries/virtual-query/compound-query';
5
+ export interface ShowQueryOptions {
6
+ readonly showCode?: boolean;
7
+ readonly collapseResult?: boolean;
8
+ }
9
+ export declare function showQuery<Base extends SupportedQueryTypes, VirtualArguments extends VirtualCompoundConstraint<Base> = VirtualCompoundConstraint<Base>>(shell: RShell, code: string, queries: Queries<Base, VirtualArguments>, { showCode, collapseResult }?: ShowQueryOptions): Promise<string>;
10
+ export interface QueryDocumentation {
11
+ readonly name: string;
12
+ readonly type: 'virtual' | 'active';
13
+ readonly shortDescription: string;
14
+ readonly functionName: string;
15
+ readonly functionFile: string;
16
+ readonly buildExplanation: (shell: RShell) => Promise<string>;
17
+ }
18
+ export declare const RegisteredQueries: {
19
+ active: Map<string, QueryDocumentation>;
20
+ virtual: Map<string, QueryDocumentation>;
21
+ };
22
+ export declare function registerQueryDocumentation(query: SupportedQueryTypes | SupportedVirtualQueryTypes, doc: QueryDocumentation): void;
23
+ export declare function tocForQueryType(type: 'active' | 'virtual'): string;
24
+ export declare function explainQueries(shell: RShell, type: 'active' | 'virtual'): Promise<string>;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RegisteredQueries = void 0;
4
+ exports.showQuery = showQuery;
5
+ exports.registerQueryDocumentation = registerQueryDocumentation;
6
+ exports.tocForQueryType = tocForQueryType;
7
+ exports.explainQueries = explainQueries;
8
+ const query_1 = require("../../queries/query");
9
+ const pipeline_executor_1 = require("../../core/pipeline-executor");
10
+ const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
11
+ const retriever_1 = require("../../r-bridge/retriever");
12
+ const doc_ms_1 = require("./doc-ms");
13
+ const json_1 = require("../../util/json");
14
+ const ansi_1 = require("../../util/ansi");
15
+ const repl_query_1 = require("../../cli/repl/commands/repl-query");
16
+ const doc_files_1 = require("./doc-files");
17
+ const doc_dfg_1 = require("./doc-dfg");
18
+ async function showQuery(shell, code, queries, { showCode, collapseResult } = {}) {
19
+ const now = performance.now();
20
+ const analysis = await new pipeline_executor_1.PipelineExecutor(default_pipelines_1.DEFAULT_DATAFLOW_PIPELINE, {
21
+ shell,
22
+ request: (0, retriever_1.requestFromInput)(code)
23
+ }).allRemainingSteps();
24
+ const results = (0, query_1.executeQueries)({ graph: analysis.dataflow.graph, ast: analysis.normalize }, queries);
25
+ const duration = performance.now() - now;
26
+ const metaInfo = `
27
+ The analysis required _${(0, doc_ms_1.printAsMs)(duration)}_ (including parsing and normalization and the query) within the generation environment.
28
+ `.trim();
29
+ const resultAsString = JSON.stringify(results, json_1.jsonReplacer, 2);
30
+ return `
31
+
32
+ \`\`\`json
33
+ ${JSON.stringify(queries, json_1.jsonReplacer, 2)}
34
+ \`\`\`
35
+
36
+ ${collapseResult ? ' <details> <summary style="color:gray">Show Results</summary>' : ''}
37
+
38
+ _Results (prettified and summarized):_
39
+
40
+ ${(0, repl_query_1.asciiSummaryOfQueryResult)(ansi_1.markdownFormatter, duration, results, analysis)}
41
+
42
+ <details> <summary style="color:gray">Show Detailed Results as Json</summary>
43
+
44
+ ${metaInfo}
45
+
46
+ In general, the JSON contains the Ids of the nodes in question as they are present in the normalized AST or the dataflow graph of flowR.
47
+ Please consult the [Interface](${doc_files_1.FlowrWikiBaseRef}/Interface) wiki page for more information on how to get those.
48
+
49
+ \`\`\`json
50
+ ${resultAsString}
51
+ \`\`\`
52
+
53
+ </details>
54
+
55
+ ${showCode ? `
56
+ <details> <summary style="color:gray">Original Code</summary>
57
+
58
+ ${await (0, doc_dfg_1.printDfGraphForCode)(shell, code, { switchCodeAndGraph: true })}
59
+
60
+ </details>
61
+ ` : ''}
62
+
63
+ ${collapseResult ? '</details>' : ''}
64
+
65
+ `;
66
+ }
67
+ exports.RegisteredQueries = {
68
+ 'active': new Map(),
69
+ 'virtual': new Map()
70
+ };
71
+ function registerQueryDocumentation(query, doc) {
72
+ const map = exports.RegisteredQueries[doc.type];
73
+ if (map.has(query)) {
74
+ throw new Error(`Query ${query} already registered`);
75
+ }
76
+ map.set(query, doc);
77
+ }
78
+ function linkify(name) {
79
+ return name.toLowerCase().replace(/ /g, '-');
80
+ }
81
+ function tocForQueryType(type) {
82
+ const queries = exports.RegisteredQueries[type];
83
+ const result = [];
84
+ for (const [id, { name, shortDescription }] of queries) {
85
+ result.push(`1. [${name}](#${linkify(name)}) (\`${id}\`):\\\n ${shortDescription}`);
86
+ }
87
+ return result.join('\n');
88
+ }
89
+ async function explainQuery(shell, { name, functionName, functionFile, buildExplanation }) {
90
+ return `
91
+ ### ${name}
92
+
93
+ ${await buildExplanation(shell)}
94
+
95
+ <details>
96
+
97
+ <summary style="color:gray">Implementation Details</summary>
98
+
99
+ Responsible for the execution of the ${name} query is \`${functionName}\` in ${(0, doc_files_1.getFilePathMd)(functionFile)}.
100
+
101
+ </details>
102
+
103
+ `;
104
+ }
105
+ async function explainQueries(shell, type) {
106
+ const queries = exports.RegisteredQueries[type];
107
+ const result = [];
108
+ for (const doc of queries.values()) {
109
+ result.push(await explainQuery(shell, doc));
110
+ }
111
+ return result.join('\n\n\n');
112
+ }
113
+ //# sourceMappingURL=doc-query.js.map
@@ -0,0 +1,13 @@
1
+ import type { RShell } from '../../r-bridge/shell';
2
+ export declare function printReplHelpAsMarkdownTable(): string;
3
+ export interface DocumentReplSessionOptions {
4
+ /** defaults to false and shows starting the repl */
5
+ hideEntry?: boolean;
6
+ /** defaults to false and allows access to the R session */
7
+ allowRSessionAccess?: boolean;
8
+ }
9
+ export interface DocumentReplCommand {
10
+ command: string;
11
+ description: string;
12
+ }
13
+ export declare function documentReplSession(shell: RShell, commands: readonly DocumentReplCommand[], options?: DocumentReplSessionOptions): Promise<string>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printReplHelpAsMarkdownTable = printReplHelpAsMarkdownTable;
4
+ exports.documentReplSession = documentReplSession;
5
+ const repl_commands_1 = require("../../cli/repl/commands/repl-commands");
6
+ const doc_cli_option_1 = require("./doc-cli-option");
7
+ const doc_hover_over_1 = require("./doc-hover-over");
8
+ const core_1 = require("../../cli/repl/core");
9
+ const ansi_1 = require("../../util/ansi");
10
+ const doc_docker_1 = require("./doc-docker");
11
+ const prompt_1 = require("../../cli/repl/prompt");
12
+ const doc_code_1 = require("./doc-code");
13
+ function printHelpForScript(script, starredVersion) {
14
+ let base = `| **${(0, doc_cli_option_1.getReplCommand)(script[0], false, starredVersion !== undefined)}** | ${script[1].description}`;
15
+ if (starredVersion) {
16
+ base += ` (star: ${starredVersion.description})`;
17
+ }
18
+ if (script[1].aliases.length === 0) {
19
+ return base;
20
+ }
21
+ const aliases = script[1].aliases;
22
+ return `${base} (alias${aliases.length > 1 ? 'es' : ''}: ${aliases.map(a => '**:' + (0, doc_hover_over_1.textWithTooltip)(a, `Alias of ':${script[0]}'. ${script[1].description}`) + '**').join(', ')}) |`;
23
+ }
24
+ function printReplHelpAsMarkdownTable() {
25
+ const scriptHelp = [];
26
+ const cmds = (0, repl_commands_1.getReplCommands)();
27
+ for (const c of Object.entries(cmds)) {
28
+ if (c[1].script || c[0].endsWith('*')) {
29
+ continue;
30
+ }
31
+ const starred = cmds[c[0] + '*'];
32
+ scriptHelp.push(printHelpForScript(c, starred));
33
+ }
34
+ return `
35
+ | Command | Description |
36
+ | ------- | ----------- |
37
+ ${scriptHelp.sort().join('\n')}
38
+ `;
39
+ }
40
+ async function documentReplSession(shell, commands, options) {
41
+ const collect = [];
42
+ for (const command of commands) {
43
+ const entry = { command, lines: [] };
44
+ const collectingOutput = {
45
+ formatter: ansi_1.voidFormatter,
46
+ stdout(msg) {
47
+ entry.lines.push(msg);
48
+ },
49
+ stderr(msg) {
50
+ entry.lines.push(msg);
51
+ }
52
+ };
53
+ await (0, core_1.replProcessAnswer)(collectingOutput, command.command, shell, options?.allowRSessionAccess ?? false);
54
+ collect.push(entry);
55
+ }
56
+ let result = '';
57
+ let cache = options?.hideEntry ? '' : `docker run -it --rm ${doc_docker_1.DockerName}\n`;
58
+ for (const { command, lines } of collect) {
59
+ if (lines.length === 0) {
60
+ cache += prompt_1.rawPrompt + ' ' + command.command + '\n';
61
+ continue;
62
+ }
63
+ result += `
64
+ ${(0, doc_code_1.codeBlock)('shell', cache + prompt_1.rawPrompt + ' ' + command.command)}
65
+ <details>
66
+ <summary style='color:gray'>Output</summary>
67
+
68
+ ${command.description}
69
+
70
+ ${(0, doc_code_1.codeBlock)('text', lines.join('\n'))}
71
+
72
+ </details>
73
+
74
+ `;
75
+ cache = '';
76
+ }
77
+ return result;
78
+ }
79
+ //# sourceMappingURL=doc-repl.js.map
@@ -0,0 +1,37 @@
1
+ import type { RShell } from '../../r-bridge/shell';
2
+ import type { FlowrMessage, IdMessageBase, MessageDefinition } from '../../cli/repl/server/messages/all-messages';
3
+ import type { FakeServer, FakeSocket } from '../../../test/functionality/_helper/net';
4
+ export interface ServerMessageDescription {
5
+ readonly title: string;
6
+ readonly type: 'request' | 'response';
7
+ readonly mermaidSequenceDiagram: string;
8
+ readonly shortDescription: string;
9
+ readonly definitionPath: string;
10
+ readonly defRequest?: MessageDefinition<IdMessageBase>;
11
+ readonly defResponse?: MessageDefinition<IdMessageBase>;
12
+ readonly additionalDefs?: MessageDefinition<IdMessageBase>[];
13
+ readonly text: (shell: RShell) => Promise<string>;
14
+ }
15
+ export declare function documentServerMessage(description: ServerMessageDescription): void;
16
+ export declare function printServerMessages(shell: RShell): Promise<string>;
17
+ export declare function inServerContext<T>(shell: RShell, fn: (socket: FakeSocket, server: FakeServer) => Promise<T> | T): Promise<T>;
18
+ interface ResponseMessageInPingPong {
19
+ readonly type: 'response';
20
+ readonly expectedType: FlowrMessage['type'];
21
+ readonly description?: string | ((msg: IdMessageBase) => string);
22
+ readonly mark?: boolean;
23
+ }
24
+ interface RequestMessageInPingPong {
25
+ readonly type: 'request';
26
+ readonly message: FlowrMessage;
27
+ readonly description?: string | ((msg: IdMessageBase) => string);
28
+ readonly mark?: boolean;
29
+ }
30
+ export interface MessagePingPongDocumentationArguments {
31
+ readonly shell: RShell;
32
+ readonly title?: string;
33
+ readonly messageType?: FlowrMessage['type'];
34
+ readonly messages: readonly (ResponseMessageInPingPong | RequestMessageInPingPong)[];
35
+ }
36
+ export declare function documentServerMessageResponse({ shell, title, messageType, messages }: MessagePingPongDocumentationArguments): Promise<string>;
37
+ export {};