@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
@@ -16,7 +16,7 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
16
16
  readonly humanReadableName: "normalize";
17
17
  readonly description: "Normalize the AST to flowR's AST";
18
18
  readonly processor: (results: {
19
- parse?: string | undefined;
19
+ parse?: string;
20
20
  }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
21
21
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
22
22
  readonly printer: {
@@ -31,9 +31,9 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
31
31
  } | {
32
32
  readonly humanReadableName: "dataflow";
33
33
  readonly processor: (results: {
34
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
34
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
35
35
  }, input: {
36
- request?: import("../../../r-bridge/retriever").RParseRequests | undefined;
36
+ request?: import("../../../r-bridge/retriever").RParseRequests;
37
37
  }) => import("../../../dataflow/info").DataflowInformation;
38
38
  readonly requiredInput: {};
39
39
  readonly name: "dataflow";
@@ -52,8 +52,8 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
52
52
  readonly humanReadableName: "static slice";
53
53
  readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
54
54
  readonly processor: (results: {
55
- dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
56
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
55
+ dataflow?: import("../../../dataflow/info").DataflowInformation;
56
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
57
57
  }, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
58
58
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
59
59
  readonly printer: {
@@ -66,8 +66,8 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
66
66
  readonly humanReadableName: "static code reconstruction";
67
67
  readonly description: "Reconstruct R code from the static slice";
68
68
  readonly processor: (results: {
69
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
70
- slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
69
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
70
+ slice?: import("../../../slicing/static/slicer-types").SliceResult;
71
71
  }, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
72
72
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
73
73
  readonly printer: {
@@ -94,7 +94,7 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
94
94
  readonly humanReadableName: "normalize";
95
95
  readonly description: "Normalize the AST to flowR's AST";
96
96
  readonly processor: (results: {
97
- parse?: string | undefined;
97
+ parse?: string;
98
98
  }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
99
99
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
100
100
  readonly printer: {
@@ -109,9 +109,9 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
109
109
  } | {
110
110
  readonly humanReadableName: "dataflow";
111
111
  readonly processor: (results: {
112
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
112
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
113
113
  }, input: {
114
- request?: import("../../../r-bridge/retriever").RParseRequests | undefined;
114
+ request?: import("../../../r-bridge/retriever").RParseRequests;
115
115
  }) => import("../../../dataflow/info").DataflowInformation;
116
116
  readonly requiredInput: {};
117
117
  readonly name: "dataflow";
@@ -130,8 +130,8 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
130
130
  readonly humanReadableName: "static slice";
131
131
  readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
132
132
  readonly processor: (results: {
133
- dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
134
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
133
+ dataflow?: import("../../../dataflow/info").DataflowInformation;
134
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
135
135
  }, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
136
136
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
137
137
  readonly printer: {
@@ -144,8 +144,8 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
144
144
  readonly humanReadableName: "static code reconstruction";
145
145
  readonly description: "Reconstruct R code from the static slice";
146
146
  readonly processor: (results: {
147
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
148
- slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
147
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
148
+ slice?: import("../../../slicing/static/slicer-types").SliceResult;
149
149
  }, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
150
150
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
151
151
  readonly printer: {
@@ -172,7 +172,7 @@ export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
172
172
  readonly humanReadableName: "normalize";
173
173
  readonly description: "Normalize the AST to flowR's AST";
174
174
  readonly processor: (results: {
175
- parse?: string | undefined;
175
+ parse?: string;
176
176
  }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
177
177
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
178
178
  readonly printer: {
@@ -187,9 +187,9 @@ export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
187
187
  } | {
188
188
  readonly humanReadableName: "dataflow";
189
189
  readonly processor: (results: {
190
- normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>> | undefined;
190
+ normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
191
191
  }, input: {
192
- request?: import("../../../r-bridge/retriever").RParseRequests | undefined;
192
+ request?: import("../../../r-bridge/retriever").RParseRequests;
193
193
  }) => import("../../../dataflow/info").DataflowInformation;
194
194
  readonly requiredInput: {};
195
195
  readonly name: "dataflow";
@@ -222,7 +222,7 @@ export declare const DEFAULT_NORMALIZE_PIPELINE: import("./pipeline").Pipeline<{
222
222
  readonly humanReadableName: "normalize";
223
223
  readonly description: "Normalize the AST to flowR's AST";
224
224
  readonly processor: (results: {
225
- parse?: string | undefined;
225
+ parse?: string;
226
226
  }, input: Partial<import("../all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
227
227
  readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
228
228
  readonly printer: {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPipeline = void 0;
3
+ exports.createPipeline = createPipeline;
4
4
  const create_pipeline_1 = require("./create-pipeline");
5
5
  /**
6
6
  * Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
@@ -24,5 +24,4 @@ const create_pipeline_1 = require("./create-pipeline");
24
24
  function createPipeline(...steps) {
25
25
  return (0, create_pipeline_1.verifyAndBuildPipeline)(steps);
26
26
  }
27
- exports.createPipeline = createPipeline;
28
27
  //# sourceMappingURL=pipeline.js.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.appendEnvironment = void 0;
3
+ exports.appendEnvironment = appendEnvironment;
4
4
  const assert_1 = require("../../util/assert");
5
5
  const environment_1 = require("./environment");
6
6
  function uniqueMergeValues(old, value) {
@@ -43,5 +43,4 @@ function appendEnvironment(base, next) {
43
43
  level: base.level,
44
44
  };
45
45
  }
46
- exports.appendEnvironment = appendEnvironment;
47
46
  //# sourceMappingURL=append.js.map
@@ -0,0 +1,47 @@
1
+ import type { BuiltInMappingName, ConfigOfBuiltInMappingName } from './built-in';
2
+ import type { Identifier } from './identifier';
3
+ export interface BaseBuiltInDefinition {
4
+ /** The type of the built-in configuration */
5
+ readonly type: string;
6
+ /** The function name to define to the given configuration */
7
+ readonly names: readonly Identifier[];
8
+ /** Should we assume that the value is a primitive? */
9
+ readonly assumePrimitive?: boolean;
10
+ }
11
+ /**
12
+ * Define a built-in constant (like `NULL` or `TRUE`) and the TS value it should have
13
+ *
14
+ * @template Value - The type of the constant value
15
+ */
16
+ export interface BuiltInConstantDefinition<Value> extends BaseBuiltInDefinition {
17
+ readonly type: 'constant';
18
+ /** The constant value to define */
19
+ readonly value: Value;
20
+ }
21
+ /**
22
+ * Define a built-in function (like `print` or `c`) and the processor to use.
23
+ *
24
+ * @template BuiltInProcessor - The processor to use for this function
25
+ */
26
+ export interface BuiltInFunctionDefinition<BuiltInProcessor extends BuiltInMappingName> extends BaseBuiltInDefinition {
27
+ readonly type: 'function';
28
+ readonly processor: BuiltInProcessor;
29
+ readonly config: ConfigOfBuiltInMappingName<BuiltInProcessor>;
30
+ }
31
+ /**
32
+ * Define a built-in replacement (like `[` or `$`) and the processor to use.
33
+ * This is a convenience for manually combined function calls with `builtin:replacement`.
34
+ */
35
+ export interface BuiltInReplacementDefinition extends BaseBuiltInDefinition {
36
+ readonly type: 'replacement';
37
+ readonly suffixes: readonly ('<<-' | '<-')[];
38
+ }
39
+ export type BuiltInDefinition = BuiltInConstantDefinition<any> | BuiltInFunctionDefinition<any> | BuiltInReplacementDefinition;
40
+ /**
41
+ * @see DefaultBuiltinConfig
42
+ */
43
+ export type BuiltInDefinitions = readonly BuiltInDefinition[];
44
+ export declare function registerBuiltInFunctions<BuiltInProcessor extends BuiltInMappingName>({ names, processor, config, assumePrimitive }: BuiltInFunctionDefinition<BuiltInProcessor>): void;
45
+ export declare function registerReplacementFunctions({ names, suffixes, assumePrimitive }: BuiltInReplacementDefinition): void;
46
+ export declare function registerBuiltInDefinition(definition: BuiltInDefinition): void;
47
+ export declare function registerBuiltInDefinitions(definitions: BuiltInDefinitions): void;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerBuiltInFunctions = registerBuiltInFunctions;
4
+ exports.registerReplacementFunctions = registerReplacementFunctions;
5
+ exports.registerBuiltInDefinition = registerBuiltInDefinition;
6
+ exports.registerBuiltInDefinitions = registerBuiltInDefinitions;
7
+ const built_in_1 = require("./built-in");
8
+ const identifier_1 = require("./identifier");
9
+ const assert_1 = require("../../util/assert");
10
+ function registerBuiltInConstant({ names, value, assumePrimitive }) {
11
+ for (const name of names) {
12
+ const d = [{
13
+ type: identifier_1.ReferenceType.BuiltInConstant,
14
+ definedAt: built_in_1.BuiltIn,
15
+ controlDependencies: undefined,
16
+ value,
17
+ name,
18
+ nodeId: built_in_1.BuiltIn
19
+ }];
20
+ built_in_1.BuiltInMemory.set(name, d);
21
+ if (assumePrimitive) {
22
+ built_in_1.EmptyBuiltInMemory.set(name, d);
23
+ }
24
+ }
25
+ }
26
+ function registerBuiltInFunctions({ names, processor, config, assumePrimitive }) {
27
+ const mappedProcessor = built_in_1.BuiltInProcessorMapper[processor];
28
+ (0, assert_1.guard)(mappedProcessor !== undefined, () => `Processor for ${processor} is undefined! Please pass a valid builtin name ${JSON.stringify(Object.keys(built_in_1.BuiltInProcessorMapper))}!`);
29
+ for (const name of names) {
30
+ (0, assert_1.guard)(processor !== undefined, `Processor for ${name} is undefined, maybe you have an import loop? You may run 'npm run detect-circular-deps' - although by far not all are bad`);
31
+ const d = [{
32
+ type: identifier_1.ReferenceType.BuiltInFunction,
33
+ definedAt: built_in_1.BuiltIn,
34
+ controlDependencies: undefined,
35
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument */
36
+ processor: (name, args, rootId, data) => mappedProcessor(name, args, rootId, data, config),
37
+ name,
38
+ nodeId: built_in_1.BuiltIn
39
+ }];
40
+ built_in_1.BuiltInMemory.set(name, d);
41
+ if (assumePrimitive) {
42
+ built_in_1.EmptyBuiltInMemory.set(name, d);
43
+ }
44
+ }
45
+ }
46
+ /* registers all combinations of replacements */
47
+ function registerReplacementFunctions({ names, suffixes, assumePrimitive }) {
48
+ const replacer = built_in_1.BuiltInProcessorMapper['builtin:replacement'];
49
+ (0, assert_1.guard)(replacer !== undefined, () => 'Processor for builtin:replacement is undefined!');
50
+ for (const assignment of names) {
51
+ for (const suffix of suffixes) {
52
+ const effectiveName = `${assignment}${suffix}`;
53
+ const d = [{
54
+ type: identifier_1.ReferenceType.BuiltInFunction,
55
+ definedAt: built_in_1.BuiltIn,
56
+ processor: (name, args, rootId, data) => replacer(name, args, rootId, data, { makeMaybe: true, assignmentOperator: suffix }),
57
+ name: effectiveName,
58
+ controlDependencies: undefined,
59
+ nodeId: built_in_1.BuiltIn
60
+ }];
61
+ built_in_1.BuiltInMemory.set(effectiveName, d);
62
+ if (assumePrimitive) {
63
+ built_in_1.EmptyBuiltInMemory.set(effectiveName, d);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ function registerBuiltInDefinition(definition) {
69
+ switch (definition.type) {
70
+ case 'constant':
71
+ return registerBuiltInConstant(definition);
72
+ case 'function':
73
+ return registerBuiltInFunctions(definition);
74
+ case 'replacement':
75
+ return registerReplacementFunctions(definition);
76
+ }
77
+ }
78
+ function registerBuiltInDefinitions(definitions) {
79
+ for (const definition of definitions) {
80
+ registerBuiltInDefinition(definition);
81
+ }
82
+ }
83
+ //# sourceMappingURL=built-in-config.js.map
@@ -1,26 +1,69 @@
1
1
  import type { DataflowProcessorInformation } from '../processor';
2
- import type { DataflowInformation } from '../info';
2
+ import type { ExitPointType, DataflowInformation } from '../info';
3
+ import { processAccess } from '../internal/process/functions/call/built-in/built-in-access';
4
+ import { processIfThenElse } from '../internal/process/functions/call/built-in/built-in-if-then-else';
5
+ import { processAssignment } from '../internal/process/functions/call/built-in/built-in-assignment';
6
+ import { processSpecialBinOp } from '../internal/process/functions/call/built-in/built-in-special-bin-op';
7
+ import { processPipe } from '../internal/process/functions/call/built-in/built-in-pipe';
8
+ import { processForLoop } from '../internal/process/functions/call/built-in/built-in-for-loop';
9
+ import { processRepeatLoop } from '../internal/process/functions/call/built-in/built-in-repeat-loop';
10
+ import { processWhileLoop } from '../internal/process/functions/call/built-in/built-in-while-loop';
3
11
  import type { Identifier, IdentifierDefinition, IdentifierReference } from './identifier';
12
+ import { ReferenceType } from './identifier';
13
+ import { processReplacementFunction } from '../internal/process/functions/call/built-in/built-in-replacement';
14
+ import { processQuote } from '../internal/process/functions/call/built-in/built-in-quote';
15
+ import { processFunctionDefinition } from '../internal/process/functions/call/built-in/built-in-function-definition';
16
+ import { processExpressionList } from '../internal/process/functions/call/built-in/built-in-expression-list';
17
+ import { processGet } from '../internal/process/functions/call/built-in/built-in-get';
4
18
  import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
5
19
  import type { RFunctionArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
6
20
  import type { RSymbol } from '../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
7
21
  import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
22
+ import { processLibrary } from '../internal/process/functions/call/built-in/built-in-library';
23
+ import { processSourceCall } from '../internal/process/functions/call/built-in/built-in-source';
24
+ import type { ForceArguments } from '../internal/process/functions/call/common';
25
+ import { processApply } from '../internal/process/functions/call/built-in/built-in-apply';
8
26
  export declare const BuiltIn = "built-in";
9
27
  export type BuiltInIdentifierProcessor = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>) => DataflowInformation;
10
28
  export type BuiltInIdentifierProcessorWithConfig<Config> = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: Config) => DataflowInformation;
11
29
  export interface BuiltInIdentifierDefinition extends IdentifierReference {
12
- kind: 'built-in-function';
30
+ type: ReferenceType.BuiltInFunction;
13
31
  definedAt: typeof BuiltIn;
14
32
  processor: BuiltInIdentifierProcessor;
15
33
  }
16
34
  export interface BuiltInIdentifierConstant<T = unknown> extends IdentifierReference {
17
- kind: 'built-in-value';
35
+ type: ReferenceType.BuiltInConstant;
18
36
  definedAt: typeof BuiltIn;
19
37
  value: T;
20
38
  }
39
+ declare function defaultBuiltInProcessor<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: {
40
+ returnsNthArgument?: number | 'last';
41
+ cfg?: ExitPointType;
42
+ readAllArguments?: boolean;
43
+ hasUnknownSideEffects?: boolean;
44
+ } & ForceArguments): DataflowInformation;
21
45
  export declare function registerBuiltInFunctions<Config, Proc extends BuiltInIdentifierProcessorWithConfig<Config>>(both: boolean, names: readonly Identifier[], processor: Proc, config: Config): void;
22
- export declare function registerReplacementFunctions(standardConfig: {
23
- makeMaybe?: boolean;
24
- }, assignments: readonly ('<-' | '<<-')[], ...prefixes: readonly Identifier[]): void;
46
+ export declare const BuiltInProcessorMapper: {
47
+ readonly 'builtin:default': typeof defaultBuiltInProcessor;
48
+ readonly 'builtin:apply': typeof processApply;
49
+ readonly 'builtin:expression-list': typeof processExpressionList;
50
+ readonly 'builtin:source': typeof processSourceCall;
51
+ readonly 'builtin:access': typeof processAccess;
52
+ readonly 'builtin:if-then-else': typeof processIfThenElse;
53
+ readonly 'builtin:get': typeof processGet;
54
+ readonly 'builtin:library': typeof processLibrary;
55
+ readonly 'builtin:assignment': typeof processAssignment;
56
+ readonly 'builtin:special-bin-op': typeof processSpecialBinOp;
57
+ readonly 'builtin:pipe': typeof processPipe;
58
+ readonly 'builtin:function-definition': typeof processFunctionDefinition;
59
+ readonly 'builtin:quote': typeof processQuote;
60
+ readonly 'builtin:for-loop': typeof processForLoop;
61
+ readonly 'builtin:repeat-loop': typeof processRepeatLoop;
62
+ readonly 'builtin:while-loop': typeof processWhileLoop;
63
+ readonly 'builtin:replacement': typeof processReplacementFunction;
64
+ };
65
+ export type BuiltInMappingName = keyof typeof BuiltInProcessorMapper;
66
+ export type ConfigOfBuiltInMappingName<N extends BuiltInMappingName> = Parameters<typeof BuiltInProcessorMapper[N]>[4];
25
67
  export declare const BuiltInMemory: Map<Identifier, IdentifierDefinition[]>;
26
68
  export declare const EmptyBuiltInMemory: Map<Identifier, IdentifierDefinition[]>;
69
+ export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmptyBuiltInMemory = exports.BuiltInMemory = exports.registerReplacementFunctions = exports.registerBuiltInFunctions = exports.BuiltIn = void 0;
3
+ exports.EmptyBuiltInMemory = exports.BuiltInMemory = exports.BuiltInProcessorMapper = exports.BuiltIn = void 0;
4
+ exports.registerBuiltInFunctions = registerBuiltInFunctions;
4
5
  const known_call_handling_1 = require("../internal/process/functions/call/known-call-handling");
5
6
  const built_in_access_1 = require("../internal/process/functions/call/built-in/built-in-access");
6
7
  const built_in_if_then_else_1 = require("../internal/process/functions/call/built-in/built-in-if-then-else");
@@ -10,28 +11,32 @@ const built_in_pipe_1 = require("../internal/process/functions/call/built-in/bui
10
11
  const built_in_for_loop_1 = require("../internal/process/functions/call/built-in/built-in-for-loop");
11
12
  const built_in_repeat_loop_1 = require("../internal/process/functions/call/built-in/built-in-repeat-loop");
12
13
  const built_in_while_loop_1 = require("../internal/process/functions/call/built-in/built-in-while-loop");
14
+ const identifier_1 = require("./identifier");
13
15
  const assert_1 = require("../../util/assert");
14
16
  const built_in_replacement_1 = require("../internal/process/functions/call/built-in/built-in-replacement");
15
17
  const built_in_quote_1 = require("../internal/process/functions/call/built-in/built-in-quote");
16
18
  const built_in_function_definition_1 = require("../internal/process/functions/call/built-in/built-in-function-definition");
17
19
  const built_in_expression_list_1 = require("../internal/process/functions/call/built-in/built-in-expression-list");
18
20
  const built_in_get_1 = require("../internal/process/functions/call/built-in/built-in-get");
21
+ const edge_1 = require("../graph/edge");
19
22
  const built_in_library_1 = require("../internal/process/functions/call/built-in/built-in-library");
20
23
  const built_in_source_1 = require("../internal/process/functions/call/built-in/built-in-source");
21
24
  const built_in_apply_1 = require("../internal/process/functions/call/built-in/built-in-apply");
25
+ const built_in_config_1 = require("./built-in-config");
26
+ const default_builtin_config_1 = require("./default-builtin-config");
22
27
  exports.BuiltIn = 'built-in';
23
28
  function defaultBuiltInProcessor(name, args, rootId, data, config) {
24
29
  const { information: res, processedArguments } = (0, known_call_handling_1.processKnownFunctionCall)({ name, args, rootId, data, forceArgs: config.forceArgs });
25
30
  if (config.returnsNthArgument !== undefined) {
26
31
  const arg = config.returnsNthArgument === 'last' ? processedArguments[args.length - 1] : processedArguments[config.returnsNthArgument];
27
32
  if (arg !== undefined) {
28
- res.graph.addEdge(rootId, arg.entryPoint, { type: 8 /* EdgeType.Returns */ });
33
+ res.graph.addEdge(rootId, arg.entryPoint, edge_1.EdgeType.Returns);
29
34
  }
30
35
  }
31
36
  if (config.readAllArguments) {
32
37
  for (const arg of processedArguments) {
33
38
  if (arg) {
34
- res.graph.addEdge(rootId, arg.entryPoint, { type: 1 /* EdgeType.Reads */ });
39
+ res.graph.addEdge(rootId, arg.entryPoint, edge_1.EdgeType.Reads);
35
40
  }
36
41
  }
37
42
  }
@@ -46,9 +51,8 @@ function defaultBuiltInProcessor(name, args, rootId, data, config) {
46
51
  function registerBuiltInFunctions(both, names, processor, config) {
47
52
  for (const name of names) {
48
53
  (0, assert_1.guard)(processor !== undefined, `Processor for ${name} is undefined, maybe you have an import loop? You may run 'npm run detect-circular-deps' - although by far not all are bad`);
49
- (0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
50
54
  const d = [{
51
- kind: 'built-in-function',
55
+ type: identifier_1.ReferenceType.BuiltInFunction,
52
56
  definedAt: exports.BuiltIn,
53
57
  controlDependencies: undefined,
54
58
  processor: (name, args, rootId, data) => processor(name, args, rootId, data, config),
@@ -61,98 +65,26 @@ function registerBuiltInFunctions(both, names, processor, config) {
61
65
  }
62
66
  }
63
67
  }
64
- exports.registerBuiltInFunctions = registerBuiltInFunctions;
65
- /* registers all combinations of replacements */
66
- function registerReplacementFunctions(standardConfig, assignments, ...prefixes) {
67
- for (const assignment of assignments) {
68
- for (const prefix of prefixes) {
69
- const effectiveName = `${prefix}${assignment}`;
70
- (0, assert_1.guard)(!exports.BuiltInMemory.has(effectiveName), `Built-in ${effectiveName} already defined`);
71
- const d = [{
72
- kind: 'built-in-function',
73
- definedAt: exports.BuiltIn,
74
- processor: (name, args, rootId, data) => (0, built_in_replacement_1.processReplacementFunction)(name, args, rootId, data, { ...standardConfig, assignmentOperator: assignment }),
75
- name: effectiveName,
76
- controlDependencies: undefined,
77
- nodeId: exports.BuiltIn
78
- }];
79
- exports.BuiltInMemory.set(effectiveName, d);
80
- exports.EmptyBuiltInMemory.set(effectiveName, d);
81
- }
82
- }
83
- }
84
- exports.registerReplacementFunctions = registerReplacementFunctions;
85
- function registerSimpleFunctions(...names) {
86
- registerBuiltInFunctions(false, names, defaultBuiltInProcessor, { readAllArguments: true });
87
- }
88
- function registerBuiltInConstant(both, name, value) {
89
- (0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
90
- const d = [{
91
- kind: 'built-in-value',
92
- definedAt: exports.BuiltIn,
93
- controlDependencies: undefined,
94
- value,
95
- name,
96
- nodeId: exports.BuiltIn
97
- }];
98
- exports.BuiltInMemory.set(name, d);
99
- if (both) {
100
- exports.EmptyBuiltInMemory.set(name, d);
101
- }
102
- }
68
+ exports.BuiltInProcessorMapper = {
69
+ 'builtin:default': defaultBuiltInProcessor,
70
+ 'builtin:apply': built_in_apply_1.processApply,
71
+ 'builtin:expression-list': built_in_expression_list_1.processExpressionList,
72
+ 'builtin:source': built_in_source_1.processSourceCall,
73
+ 'builtin:access': built_in_access_1.processAccess,
74
+ 'builtin:if-then-else': built_in_if_then_else_1.processIfThenElse,
75
+ 'builtin:get': built_in_get_1.processGet,
76
+ 'builtin:library': built_in_library_1.processLibrary,
77
+ 'builtin:assignment': built_in_assignment_1.processAssignment,
78
+ 'builtin:special-bin-op': built_in_special_bin_op_1.processSpecialBinOp,
79
+ 'builtin:pipe': built_in_pipe_1.processPipe,
80
+ 'builtin:function-definition': built_in_function_definition_1.processFunctionDefinition,
81
+ 'builtin:quote': built_in_quote_1.processQuote,
82
+ 'builtin:for-loop': built_in_for_loop_1.processForLoop,
83
+ 'builtin:repeat-loop': built_in_repeat_loop_1.processRepeatLoop,
84
+ 'builtin:while-loop': built_in_while_loop_1.processWhileLoop,
85
+ 'builtin:replacement': built_in_replacement_1.processReplacementFunction,
86
+ };
103
87
  exports.BuiltInMemory = new Map();
104
88
  exports.EmptyBuiltInMemory = new Map();
105
- registerBuiltInConstant(true, 'NULL', null);
106
- registerBuiltInConstant(true, 'NA', null);
107
- registerBuiltInConstant(true, 'TRUE', true);
108
- registerBuiltInConstant(true, 'T', true);
109
- registerBuiltInConstant(true, 'FALSE', false);
110
- registerBuiltInConstant(true, 'F', false);
111
- registerSimpleFunctions('~', '+', '-', '*', '/', '^', '!', '?', '**', '==', '!=', '>', '<', '>=', '<=', '%%', '%/%', '%*%', '%in%', ':', 'list', 'c', 'rep', 'seq', 'seq_len', 'seq_along', 'seq.int', 'gsub', 'which', 'class', 'dimnames', 'min', 'max', 'intersect', 'subset', 'match', 'sqrt', 'abs', 'round', 'floor', 'ceiling', 'signif', 'trunc', 'log', 'log10', 'log2', 'sum', 'mean', 'unique', 'paste', 'paste0', 'read.csv', 'stop', 'is.null', 'plot', 'numeric', 'as.character', 'as.integer', 'as.logical', 'as.numeric', 'as.matrix', 'do.call', 'rbind', 'nrow', 'ncol', 'tryCatch', 'expression', 'factor', 'missing', 'as.data.frame', 'data.frame', 'na.omit', 'rownames', 'names', 'order', 'length', 'any', 'dim', 'matrix', 'cbind', 'nchar', 't');
112
- registerBuiltInFunctions(false, ['mapply', 'Mapply'], built_in_apply_1.processApply, { indexOfFunction: 0, nameOfFunctionArgument: 'FUN' });
113
- registerBuiltInFunctions(false, ['lapply', 'sapply', 'vapply'], built_in_apply_1.processApply, { indexOfFunction: 1, nameOfFunctionArgument: 'FUN' });
114
- /* functool wrappers */
115
- registerBuiltInFunctions(false, ['Lapply', 'Sapply', 'Vapply'], built_in_apply_1.processApply, { indexOfFunction: 1, nameOfFunctionArgument: 'FUN' });
116
- registerBuiltInFunctions(false, ['apply', 'tapply', 'Tapply'], built_in_apply_1.processApply, { indexOfFunction: 2, nameOfFunctionArgument: 'FUN' });
117
- registerBuiltInFunctions(false, ['print'], defaultBuiltInProcessor, { returnsNthArgument: 0, forceArgs: 'all' });
118
- registerBuiltInFunctions(true, ['('], defaultBuiltInProcessor, { returnsNthArgument: 0 });
119
- registerBuiltInFunctions(false, ['load', 'load_all', 'setwd', 'set.seed'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: [true] });
120
- registerBuiltInFunctions(false, ['eval', 'body', 'formals', 'environment'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: [true] });
121
- registerBuiltInFunctions(false, ['cat'], defaultBuiltInProcessor, { forceArgs: 'all' }); /* returns null */
122
- registerBuiltInFunctions(false, ['switch'], defaultBuiltInProcessor, {}); /* returns null */
123
- registerBuiltInFunctions(true, ['return'], defaultBuiltInProcessor, { returnsNthArgument: 0, cfg: 1 /* ExitPointType.Return */ });
124
- registerBuiltInFunctions(true, ['break'], defaultBuiltInProcessor, { cfg: 2 /* ExitPointType.Break */ });
125
- registerBuiltInFunctions(true, ['next'], defaultBuiltInProcessor, { cfg: 3 /* ExitPointType.Next */ });
126
- registerBuiltInFunctions(true, ['{'], built_in_expression_list_1.processExpressionList, {});
127
- registerBuiltInFunctions(false, ['source'], built_in_source_1.processSourceCall, { includeFunctionCall: true, forceFollow: false });
128
- registerBuiltInFunctions(true, ['[', '[['], built_in_access_1.processAccess, { treatIndicesAsString: false });
129
- registerBuiltInFunctions(true, ['$', '@'], built_in_access_1.processAccess, { treatIndicesAsString: true });
130
- registerBuiltInFunctions(true, ['if', 'ifelse'], built_in_if_then_else_1.processIfThenElse, {});
131
- registerBuiltInFunctions(false, ['get'], built_in_get_1.processGet, {});
132
- registerBuiltInFunctions(false, ['library', 'require'], built_in_library_1.processLibrary, {});
133
- registerBuiltInFunctions(true, ['<-', '='], built_in_assignment_1.processAssignment, { canBeReplacement: true });
134
- registerBuiltInFunctions(true, [':=', 'assign'], built_in_assignment_1.processAssignment, {});
135
- registerBuiltInFunctions(true, ['delayedAssign'], built_in_assignment_1.processAssignment, { quoteSource: true });
136
- registerBuiltInFunctions(true, ['<<-'], built_in_assignment_1.processAssignment, { superAssignment: true, canBeReplacement: true });
137
- registerBuiltInFunctions(true, ['->'], built_in_assignment_1.processAssignment, { swapSourceAndTarget: true, canBeReplacement: true });
138
- registerBuiltInFunctions(true, ['->>'], built_in_assignment_1.processAssignment, { superAssignment: true, swapSourceAndTarget: true, canBeReplacement: true });
139
- registerBuiltInFunctions(true, ['&&', '&'], built_in_special_bin_op_1.processSpecialBinOp, { lazy: true, evalRhsWhen: true });
140
- registerBuiltInFunctions(true, ['||', '|'], built_in_special_bin_op_1.processSpecialBinOp, { lazy: true, evalRhsWhen: false });
141
- registerBuiltInFunctions(true, ['|>', '%>%'], built_in_pipe_1.processPipe, {});
142
- registerBuiltInFunctions(true, ['function', '\\'], built_in_function_definition_1.processFunctionDefinition, {});
143
- registerBuiltInFunctions(true, ['quote', 'substitute', 'bquote'], built_in_quote_1.processQuote, { quoteArgumentsWithIndex: 0 });
144
- registerBuiltInFunctions(true, ['for'], built_in_for_loop_1.processForLoop, {});
145
- registerBuiltInFunctions(true, ['repeat'], built_in_repeat_loop_1.processRepeatLoop, {});
146
- registerBuiltInFunctions(true, ['while'], built_in_while_loop_1.processWhileLoop, {});
147
- registerBuiltInFunctions(false, ['options'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: 'all' });
148
- registerBuiltInFunctions(false, ['on.exit', 'sys.on.exit', 'par'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
149
- registerBuiltInFunctions(false, ['setnames', 'setNames', 'setkey', 'setkeyv', 'setindex', 'setindexv', 'setattr', 'sink'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
150
- /* library and require is handled above */
151
- registerBuiltInFunctions(false, ['requireNamespace', 'loadNamespace', 'attachNamespace', 'asNamespace'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
152
- /* downloader and installer functions (R, devtools, BiocManager) */
153
- registerBuiltInFunctions(false, ['library.dynam', 'install.packages', 'install', 'install_github', 'install_gitlab', 'install_bitbucket', 'install_url', 'install_git', 'install_svn', 'install_local', 'install_version', 'update_packages'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
154
- /* weird env attachments */
155
- registerBuiltInFunctions(false, ['attach', 'detach', 'unname', 'rm', 'remove'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
156
- /* they are all mapped to `<-` but we separate super assignments */
157
- registerReplacementFunctions({ makeMaybe: true }, ['<-', '<<-'], '[', '[[', '$', '@', 'names', 'dimnames', 'attributes', 'attr', 'class', 'levels', 'rownames', 'colnames', 'body', 'environment', 'formals');
89
+ (0, built_in_config_1.registerBuiltInDefinitions)(default_builtin_config_1.DefaultBuiltinConfig);
158
90
  //# sourceMappingURL=built-in.js.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneEnvironmentInformation = void 0;
3
+ exports.cloneEnvironmentInformation = cloneEnvironmentInformation;
4
4
  const environment_1 = require("./environment");
5
5
  function cloneEnvironment(environment, recurseParents) {
6
6
  if (environment === undefined) {
@@ -9,6 +9,7 @@ function cloneEnvironment(environment, recurseParents) {
9
9
  else if (environment.id === environment_1.BuiltInEnvironment.id) {
10
10
  return environment_1.BuiltInEnvironment;
11
11
  }
12
+ /* make sure the clone has the same id */
12
13
  const clone = new environment_1.Environment(recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
13
14
  clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
14
15
  return clone;
@@ -19,5 +20,4 @@ function cloneEnvironmentInformation(environment, recurseParents = true) {
19
20
  level: environment.level
20
21
  };
21
22
  }
22
- exports.cloneEnvironmentInformation = cloneEnvironmentInformation;
23
23
  //# sourceMappingURL=clone.js.map
@@ -0,0 +1,5 @@
1
+ import type { BuiltInDefinitions } from './built-in-config';
2
+ /**
3
+ * Contains the built-in definitions recognized by flowR
4
+ */
5
+ export declare const DefaultBuiltinConfig: BuiltInDefinitions;