@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
@@ -2,8 +2,8 @@ import type { Base, Location, NoInfo, RNode } from '../model';
2
2
  import type { RType } from '../type';
3
3
  import type { RExpressionList } from './r-expression-list';
4
4
  /**
5
- * ```ts
6
- * while ( <condition> ) <body>
5
+ * ```r
6
+ * while(<condition>) <body>
7
7
  * ```
8
8
  */
9
9
  export interface RWhileLoop<Info = NoInfo> extends Base<Info>, Location {
@@ -1,48 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnaryOperatorsInRAst = exports.OperatorsInRAst = exports.Operators = exports.OperatorDatabase = void 0;
4
+ const type_1 = require("./type");
4
5
  /* eslint-disable */
5
6
  exports.OperatorDatabase = {
6
7
  /* model formulae */
7
- '~': { name: 'model formulae', stringUsedInRAst: "~" /* RawRType.Tilde */, stringUsedInternally: '~', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'model-formula', 'function-calls'] },
8
+ '~': { name: 'model formulae', stringUsedInRAst: type_1.RawRType.Tilde, stringUsedInternally: '~', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'model-formula', 'function-calls'] },
8
9
  /* arithmetic */
9
- '+': { name: 'addition or unary +', stringUsedInRAst: "+" /* RawRType.Plus */, stringUsedInternally: '+', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['function-calls'] },
10
- '-': { name: 'subtraction or unary -', stringUsedInRAst: "-" /* RawRType.Minus */, stringUsedInternally: '-', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['function-calls'] },
11
- '*': { name: 'multiplication', stringUsedInRAst: "*" /* RawRType.Times */, stringUsedInternally: '*', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
12
- '/': { name: 'division', stringUsedInRAst: "/" /* RawRType.Div */, stringUsedInternally: '/', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
13
- '^': { name: 'exponentiation', stringUsedInRAst: "^" /* RawRType.Exp */, stringUsedInternally: '^', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
10
+ '+': { name: 'addition or unary +', stringUsedInRAst: type_1.RawRType.Plus, stringUsedInternally: '+', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['function-calls'] },
11
+ '-': { name: 'subtraction or unary -', stringUsedInRAst: type_1.RawRType.Minus, stringUsedInternally: '-', writtenAs: 'infix', arity: 3 /* OperatorArity.Both */, usedAs: 'operation', capabilities: ['function-calls'] },
12
+ '*': { name: 'multiplication', stringUsedInRAst: type_1.RawRType.Times, stringUsedInternally: '*', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
13
+ '/': { name: 'division', stringUsedInRAst: type_1.RawRType.Div, stringUsedInternally: '/', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
14
+ '^': { name: 'exponentiation', stringUsedInRAst: type_1.RawRType.Exp, stringUsedInternally: '^', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
14
15
  /* no error, R uses ^ to represent ** in the AST */
15
- '**': { name: 'alternative exponentiation', stringUsedInRAst: "^" /* RawRType.Exp */, stringUsedInternally: '**', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
16
+ '**': { name: 'alternative exponentiation', stringUsedInRAst: type_1.RawRType.Exp, stringUsedInternally: '**', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
16
17
  '%%': { name: 'modulus', stringUsedInRAst: '%%', stringUsedInternally: '%%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
17
18
  '%/%': { name: 'integer division', stringUsedInRAst: '%/%', stringUsedInternally: '%/%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
18
19
  '%*%': { name: 'matrix product', stringUsedInRAst: '%*%', stringUsedInternally: '%*%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
19
20
  '%o%': { name: 'outer product', stringUsedInRAst: '%o%', stringUsedInternally: '%o%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
20
21
  '%x%': { name: 'kronecker product', stringUsedInRAst: '%x%', stringUsedInternally: '%x%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
21
22
  /* comparison */
22
- '==': { name: 'equal to', stringUsedInRAst: "EQ" /* RawRType.Eq */, stringUsedInternally: '==', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
23
- '!=': { name: 'not equal to', stringUsedInRAst: "NE" /* RawRType.Ne */, stringUsedInternally: '!=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
24
- '>': { name: 'greater than', stringUsedInRAst: "GT" /* RawRType.Gt */, stringUsedInternally: '>', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
25
- '>=': { name: 'greater than or equal to', stringUsedInRAst: "GE" /* RawRType.Ge */, stringUsedInternally: '>=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
26
- '<': { name: 'less than', stringUsedInRAst: "LT" /* RawRType.Lt */, stringUsedInternally: '<', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
27
- '<=': { name: 'less than or equal to', stringUsedInRAst: "LE" /* RawRType.Le */, stringUsedInternally: '<=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
23
+ '==': { name: 'equal to', stringUsedInRAst: type_1.RawRType.Eq, stringUsedInternally: '==', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
24
+ '!=': { name: 'not equal to', stringUsedInRAst: type_1.RawRType.Ne, stringUsedInternally: '!=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
25
+ '>': { name: 'greater than', stringUsedInRAst: type_1.RawRType.Gt, stringUsedInternally: '>', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
26
+ '>=': { name: 'greater than or equal to', stringUsedInRAst: type_1.RawRType.Ge, stringUsedInternally: '>=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
27
+ '<': { name: 'less than', stringUsedInRAst: type_1.RawRType.Lt, stringUsedInternally: '<', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
28
+ '<=': { name: 'less than or equal to', stringUsedInRAst: type_1.RawRType.Le, stringUsedInternally: '<=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
28
29
  /* logical */
29
- '&': { name: 'logical and (vectorized)', stringUsedInRAst: "AND" /* RawRType.And */, stringUsedInternally: '&', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
30
- '&&': { name: 'logical and (non-vectorized)', stringUsedInRAst: "AND2" /* RawRType.And2 */, stringUsedInternally: '&&', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
31
- '|': { name: 'logical or (vectorized)', stringUsedInRAst: "OR" /* RawRType.Or */, stringUsedInternally: '|', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
32
- '||': { name: 'logical or (not-vectorized)', stringUsedInRAst: "OR2" /* RawRType.Or2 */, stringUsedInternally: '||', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
33
- '!': { name: 'unary not', stringUsedInRAst: "!" /* RawRType.Exclamation */, stringUsedInternally: '!', writtenAs: 'prefix', arity: 1 /* OperatorArity.Unary */, usedAs: 'operation', capabilities: ['unary-operator', 'function-calls'] },
30
+ '&': { name: 'logical and (vectorized)', stringUsedInRAst: type_1.RawRType.And, stringUsedInternally: '&', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
31
+ '&&': { name: 'logical and (non-vectorized)', stringUsedInRAst: type_1.RawRType.And2, stringUsedInternally: '&&', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
32
+ '|': { name: 'logical or (vectorized)', stringUsedInRAst: type_1.RawRType.Or, stringUsedInternally: '|', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
33
+ '||': { name: 'logical or (not-vectorized)', stringUsedInRAst: type_1.RawRType.Or2, stringUsedInternally: '||', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls', 'non-strict-logical-operators'] },
34
+ '!': { name: 'unary not', stringUsedInRAst: type_1.RawRType.Exclamation, stringUsedInternally: '!', writtenAs: 'prefix', arity: 1 /* OperatorArity.Unary */, usedAs: 'operation', capabilities: ['unary-operator', 'function-calls'] },
34
35
  '%in%': { name: 'matching operator', stringUsedInRAst: '%in%', stringUsedInternally: '%in%', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'special-operator', 'function-calls'] },
35
36
  /* assignment */
36
- '<-': { name: 'left assignment', stringUsedInRAst: "LEFT_ASSIGN" /* RawRType.LeftAssign */, stringUsedInternally: '<-', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-left-assignment', 'function-calls'] },
37
- ':=': { name: 'left assignment', stringUsedInRAst: "LEFT_ASSIGN" /* RawRType.LeftAssign */, stringUsedInternally: ':=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-table-assignment', 'function-calls'] },
38
- '<<-': { name: 'left global assignment', stringUsedInRAst: "LEFT_ASSIGN" /* RawRType.LeftAssign */, stringUsedInternally: '<<-', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'super-left-assignment', 'function-calls'] },
39
- '->': { name: 'right assignment', stringUsedInRAst: "RIGHT_ASSIGN" /* RawRType.RightAssign */, stringUsedInternally: '->', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-right-assignment', 'function-calls'] },
40
- '->>': { name: 'right global assignment', stringUsedInRAst: "RIGHT_ASSIGN" /* RawRType.RightAssign */, stringUsedInternally: '->>', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'super-right-assignment', 'function-calls'] },
41
- '=': { name: 'equal assignment', stringUsedInRAst: "EQ_ASSIGN" /* RawRType.EqualAssign */, stringUsedInternally: '=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-equal-assignment', 'function-calls'] },
37
+ '<-': { name: 'left assignment', stringUsedInRAst: type_1.RawRType.LeftAssign, stringUsedInternally: '<-', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-left-assignment', 'function-calls'] },
38
+ ':=': { name: 'left assignment', stringUsedInRAst: type_1.RawRType.LeftAssign, stringUsedInternally: ':=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-table-assignment', 'function-calls'] },
39
+ '<<-': { name: 'left global assignment', stringUsedInRAst: type_1.RawRType.LeftAssign, stringUsedInternally: '<<-', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'super-left-assignment', 'function-calls'] },
40
+ '->': { name: 'right assignment', stringUsedInRAst: type_1.RawRType.RightAssign, stringUsedInternally: '->', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-right-assignment', 'function-calls'] },
41
+ '->>': { name: 'right global assignment', stringUsedInRAst: type_1.RawRType.RightAssign, stringUsedInternally: '->>', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'super-right-assignment', 'function-calls'] },
42
+ '=': { name: 'equal assignment', stringUsedInRAst: type_1.RawRType.EqualAssign, stringUsedInternally: '=', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'assignment', capabilities: ['binary-operator', 'infix-calls', 'assignment-functions', 'local-equal-assignment', 'function-calls'] },
42
43
  /* others */
43
44
  /* maybe introduce custom in-r-ast flavor for these? we consider it arithmetic, as it works on numbers => if we change this we have to create custom tests! (with arithmetic, there is the automatic test set) */
44
- ':': { name: 'sequence operator', stringUsedInRAst: ":" /* RawRType.Colon */, stringUsedInternally: ':', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
45
- '?': { name: 'question', stringUsedInRAst: "?" /* RawRType.Question */, stringUsedInternally: '?', writtenAs: 'prefix', arity: 1 /* OperatorArity.Unary */, usedAs: 'operation', capabilities: ['unary-operator', 'built-in-help'] }
45
+ ':': { name: 'sequence operator', stringUsedInRAst: type_1.RawRType.Colon, stringUsedInternally: ':', writtenAs: 'infix', arity: 2 /* OperatorArity.Binary */, usedAs: 'operation', capabilities: ['binary-operator', 'infix-calls', 'function-calls'] },
46
+ '?': { name: 'question', stringUsedInRAst: type_1.RawRType.Question, stringUsedInternally: '?', writtenAs: 'prefix', arity: 1 /* OperatorArity.Unary */, usedAs: 'operation', capabilities: ['unary-operator', 'built-in-help'] }
46
47
  };
47
48
  /* eslint-enable */
48
49
  function buildOperatorRAstCollection(operators) {
@@ -10,9 +10,15 @@
10
10
  * @module
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.decorateAst = exports.deterministicLocationIdGenerator = exports.nodeToLocationId = exports.sourcedDeterministicCountingIdGenerator = exports.deterministicPrefixIdGenerator = exports.deterministicCountingIdGenerator = void 0;
13
+ exports.deterministicCountingIdGenerator = deterministicCountingIdGenerator;
14
+ exports.deterministicPrefixIdGenerator = deterministicPrefixIdGenerator;
15
+ exports.sourcedDeterministicCountingIdGenerator = sourcedDeterministicCountingIdGenerator;
16
+ exports.nodeToLocationId = nodeToLocationId;
17
+ exports.deterministicLocationIdGenerator = deterministicLocationIdGenerator;
18
+ exports.decorateAst = decorateAst;
14
19
  const assert_1 = require("../../../../../util/assert");
15
20
  const bimap_1 = require("../../../../../util/bimap");
21
+ const type_1 = require("../type");
16
22
  const stateful_fold_1 = require("./stateful-fold");
17
23
  const r_function_call_1 = require("../nodes/r-function-call");
18
24
  /**
@@ -21,16 +27,13 @@ const r_function_call_1 = require("../nodes/r-function-call");
21
27
  function deterministicCountingIdGenerator(id = 0) {
22
28
  return () => id++;
23
29
  }
24
- exports.deterministicCountingIdGenerator = deterministicCountingIdGenerator;
25
30
  function deterministicPrefixIdGenerator(prefix, id = 0) {
26
31
  return () => `${prefix}-${id++}`;
27
32
  }
28
- exports.deterministicPrefixIdGenerator = deterministicPrefixIdGenerator;
29
33
  function sourcedDeterministicCountingIdGenerator(path, location, start = 0) {
30
34
  let id = start;
31
35
  return () => `${path}-${loc2Id(location)}-${id++}`;
32
36
  }
33
- exports.sourcedDeterministicCountingIdGenerator = sourcedDeterministicCountingIdGenerator;
34
37
  function loc2Id([sl, sc, el, ec]) {
35
38
  return `${sl}:${sc}-${el}:${ec}`;
36
39
  }
@@ -44,7 +47,6 @@ function nodeToLocationId(data) {
44
47
  (0, assert_1.guard)(loc !== undefined, 'location must be defined to generate a location id');
45
48
  return loc2Id(loc);
46
49
  }
47
- exports.nodeToLocationId = nodeToLocationId;
48
50
  /**
49
51
  * Generates unique ids based on the locations of the node (see {@link nodeToLocationId}).
50
52
  * If a node has no location information, it will be assigned a unique counter-value.
@@ -55,13 +57,12 @@ function deterministicLocationIdGenerator(start = 0) {
55
57
  let id = start;
56
58
  return (data) => data.location !== undefined ? nodeToLocationId(data) : `${id++}`;
57
59
  }
58
- exports.deterministicLocationIdGenerator = deterministicLocationIdGenerator;
59
60
  const defaultParentContext = {
60
61
  role: "root" /* RoleInParent.Root */,
61
62
  index: 0
62
63
  };
63
64
  const nestForElement = new Set([
64
- "RFunctionDefinition" /* RType.FunctionDefinition */, "RForLoop" /* RType.ForLoop */, "RWhileLoop" /* RType.WhileLoop */, "RRepeatLoop" /* RType.RepeatLoop */, "RIfThenElse" /* RType.IfThenElse */,
65
+ type_1.RType.FunctionDefinition, type_1.RType.ForLoop, type_1.RType.WhileLoop, type_1.RType.RepeatLoop, type_1.RType.IfThenElse,
65
66
  ]);
66
67
  /**
67
68
  * Covert the given AST into a doubly linked tree while assigning ids (so it stays serializable).
@@ -125,7 +126,6 @@ function decorateAst(ast, getId = deterministicCountingIdGenerator(0)) {
125
126
  idMap
126
127
  };
127
128
  }
128
- exports.decorateAst = decorateAst;
129
129
  function createFoldForLeaf(info) {
130
130
  return (data, nesting) => {
131
131
  const id = info.getId(data);
@@ -153,7 +153,7 @@ function createFoldForBinaryOp(info) {
153
153
  const rhsInfo = rhs.info;
154
154
  rhsInfo.parent = id;
155
155
  rhsInfo.index = 1;
156
- if (data.type === "RPipe" /* RType.Pipe */) {
156
+ if (data.type === type_1.RType.Pipe) {
157
157
  lhsInfo.role = "pipe-lhs" /* RoleInParent.PipeLhs */;
158
158
  rhsInfo.role = "pipe-rhs" /* RoleInParent.PipeRhs */;
159
159
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.foldAst = void 0;
3
+ exports.foldAst = foldAst;
4
4
  const stateful_fold_1 = require("./stateful-fold");
5
5
  const down = () => undefined;
6
6
  /**
@@ -16,5 +16,4 @@ function foldAst(ast, folds) {
16
16
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17
17
  return (0, stateful_fold_1.foldAstStateful)(ast, undefined, statefulFolds);
18
18
  }
19
- exports.foldAst = foldAst;
20
19
  //# sourceMappingURL=fold.js.map
@@ -1,8 +1,13 @@
1
1
  import type { AstIdMap } from './decorate';
2
+ import type { DataflowGraph } from '../../../../../dataflow/graph/graph';
2
3
  /** The type of the id assigned to each node. Branded to avoid problematic usages with other string or numeric types. */
3
4
  export type NodeId<T extends string | number = string | number> = T & {
4
5
  __brand?: 'node-id';
5
6
  };
6
7
  /** used so that we do not have to store strings for the default numeric ids */
7
8
  export declare function normalizeIdToNumberIfPossible(id: NodeId): NodeId;
9
+ /**
10
+ * Recovers the lexeme of a node from its id in the idmap.
11
+ */
8
12
  export declare function recoverName(id: NodeId, idMap?: AstIdMap): string | undefined;
13
+ export declare function recoverContent(id: NodeId, graph: DataflowGraph): string | undefined;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recoverName = exports.normalizeIdToNumberIfPossible = void 0;
3
+ exports.normalizeIdToNumberIfPossible = normalizeIdToNumberIfPossible;
4
+ exports.recoverName = recoverName;
5
+ exports.recoverContent = recoverContent;
6
+ const vertex_1 = require("../../../../../dataflow/graph/vertex");
7
+ const retriever_1 = require("../../../../retriever");
4
8
  const numIdRegex = /^\d+$/;
5
9
  /** used so that we do not have to store strings for the default numeric ids */
6
10
  function normalizeIdToNumberIfPossible(id) {
@@ -10,9 +14,28 @@ function normalizeIdToNumberIfPossible(id) {
10
14
  }
11
15
  return id;
12
16
  }
13
- exports.normalizeIdToNumberIfPossible = normalizeIdToNumberIfPossible;
17
+ /**
18
+ * Recovers the lexeme of a node from its id in the idmap.
19
+ */
14
20
  function recoverName(id, idMap) {
15
21
  return idMap?.get(id)?.lexeme;
16
22
  }
17
- exports.recoverName = recoverName;
23
+ function recoverContent(id, graph) {
24
+ const vertex = graph.getVertex(id);
25
+ if (vertex === undefined) {
26
+ return undefined;
27
+ }
28
+ if (vertex.tag === vertex_1.VertexType.FunctionCall && vertex.name) {
29
+ return vertex.name;
30
+ }
31
+ const node = graph.idMap?.get(id);
32
+ if (node === undefined) {
33
+ return undefined;
34
+ }
35
+ const lexeme = node.lexeme ?? node.info.fullLexeme ?? '';
36
+ if (vertex.tag === vertex_1.VertexType.Use) {
37
+ return (0, retriever_1.removeRQuotes)(lexeme);
38
+ }
39
+ return lexeme;
40
+ }
18
41
  //# sourceMappingURL=node-id.js.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rolesOfParents = void 0;
3
+ exports.rolesOfParents = rolesOfParents;
4
4
  /**
5
5
  * Returns the roles of the parents of the given node, starting with the parent-role of the node itself.
6
6
  */
@@ -13,5 +13,4 @@ function rolesOfParents(node, idMap) {
13
13
  }
14
14
  return roles;
15
15
  }
16
- exports.rolesOfParents = rolesOfParents;
17
16
  //# sourceMappingURL=role.js.map
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.foldAstStateful = void 0;
3
+ exports.foldAstStateful = foldAstStateful;
4
4
  const assert_1 = require("../../../../../util/assert");
5
+ const type_1 = require("../type");
5
6
  const r_function_call_1 = require("../nodes/r-function-call");
6
7
  /**
7
8
  * Folds in old functional-fashion over the AST structure but allowing for a down function which can pass context to child nodes.
@@ -10,51 +11,50 @@ function foldAstStateful(ast, down, folds) {
10
11
  const type = ast.type;
11
12
  down = folds.down(ast, down);
12
13
  switch (type) {
13
- case "RNumber" /* RType.Number */:
14
+ case type_1.RType.Number:
14
15
  return folds.foldNumber(ast, down);
15
- case "RString" /* RType.String */:
16
+ case type_1.RType.String:
16
17
  return folds.foldString(ast, down);
17
- case "RLogical" /* RType.Logical */:
18
+ case type_1.RType.Logical:
18
19
  return folds.foldLogical(ast, down);
19
- case "RSymbol" /* RType.Symbol */:
20
+ case type_1.RType.Symbol:
20
21
  return folds.foldSymbol(ast, down);
21
- case "RComment" /* RType.Comment */:
22
+ case type_1.RType.Comment:
22
23
  return folds.other.foldComment(ast, down);
23
- case "RLineDirective" /* RType.LineDirective */:
24
+ case type_1.RType.LineDirective:
24
25
  return folds.other.foldLineDirective(ast, down);
25
- case "RPipe" /* RType.Pipe */:
26
+ case type_1.RType.Pipe:
26
27
  return folds.foldPipe(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
27
- case "RBinaryOp" /* RType.BinaryOp */:
28
+ case type_1.RType.BinaryOp:
28
29
  return folds.foldBinaryOp(ast, foldAstStateful(ast.lhs, down, folds), foldAstStateful(ast.rhs, down, folds), down);
29
- case "RUnaryOp" /* RType.UnaryOp */:
30
+ case type_1.RType.UnaryOp:
30
31
  return folds.foldUnaryOp(ast, foldAstStateful(ast.operand, down, folds), down);
31
- case "RAccess" /* RType.Access */:
32
+ case type_1.RType.Access:
32
33
  return folds.foldAccess(ast, foldAstStateful(ast.accessed, down, folds), ast.access.map(access => access === r_function_call_1.EmptyArgument ? r_function_call_1.EmptyArgument : foldAstStateful(access, down, folds)), down);
33
- case "RForLoop" /* RType.ForLoop */:
34
+ case type_1.RType.ForLoop:
34
35
  return folds.loop.foldFor(ast, foldAstStateful(ast.variable, down, folds), foldAstStateful(ast.vector, down, folds), foldAstStateful(ast.body, down, folds), down);
35
- case "RWhileLoop" /* RType.WhileLoop */:
36
+ case type_1.RType.WhileLoop:
36
37
  return folds.loop.foldWhile(ast, foldAstStateful(ast.condition, down, folds), foldAstStateful(ast.body, down, folds), down);
37
- case "RRepeatLoop" /* RType.RepeatLoop */:
38
+ case type_1.RType.RepeatLoop:
38
39
  return folds.loop.foldRepeat(ast, foldAstStateful(ast.body, down, folds), down);
39
- case "RFunctionCall" /* RType.FunctionCall */:
40
+ case type_1.RType.FunctionCall:
40
41
  return folds.functions.foldFunctionCall(ast, foldAstStateful(ast.named ? ast.functionName : ast.calledFunction, down, folds), ast.arguments.map(param => param === r_function_call_1.EmptyArgument ? param : foldAstStateful(param, down, folds)), down);
41
- case "RFunctionDefinition" /* RType.FunctionDefinition */:
42
+ case type_1.RType.FunctionDefinition:
42
43
  return folds.functions.foldFunctionDefinition(ast, ast.parameters.map(param => foldAstStateful(param, down, folds)), foldAstStateful(ast.body, down, folds), down);
43
- case "RParameter" /* RType.Parameter */:
44
+ case type_1.RType.Parameter:
44
45
  return folds.functions.foldParameter(ast, foldAstStateful(ast.name, down, folds), ast.defaultValue ? foldAstStateful(ast.defaultValue, down, folds) : undefined, down);
45
- case "RArgument" /* RType.Argument */:
46
+ case type_1.RType.Argument:
46
47
  return folds.functions.foldArgument(ast, ast.name ? foldAstStateful(ast.name, down, folds) : undefined, ast.value ? foldAstStateful(ast.value, down, folds) : undefined, down);
47
- case "RNext" /* RType.Next */:
48
+ case type_1.RType.Next:
48
49
  return folds.loop.foldNext(ast, down);
49
- case "RBreak" /* RType.Break */:
50
+ case type_1.RType.Break:
50
51
  return folds.loop.foldBreak(ast, down);
51
- case "RIfThenElse" /* RType.IfThenElse */:
52
+ case type_1.RType.IfThenElse:
52
53
  return folds.foldIfThenElse(ast, foldAstStateful(ast.condition, down, folds), foldAstStateful(ast.then, down, folds), ast.otherwise === undefined ? undefined : foldAstStateful(ast.otherwise, down, folds), down);
53
- case "RExpressionList" /* RType.ExpressionList */:
54
+ case type_1.RType.ExpressionList:
54
55
  return folds.foldExprList(ast, ast.grouping ? [foldAstStateful(ast.grouping[0], down, folds), foldAstStateful(ast.grouping[1], down, folds)] : undefined, ast.children.map(expr => foldAstStateful(expr, down, folds)), down);
55
56
  default:
56
57
  (0, assert_1.assertUnreachable)(type);
57
58
  }
58
59
  }
59
- exports.foldAstStateful = foldAstStateful;
60
60
  //# sourceMappingURL=stateful-fold.js.map
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.visitAst = void 0;
3
+ exports.visitAst = visitAst;
4
+ const type_1 = require("../type");
4
5
  const assert_1 = require("../../../../../util/assert");
5
6
  const r_function_call_1 = require("../nodes/r-function-call");
6
7
  // capsuled as a class to avoid passing onExit and onEnter on *each* visit call
@@ -18,65 +19,65 @@ class NodeVisitor {
18
19
  /* let the type system know that the type does not change */
19
20
  const type = node.type;
20
21
  switch (type) {
21
- case "RFunctionCall" /* RType.FunctionCall */:
22
+ case type_1.RType.FunctionCall:
22
23
  this.visitSingle(node.named ? node.functionName : node.calledFunction);
23
24
  this.visit(node.arguments);
24
25
  break;
25
- case "RFunctionDefinition" /* RType.FunctionDefinition */:
26
+ case type_1.RType.FunctionDefinition:
26
27
  this.visit(node.parameters);
27
28
  this.visitSingle(node.body);
28
29
  break;
29
- case "RExpressionList" /* RType.ExpressionList */:
30
+ case type_1.RType.ExpressionList:
30
31
  this.visit(node.grouping);
31
32
  this.visit(node.children);
32
33
  break;
33
- case "RForLoop" /* RType.ForLoop */:
34
+ case type_1.RType.ForLoop:
34
35
  this.visitSingle(node.variable);
35
36
  this.visitSingle(node.vector);
36
37
  this.visitSingle(node.body);
37
38
  break;
38
- case "RWhileLoop" /* RType.WhileLoop */:
39
+ case type_1.RType.WhileLoop:
39
40
  this.visitSingle(node.condition);
40
41
  this.visitSingle(node.body);
41
42
  break;
42
- case "RRepeatLoop" /* RType.RepeatLoop */:
43
+ case type_1.RType.RepeatLoop:
43
44
  this.visitSingle(node.body);
44
45
  break;
45
- case "RIfThenElse" /* RType.IfThenElse */:
46
+ case type_1.RType.IfThenElse:
46
47
  this.visitSingle(node.condition);
47
48
  this.visitSingle(node.then);
48
49
  this.visit(node.otherwise);
49
50
  break;
50
- case "RBinaryOp" /* RType.BinaryOp */:
51
- case "RPipe" /* RType.Pipe */:
51
+ case type_1.RType.BinaryOp:
52
+ case type_1.RType.Pipe:
52
53
  this.visitSingle(node.lhs);
53
54
  this.visitSingle(node.rhs);
54
55
  break;
55
- case "RUnaryOp" /* RType.UnaryOp */:
56
+ case type_1.RType.UnaryOp:
56
57
  this.visitSingle(node.operand);
57
58
  break;
58
- case "RParameter" /* RType.Parameter */:
59
+ case type_1.RType.Parameter:
59
60
  this.visitSingle(node.name);
60
61
  this.visit(node.defaultValue);
61
62
  break;
62
- case "RArgument" /* RType.Argument */:
63
+ case type_1.RType.Argument:
63
64
  this.visit(node.name);
64
65
  this.visit(node.value);
65
66
  break;
66
- case "RAccess" /* RType.Access */:
67
+ case type_1.RType.Access:
67
68
  this.visitSingle(node.accessed);
68
69
  if (node.operator === '[' || node.operator === '[[') {
69
70
  this.visit(node.access);
70
71
  }
71
72
  break;
72
- case "RSymbol" /* RType.Symbol */:
73
- case "RLogical" /* RType.Logical */:
74
- case "RNumber" /* RType.Number */:
75
- case "RString" /* RType.String */:
76
- case "RComment" /* RType.Comment */:
77
- case "RBreak" /* RType.Break */:
78
- case "RNext" /* RType.Next */:
79
- case "RLineDirective" /* RType.LineDirective */:
73
+ case type_1.RType.Symbol:
74
+ case type_1.RType.Logical:
75
+ case type_1.RType.Number:
76
+ case type_1.RType.String:
77
+ case type_1.RType.Comment:
78
+ case type_1.RType.Break:
79
+ case type_1.RType.Next:
80
+ case type_1.RType.LineDirective:
80
81
  // leafs
81
82
  break;
82
83
  default:
@@ -108,5 +109,4 @@ class NodeVisitor {
108
109
  function visitAst(nodes, onVisit, onExit) {
109
110
  return new NodeVisitor(onVisit, onExit).visit(nodes);
110
111
  }
111
- exports.visitAst = visitAst;
112
112
  //# sourceMappingURL=visitor.js.map
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @see RType
7
7
  */
8
- export declare const enum RawRType {
8
+ export declare enum RawRType {
9
9
  /** T1 */
10
10
  NullConst = "NULL_CONST",
11
11
  /** T2 */
@@ -155,7 +155,7 @@ export declare const enum RawRType {
155
155
  *
156
156
  * @see RawRType
157
157
  */
158
- export declare const enum RType {
158
+ export declare enum RType {
159
159
  /** {@link RAccess} */
160
160
  Access = "RAccess",
161
161
  /** {@link RArgument} */