@eagleoutice/flowr 2.6.0 → 2.6.2

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 (703) hide show
  1. package/README.md +142 -45
  2. package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
  4. package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
  5. package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
  6. package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
  7. package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
  8. package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
  9. package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
  10. package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
  11. package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
  12. package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
  13. package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
  14. package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
  15. package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
  16. package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
  17. package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
  18. package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
  19. package/abstract-interpretation/data-frame/semantics.js +171 -162
  20. package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
  21. package/abstract-interpretation/data-frame/shape-inference.js +7 -9
  22. package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
  23. package/abstract-interpretation/domains/abstract-domain.js +74 -1
  24. package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
  25. package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
  26. package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
  27. package/abstract-interpretation/domains/interval-domain.js +109 -50
  28. package/abstract-interpretation/domains/lattice.d.ts +19 -11
  29. package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
  30. package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
  31. package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
  32. package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
  33. package/abstract-interpretation/domains/product-domain.d.ts +18 -23
  34. package/abstract-interpretation/domains/product-domain.js +11 -19
  35. package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
  36. package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
  37. package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
  38. package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
  39. package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
  40. package/abstract-interpretation/domains/singleton-domain.js +52 -37
  41. package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
  42. package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
  43. package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
  44. package/abstract-interpretation/normalized-ast-fold.js +0 -5
  45. package/benchmark/slicer.d.ts +3 -7
  46. package/benchmark/slicer.js +14 -19
  47. package/benchmark/stats/print.d.ts +6 -0
  48. package/benchmark/stats/print.js +6 -0
  49. package/benchmark/stats/size-of.d.ts +0 -1
  50. package/benchmark/stats/size-of.js +0 -1
  51. package/benchmark/stats/stats.d.ts +2 -2
  52. package/benchmark/stopwatch.d.ts +11 -13
  53. package/benchmark/stopwatch.js +11 -13
  54. package/benchmark/summarizer/first-phase/input.d.ts +6 -0
  55. package/benchmark/summarizer/first-phase/input.js +6 -0
  56. package/benchmark/summarizer/first-phase/process.d.ts +13 -1
  57. package/benchmark/summarizer/first-phase/process.js +12 -0
  58. package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
  59. package/benchmark/summarizer/second-phase/graph.js +3 -0
  60. package/benchmark/summarizer/second-phase/process.d.ts +12 -0
  61. package/benchmark/summarizer/second-phase/process.js +12 -0
  62. package/benchmark/summarizer/summarizer.d.ts +1 -2
  63. package/cli/benchmark-app.js +0 -2
  64. package/cli/common/features.d.ts +7 -1
  65. package/cli/common/features.js +6 -0
  66. package/cli/common/script.d.ts +3 -1
  67. package/cli/common/script.js +3 -1
  68. package/cli/common/scripts-info.d.ts +3 -1
  69. package/cli/common/scripts-info.js +3 -0
  70. package/cli/flowr-main-options.d.ts +3 -0
  71. package/cli/flowr-main-options.js +3 -0
  72. package/cli/flowr.js +8 -4
  73. package/cli/repl/commands/repl-cfg.js +4 -4
  74. package/cli/repl/commands/repl-commands.d.ts +13 -0
  75. package/cli/repl/commands/repl-commands.js +15 -4
  76. package/cli/repl/commands/repl-dataflow.js +4 -4
  77. package/cli/repl/commands/repl-execute.d.ts +5 -1
  78. package/cli/repl/commands/repl-execute.js +12 -8
  79. package/cli/repl/commands/repl-main.d.ts +17 -14
  80. package/cli/repl/commands/repl-normalize.js +2 -2
  81. package/cli/repl/commands/repl-parse.js +4 -3
  82. package/cli/repl/commands/repl-query.js +18 -7
  83. package/cli/repl/commands/repl-quit.js +1 -1
  84. package/cli/repl/commands/repl-version.d.ts +1 -16
  85. package/cli/repl/commands/repl-version.js +2 -19
  86. package/cli/repl/core.d.ts +32 -14
  87. package/cli/repl/core.js +38 -35
  88. package/cli/repl/execute.d.ts +0 -2
  89. package/cli/repl/execute.js +0 -2
  90. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  91. package/cli/repl/parser/slice-query-parser.js +34 -0
  92. package/cli/repl/print-version.d.ts +6 -0
  93. package/cli/repl/print-version.js +8 -2
  94. package/cli/repl/server/compact.d.ts +8 -0
  95. package/cli/repl/server/compact.js +8 -0
  96. package/cli/repl/server/connection.d.ts +4 -3
  97. package/cli/repl/server/connection.js +9 -33
  98. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  99. package/cli/repl/server/messages/all-messages.js +0 -1
  100. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  101. package/cli/repl/server/messages/message-hello.d.ts +1 -1
  102. package/cli/repl/server/messages/message-query.d.ts +1 -1
  103. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  104. package/cli/repl/server/send.d.ts +6 -0
  105. package/cli/repl/server/send.js +6 -0
  106. package/cli/repl/server/server.d.ts +1 -1
  107. package/cli/repl/server/server.js +2 -2
  108. package/cli/repl/server/validate.d.ts +10 -1
  109. package/cli/repl/server/validate.js +9 -0
  110. package/cli/run-script.d.ts +1 -2
  111. package/cli/run-script.js +0 -1
  112. package/cli/script-core/statistics-core.d.ts +3 -0
  113. package/cli/script-core/statistics-core.js +3 -0
  114. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  115. package/cli/script-core/statistics-helper-core.js +3 -0
  116. package/cli/script-core/summarizer-core.d.ts +3 -0
  117. package/cli/script-core/summarizer-core.js +3 -0
  118. package/cli/summarizer-app.d.ts +2 -3
  119. package/cli/summarizer-app.js +2 -3
  120. package/config.d.ts +17 -3
  121. package/config.js +15 -0
  122. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  123. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  124. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  125. package/control-flow/control-flow-graph.d.ts +20 -12
  126. package/control-flow/control-flow-graph.js +16 -4
  127. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  128. package/control-flow/diff-cfg.d.ts +3 -5
  129. package/control-flow/diff-cfg.js +0 -1
  130. package/control-flow/extract-cfg.d.ts +3 -6
  131. package/control-flow/extract-cfg.js +0 -3
  132. package/control-flow/happens-before.d.ts +1 -1
  133. package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
  134. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  135. package/control-flow/simple-visitor.d.ts +1 -3
  136. package/control-flow/simple-visitor.js +0 -2
  137. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  138. package/control-flow/useless-loop.d.ts +0 -3
  139. package/control-flow/useless-loop.js +2 -5
  140. package/core/pipeline-executor.d.ts +8 -16
  141. package/core/pipeline-executor.js +9 -18
  142. package/core/print/dataflow-printer.d.ts +19 -0
  143. package/core/print/dataflow-printer.js +19 -0
  144. package/core/print/normalize-printer.d.ts +21 -1
  145. package/core/print/normalize-printer.js +20 -0
  146. package/core/print/parse-printer.d.ts +6 -1
  147. package/core/print/parse-printer.js +5 -0
  148. package/core/print/print.d.ts +0 -1
  149. package/core/print/print.js +0 -1
  150. package/core/print/slice-diff-ansi.d.ts +3 -0
  151. package/core/print/slice-diff-ansi.js +3 -0
  152. package/core/steps/all/core/00-parse.d.ts +1 -1
  153. package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
  154. package/core/steps/all/core/10-normalize.d.ts +3 -0
  155. package/core/steps/all/core/10-normalize.js +3 -0
  156. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
  157. package/core/steps/all/core/20-dataflow.d.ts +3 -1
  158. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  159. package/core/steps/pipeline/default-pipelines.d.ts +29 -13
  160. package/core/steps/pipeline/default-pipelines.js +0 -4
  161. package/core/steps/pipeline/pipeline.d.ts +1 -8
  162. package/core/steps/pipeline/pipeline.js +1 -3
  163. package/core/steps/pipeline-step.d.ts +0 -1
  164. package/core/steps/pipeline-step.js +0 -1
  165. package/dataflow/cluster.d.ts +3 -0
  166. package/dataflow/cluster.js +3 -0
  167. package/dataflow/environments/append.d.ts +1 -1
  168. package/dataflow/environments/built-in-config.d.ts +1 -5
  169. package/dataflow/environments/built-in-config.js +0 -1
  170. package/dataflow/environments/built-in.d.ts +10 -5
  171. package/dataflow/environments/built-in.js +6 -1
  172. package/dataflow/environments/clone.d.ts +1 -1
  173. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  174. package/dataflow/environments/default-builtin-config.js +12 -1
  175. package/dataflow/environments/diff.d.ts +11 -2
  176. package/dataflow/environments/diff.js +9 -0
  177. package/dataflow/environments/environment.d.ts +3 -3
  178. package/dataflow/environments/environment.js +8 -6
  179. package/dataflow/environments/identifier.d.ts +0 -4
  180. package/dataflow/environments/identifier.js +0 -1
  181. package/dataflow/environments/overwrite.d.ts +4 -1
  182. package/dataflow/environments/overwrite.js +3 -0
  183. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  184. package/dataflow/environments/resolve-by-name.js +3 -2
  185. package/dataflow/environments/scoping.d.ts +4 -1
  186. package/dataflow/environments/scoping.js +3 -0
  187. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  188. package/dataflow/eval/resolve/alias-tracking.js +13 -14
  189. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  190. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  191. package/dataflow/eval/resolve/resolve.js +3 -5
  192. package/dataflow/eval/values/general.d.ts +1 -3
  193. package/dataflow/eval/values/general.js +0 -1
  194. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  195. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  196. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  197. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  198. package/dataflow/eval/values/r-value.d.ts +16 -1
  199. package/dataflow/eval/values/r-value.js +14 -0
  200. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  201. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  202. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  203. package/dataflow/eval/values/sets/set-constants.js +6 -0
  204. package/dataflow/eval/values/string/string-constants.d.ts +10 -1
  205. package/dataflow/eval/values/string/string-constants.js +9 -0
  206. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  207. package/dataflow/extractor.d.ts +5 -2
  208. package/dataflow/extractor.js +7 -5
  209. package/dataflow/fn/higher-order-function.d.ts +9 -0
  210. package/dataflow/fn/higher-order-function.js +75 -0
  211. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  212. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  213. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  214. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  215. package/dataflow/graph/edge.d.ts +9 -0
  216. package/dataflow/graph/edge.js +9 -0
  217. package/dataflow/graph/graph.d.ts +6 -19
  218. package/dataflow/graph/graph.js +4 -15
  219. package/dataflow/graph/invert-dfg.d.ts +3 -0
  220. package/dataflow/graph/invert-dfg.js +3 -0
  221. package/dataflow/graph/quads.d.ts +1 -1
  222. package/dataflow/graph/unknown-replacement.d.ts +6 -0
  223. package/dataflow/graph/unknown-replacement.js +6 -0
  224. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  225. package/dataflow/graph/unknown-side-effect.js +8 -0
  226. package/dataflow/graph/vertex.d.ts +9 -9
  227. package/dataflow/graph/vertex.js +9 -1
  228. package/dataflow/info.d.ts +9 -10
  229. package/dataflow/info.js +6 -1
  230. package/dataflow/internal/linker.d.ts +25 -9
  231. package/dataflow/internal/linker.js +23 -7
  232. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  233. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
  234. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  235. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  236. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
  237. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  238. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
  239. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  240. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  241. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
  242. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  243. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
  244. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  245. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
  246. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  247. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
  248. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  249. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  250. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  251. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
  252. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  253. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  254. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  255. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
  257. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  258. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  259. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
  260. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
  261. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  262. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
  263. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  264. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  265. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
  266. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
  267. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
  268. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
  269. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  270. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  271. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
  272. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  273. package/dataflow/internal/process/functions/call/common.js +6 -0
  274. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
  275. package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
  276. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  277. package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
  278. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  279. package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
  280. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  281. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  282. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  283. package/dataflow/internal/process/functions/process-argument.js +6 -0
  284. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  285. package/dataflow/internal/process/functions/process-parameter.js +3 -0
  286. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  287. package/dataflow/internal/process/process-symbol.js +3 -0
  288. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  289. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  290. package/dataflow/internal/process/process-value.d.ts +3 -0
  291. package/dataflow/internal/process/process-value.js +3 -0
  292. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  293. package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
  294. package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
  295. package/dataflow/processor.d.ts +0 -1
  296. package/dataflow/processor.js +0 -1
  297. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
  298. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  299. package/documentation/data/faq/faqs.d.ts +5 -0
  300. package/documentation/data/faq/faqs.js +78 -0
  301. package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
  302. package/documentation/data/faq/wiki-faq-store.js +75 -0
  303. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  304. package/documentation/data/server/doc-data-server-messages.js +4 -63
  305. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  306. package/documentation/doc-util/doc-auto-gen.js +6 -0
  307. package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
  308. package/documentation/doc-util/doc-benchmarks.js +12 -0
  309. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  310. package/documentation/doc-util/doc-cfg.js +9 -0
  311. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  312. package/documentation/doc-util/doc-cli-option.js +9 -0
  313. package/documentation/doc-util/doc-code.d.ts +24 -0
  314. package/documentation/doc-util/doc-code.js +24 -0
  315. package/documentation/doc-util/doc-dfg.d.ts +7 -1
  316. package/documentation/doc-util/doc-dfg.js +9 -0
  317. package/documentation/doc-util/doc-env.d.ts +3 -0
  318. package/documentation/doc-util/doc-env.js +3 -0
  319. package/documentation/doc-util/doc-escape.d.ts +0 -1
  320. package/documentation/doc-util/doc-escape.js +0 -1
  321. package/documentation/doc-util/doc-files.d.ts +11 -0
  322. package/documentation/doc-util/doc-files.js +15 -4
  323. package/documentation/doc-util/doc-general.d.ts +6 -0
  324. package/documentation/doc-util/doc-general.js +6 -0
  325. package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
  326. package/documentation/doc-util/doc-normalized-ast.js +6 -0
  327. package/documentation/doc-util/doc-query.d.ts +15 -0
  328. package/documentation/doc-util/doc-query.js +17 -2
  329. package/documentation/doc-util/doc-repl.d.ts +6 -0
  330. package/documentation/doc-util/doc-repl.js +11 -2
  331. package/documentation/doc-util/doc-search.d.ts +15 -0
  332. package/documentation/doc-util/doc-search.js +17 -2
  333. package/documentation/doc-util/doc-server-message.d.ts +13 -1
  334. package/documentation/doc-util/doc-server-message.js +13 -1
  335. package/documentation/doc-util/doc-structure.d.ts +9 -0
  336. package/documentation/doc-util/doc-structure.js +10 -1
  337. package/documentation/doc-util/doc-types.d.ts +42 -0
  338. package/documentation/doc-util/doc-types.js +42 -0
  339. package/documentation/print-analyzer-wiki.js +4 -0
  340. package/documentation/print-core-wiki.d.ts +3 -0
  341. package/documentation/print-core-wiki.js +5 -2
  342. package/documentation/print-dataflow-graph-wiki.js +7 -7
  343. package/documentation/print-faq-wiki.js +3 -75
  344. package/documentation/print-interface-wiki.js +1 -1
  345. package/documentation/print-onboarding-wiki.js +1 -1
  346. package/documentation/print-query-wiki.js +24 -34
  347. package/documentation/print-readme.js +106 -1
  348. package/engines.d.ts +1 -1
  349. package/linter/linter-executor.d.ts +6 -3
  350. package/linter/linter-executor.js +3 -0
  351. package/linter/linter-format.d.ts +8 -0
  352. package/linter/linter-format.js +8 -0
  353. package/linter/rules/absolute-path.d.ts +3 -4
  354. package/linter/rules/dataframe-access-validation.d.ts +3 -4
  355. package/linter/rules/dataframe-access-validation.js +9 -11
  356. package/linter/rules/dead-code.d.ts +1 -1
  357. package/linter/rules/deprecated-functions.d.ts +1 -1
  358. package/linter/rules/file-path-validity.d.ts +1 -2
  359. package/linter/rules/function-finder-util.d.ts +1 -2
  360. package/linter/rules/naming-convention.d.ts +13 -2
  361. package/linter/rules/naming-convention.js +13 -1
  362. package/linter/rules/network-functions.d.ts +1 -1
  363. package/linter/rules/seeded-randomness.d.ts +1 -2
  364. package/linter/rules/unused-definition.d.ts +2 -3
  365. package/linter/rules/useless-loop.d.ts +1 -2
  366. package/package.json +2 -2
  367. package/project/cache/flowr-analyzer-cache.d.ts +8 -14
  368. package/project/cache/flowr-analyzer-cache.js +21 -19
  369. package/project/cfg-kind.d.ts +17 -0
  370. package/project/cfg-kind.js +22 -0
  371. package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
  372. package/project/context/flowr-analyzer-context.d.ts +9 -6
  373. package/project/context/flowr-analyzer-context.js +11 -0
  374. package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
  375. package/project/context/flowr-analyzer-dependencies-context.js +4 -0
  376. package/project/context/flowr-analyzer-files-context.d.ts +3 -4
  377. package/project/context/flowr-analyzer-files-context.js +4 -0
  378. package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
  379. package/project/context/flowr-analyzer-loading-order-context.js +6 -0
  380. package/project/context/flowr-file.d.ts +0 -1
  381. package/project/flowr-analyzer-builder.d.ts +1 -3
  382. package/project/flowr-analyzer-builder.js +5 -6
  383. package/project/flowr-analyzer.d.ts +42 -32
  384. package/project/flowr-analyzer.js +14 -8
  385. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
  386. package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
  387. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  388. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  389. package/queries/base-query-format.d.ts +2 -2
  390. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  391. package/queries/catalog/call-context-query/call-context-query-executor.js +5 -1
  392. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  393. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
  394. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
  395. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  396. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  397. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  398. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  399. package/queries/catalog/config-query/config-query-executor.js +3 -0
  400. package/queries/catalog/config-query/config-query-format.d.ts +6 -3
  401. package/queries/catalog/config-query/config-query-format.js +13 -16
  402. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  403. package/queries/catalog/control-flow-query/control-flow-query-executor.js +5 -1
  404. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  405. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  406. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  407. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  408. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  409. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  410. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  411. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  412. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  413. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  414. package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
  415. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  416. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  417. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  418. package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
  419. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
  420. package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
  421. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  422. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  423. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  424. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  425. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +6 -0
  426. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
  427. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
  428. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
  429. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  430. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  431. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  432. package/queries/catalog/linter-query/linter-query-format.js +67 -0
  433. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  434. package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
  435. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  436. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  437. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  438. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  439. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  440. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  441. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  442. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  443. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  444. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  445. package/queries/catalog/project-query/project-query-executor.js +3 -0
  446. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  447. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  448. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  449. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  450. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  451. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  452. package/queries/catalog/search-query/search-query-executor.js +3 -0
  453. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  454. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  455. package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
  456. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  457. package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
  458. package/queries/query-print.d.ts +20 -4
  459. package/queries/query-print.js +18 -2
  460. package/queries/query.d.ts +91 -53
  461. package/queries/query.js +37 -23
  462. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  463. package/r-bridge/data/get.d.ts +6 -0
  464. package/r-bridge/data/get.js +6 -0
  465. package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
  466. package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
  467. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  468. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  469. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  470. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  471. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  472. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  473. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  474. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  475. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  476. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
  477. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
  478. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  479. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  480. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  481. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  482. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  483. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  484. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  485. package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
  486. package/r-bridge/lang-4.x/ast/model/type.js +4 -5
  487. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  488. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  489. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
  490. package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
  491. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  492. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  493. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  494. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  495. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  496. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  497. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  498. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  499. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  500. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  501. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  502. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  503. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  504. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  505. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  506. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  507. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  508. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  509. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  510. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  511. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  512. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  513. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  514. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  515. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  516. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  517. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  518. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  519. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  520. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  521. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  522. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  523. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  524. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  525. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  526. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  527. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  528. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  529. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  530. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  531. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  532. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  533. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  534. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  535. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  536. package/r-bridge/lang-4.x/convert-values.js +12 -1
  537. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  538. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
  539. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
  540. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
  541. package/r-bridge/parser.d.ts +30 -2
  542. package/r-bridge/retriever.d.ts +16 -1
  543. package/r-bridge/retriever.js +15 -0
  544. package/r-bridge/shell-executor.d.ts +3 -3
  545. package/r-bridge/shell-executor.js +6 -1
  546. package/r-bridge/shell.d.ts +24 -23
  547. package/r-bridge/shell.js +37 -31
  548. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
  549. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  550. package/reconstruct/auto-select/magic-comments.js +1 -2
  551. package/reconstruct/reconstruct.d.ts +1 -3
  552. package/reconstruct/reconstruct.js +0 -2
  553. package/search/flowr-search-builder.d.ts +12 -5
  554. package/search/flowr-search-builder.js +7 -2
  555. package/search/flowr-search-executor.d.ts +3 -3
  556. package/search/flowr-search-filters.d.ts +14 -1
  557. package/search/flowr-search-filters.js +13 -0
  558. package/search/flowr-search-printer.d.ts +6 -0
  559. package/search/flowr-search-printer.js +6 -0
  560. package/search/flowr-search-traverse.d.ts +1 -1
  561. package/search/flowr-search.d.ts +3 -3
  562. package/search/search-executor/search-enrichers.d.ts +9 -6
  563. package/search/search-executor/search-enrichers.js +5 -1
  564. package/search/search-executor/search-generators.d.ts +19 -10
  565. package/search/search-executor/search-generators.js +49 -2
  566. package/search/search-executor/search-mappers.d.ts +8 -5
  567. package/search/search-executor/search-mappers.js +3 -0
  568. package/search/search-executor/search-transformer.d.ts +19 -16
  569. package/search/search-executor/search-transformer.js +3 -0
  570. package/slicing/criterion/collect-all.d.ts +10 -10
  571. package/slicing/criterion/parse.d.ts +4 -2
  572. package/slicing/criterion/parse.js +4 -2
  573. package/slicing/static/fingerprint.d.ts +9 -1
  574. package/slicing/static/fingerprint.js +8 -0
  575. package/slicing/static/slice-call.d.ts +2 -2
  576. package/slicing/static/static-slicer.d.ts +8 -4
  577. package/slicing/static/static-slicer.js +5 -1
  578. package/slicing/static/visiting-queue.d.ts +1 -1
  579. package/statistics/features/common-syntax-probability.d.ts +10 -1
  580. package/statistics/features/common-syntax-probability.js +9 -0
  581. package/statistics/features/feature.d.ts +0 -4
  582. package/statistics/features/feature.js +0 -1
  583. package/statistics/features/post-processing.d.ts +6 -0
  584. package/statistics/features/post-processing.js +6 -0
  585. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  586. package/statistics/features/supported/assignments/post-process.js +3 -0
  587. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  588. package/statistics/features/supported/comments/post-process.js +3 -0
  589. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  590. package/statistics/features/supported/control-flow/post-process.js +3 -0
  591. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  592. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  593. package/statistics/features/supported/data-access/post-process.js +3 -0
  594. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  595. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  596. package/statistics/features/supported/expression-list/post-process.js +3 -0
  597. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  598. package/statistics/features/supported/loops/post-process.js +3 -0
  599. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  600. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  601. package/statistics/features/supported/used-packages/post-process.js +3 -0
  602. package/statistics/features/supported/values/post-process.d.ts +3 -0
  603. package/statistics/features/supported/values/post-process.js +3 -0
  604. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  605. package/statistics/features/supported/variables/post-process.js +6 -0
  606. package/statistics/meta-statistics.d.ts +8 -9
  607. package/statistics/output/file-provider.d.ts +5 -6
  608. package/statistics/output/file-provider.js +5 -6
  609. package/statistics/output/print-stats.d.ts +13 -1
  610. package/statistics/output/print-stats.js +12 -0
  611. package/statistics/output/statistics-file.d.ts +1 -2
  612. package/statistics/output/statistics-file.js +0 -1
  613. package/statistics/statistics.d.ts +3 -4
  614. package/statistics/statistics.js +1 -2
  615. package/statistics/summarizer/auto-detect.d.ts +3 -0
  616. package/statistics/summarizer/auto-detect.js +3 -0
  617. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  618. package/statistics/summarizer/post-process/clusterer.js +0 -2
  619. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  620. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  621. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  622. package/statistics/summarizer/post-process/histogram.js +0 -2
  623. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  624. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  625. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  626. package/statistics/summarizer/second-phase/process.js +3 -1
  627. package/statistics/summarizer/summarizer.d.ts +1 -2
  628. package/util/assert.d.ts +52 -2
  629. package/util/assert.js +52 -2
  630. package/util/collections/arrays.d.ts +10 -5
  631. package/util/collections/arrays.js +10 -5
  632. package/util/collections/defaultmap.d.ts +11 -11
  633. package/util/collections/defaultmap.js +11 -11
  634. package/util/containers.d.ts +2 -7
  635. package/util/containers.js +0 -5
  636. package/util/diff-graph.d.ts +0 -1
  637. package/util/diff-graph.js +0 -1
  638. package/util/diff.d.ts +3 -1
  639. package/util/diff.js +3 -1
  640. package/util/files.d.ts +11 -11
  641. package/util/files.js +10 -10
  642. package/util/formats/adapter.d.ts +9 -0
  643. package/util/formats/adapter.js +9 -0
  644. package/util/formats/adapters/rmd-adapter.d.ts +10 -1
  645. package/util/formats/adapters/rmd-adapter.js +10 -1
  646. package/util/html-hover-over.d.ts +5 -0
  647. package/util/html-hover-over.js +5 -0
  648. package/util/json.d.ts +13 -0
  649. package/util/json.js +13 -0
  650. package/util/log.d.ts +2 -2
  651. package/util/log.js +2 -2
  652. package/util/mermaid/ast.d.ts +3 -0
  653. package/util/mermaid/ast.js +3 -0
  654. package/util/mermaid/cfg.d.ts +1 -1
  655. package/util/mermaid/dfg.d.ts +12 -4
  656. package/util/mermaid/dfg.js +9 -1
  657. package/util/mermaid/mermaid.d.ts +6 -1
  658. package/util/mermaid/mermaid.js +6 -1
  659. package/util/numbers.d.ts +7 -0
  660. package/util/numbers.js +7 -0
  661. package/util/objects.d.ts +0 -2
  662. package/util/os.d.ts +3 -0
  663. package/util/os.js +3 -0
  664. package/util/parallel.d.ts +4 -4
  665. package/util/parallel.js +4 -4
  666. package/util/prefix.d.ts +0 -1
  667. package/util/prefix.js +0 -1
  668. package/util/quads.d.ts +14 -17
  669. package/util/quads.js +3 -5
  670. package/util/r-value.d.ts +11 -2
  671. package/util/r-value.js +23 -0
  672. package/util/random.d.ts +3 -0
  673. package/util/random.js +3 -0
  674. package/util/range.d.ts +9 -3
  675. package/util/range.js +15 -2
  676. package/util/schema.d.ts +14 -1
  677. package/util/schema.js +15 -2
  678. package/util/simple-df/dfg-view.d.ts +4 -1
  679. package/util/simple-df/dfg-view.js +4 -1
  680. package/util/summarizer.d.ts +9 -1
  681. package/util/summarizer.js +9 -0
  682. package/util/text/ansi.d.ts +3 -0
  683. package/util/text/ansi.js +3 -0
  684. package/util/text/args.d.ts +2 -4
  685. package/util/text/args.js +7 -5
  686. package/util/text/text.d.ts +4 -0
  687. package/util/text/text.js +4 -0
  688. package/util/text/time.d.ts +0 -1
  689. package/util/text/time.js +0 -1
  690. package/util/version.d.ts +26 -0
  691. package/util/version.js +37 -1
  692. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  693. package/abstract-interpretation/data-frame/domain.js +0 -315
  694. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  695. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  696. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  697. package/cli/repl/commands/repl-lineage.js +0 -67
  698. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  699. package/cli/repl/server/messages/message-lineage.js +0 -25
  700. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  701. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  702. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  703. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
@@ -4,7 +4,9 @@ exports.DataFrameOperationNames = exports.ConstraintType = void 0;
4
4
  exports.applyDataFrameSemantics = applyDataFrameSemantics;
5
5
  exports.getConstraintType = getConstraintType;
6
6
  const assert_1 = require("../../util/assert");
7
- const domain_1 = require("./domain");
7
+ const lattice_1 = require("../domains/lattice");
8
+ const positive_interval_domain_1 = require("../domains/positive-interval-domain");
9
+ const dataframe_domain_1 = require("./dataframe-domain");
8
10
  /**
9
11
  * Represents the different types of resulting constraints that are inferred by abstract data frame operations.
10
12
  */
@@ -50,7 +52,6 @@ exports.DataFrameOperationNames = Object.keys(DataFrameSemanticsMapper);
50
52
  /**
51
53
  * Applies the abstract semantics of an abstract data frame operation with respect to the data frame shape domain.
52
54
  * This expects that all arguments have already been sanitized according to the original concrete data frame function (e.g. by replacing duplicate/invalid column names).
53
- *
54
55
  * @param operation - The name of the abstract operation to apply the semantics of
55
56
  * @param value - The abstract data frame shape of the operand of the abstract operation
56
57
  * @param args - The arguments for applying the abstract semantics of the abstract operation
@@ -69,255 +70,264 @@ function getConstraintType(operation) {
69
70
  return DataFrameSemanticsMapper[operation].type;
70
71
  }
71
72
  function applyCreateSemantics(value, { colnames, rows }) {
72
- const cols = colnames?.length;
73
- return {
74
- colnames: colnames?.every(assert_1.isNotUndefined) ? colnames : domain_1.ColNamesTop,
75
- cols: cols !== undefined ? [cols, cols] : domain_1.IntervalTop,
76
- rows: Array.isArray(rows) ? rows : typeof rows === 'number' ? [rows, rows] : domain_1.IntervalTop
77
- };
73
+ const colnamesValue = colnames?.every(assert_1.isNotUndefined) ? colnames : lattice_1.Top;
74
+ const colsValue = colnames !== undefined ? [colnames.length, colnames.length] : positive_interval_domain_1.PosIntervalTop;
75
+ const rowsValue = Array.isArray(rows) ? rows : typeof rows === 'number' ? [rows, rows] : positive_interval_domain_1.PosIntervalTop;
76
+ return new dataframe_domain_1.DataFrameDomain({
77
+ colnames: value.colnames.create(colnamesValue),
78
+ cols: value.cols.create(colsValue),
79
+ rows: value.rows.create(rowsValue)
80
+ });
78
81
  }
79
82
  function applyReadSemantics(value, { colnames, rows }) {
80
83
  return applyCreateSemantics(value, { colnames, rows });
81
84
  }
82
85
  function applyAccessColsSemantics(value, { columns }) {
83
86
  if (columns?.every(col => typeof col === 'string')) {
84
- return {
85
- ...value,
86
- colnames: (0, domain_1.joinColNames)(value.colnames, columns)
87
- };
87
+ return new dataframe_domain_1.DataFrameDomain({
88
+ colnames: value.colnames.join(columns),
89
+ cols: value.cols,
90
+ rows: value.rows
91
+ });
88
92
  }
89
93
  else if (columns?.every(col => typeof col === 'number')) {
90
- return {
91
- ...value,
92
- cols: columns.reduce((a, b) => (0, domain_1.maxInterval)(a, [b, b]), value.cols)
93
- };
94
+ return new dataframe_domain_1.DataFrameDomain({
95
+ colnames: value.colnames,
96
+ cols: columns?.reduce((current, col) => current.max([col, col]), value.cols),
97
+ rows: value.rows
98
+ });
94
99
  }
95
100
  return value;
96
101
  }
97
102
  function applyAccessRowsSemantics(value, { rows }) {
98
103
  if (rows !== undefined) {
99
- return {
100
- ...value,
101
- rows: rows.reduce((a, b) => (0, domain_1.maxInterval)(a, [b, b]), value.rows)
102
- };
104
+ return new dataframe_domain_1.DataFrameDomain({
105
+ colnames: value.colnames,
106
+ cols: value.cols,
107
+ rows: rows.reduce((current, row) => current.max([row, row]), value.rows)
108
+ });
103
109
  }
104
110
  return value;
105
111
  }
106
112
  function applyAssignColsSemantics(value, { columns }) {
107
113
  if (columns?.every(col => typeof col === 'string')) {
108
114
  const cols = columns.length;
109
- return {
110
- ...value,
111
- colnames: (0, domain_1.joinColNames)(value.colnames, columns),
112
- cols: (0, domain_1.maxInterval)((0, domain_1.addInterval)(value.cols, [0, cols]), [cols, cols])
113
- };
115
+ return new dataframe_domain_1.DataFrameDomain({
116
+ colnames: value.colnames.join(columns),
117
+ cols: value.cols.add([0, cols]).max([cols, cols]),
118
+ rows: value.rows
119
+ });
114
120
  }
115
121
  else if (columns?.every(col => typeof col === 'number')) {
116
- return {
117
- ...value,
118
- colnames: domain_1.ColNamesTop,
119
- cols: columns.reduce((a, b) => (0, domain_1.maxInterval)(a, [b, b]), value.cols)
120
- };
122
+ return new dataframe_domain_1.DataFrameDomain({
123
+ colnames: value.colnames.top(),
124
+ cols: columns.reduce((current, col) => current.max([col, col]), value.cols),
125
+ rows: value.rows
126
+ });
121
127
  }
122
- return {
123
- ...value,
124
- colnames: domain_1.ColNamesTop,
125
- cols: (0, domain_1.extendIntervalToInfinity)(value.cols)
126
- };
128
+ return new dataframe_domain_1.DataFrameDomain({
129
+ colnames: value.colnames.top(),
130
+ cols: value.cols.extendUp(),
131
+ rows: value.rows
132
+ });
127
133
  }
128
134
  function applyAssignRowsSemantics(value, { rows }) {
129
135
  if (rows !== undefined) {
130
- return {
131
- ...value,
132
- rows: rows.reduce((a, b) => (0, domain_1.maxInterval)(a, [b, b]), value.rows)
133
- };
136
+ return new dataframe_domain_1.DataFrameDomain({
137
+ colnames: value.colnames,
138
+ cols: value.cols,
139
+ rows: rows.reduce((current, row) => current.max([row, row]), value.rows)
140
+ });
134
141
  }
135
- return {
136
- ...value,
137
- rows: (0, domain_1.extendIntervalToInfinity)(value.rows)
138
- };
142
+ return new dataframe_domain_1.DataFrameDomain({
143
+ colnames: value.colnames,
144
+ cols: value.cols,
145
+ rows: value.rows.extendUp()
146
+ });
139
147
  }
140
148
  function applySetColNamesSemantics(value, { colnames }, options) {
141
149
  if (options?.partial) {
142
- return {
143
- ...value,
144
- colnames: colnames?.every(assert_1.isNotUndefined) ? (0, domain_1.joinColNames)(value.colnames, colnames) : domain_1.ColNamesTop,
145
- };
150
+ return new dataframe_domain_1.DataFrameDomain({
151
+ colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
152
+ cols: value.cols,
153
+ rows: value.rows
154
+ });
146
155
  }
147
- const cols = colnames?.length;
148
- const allColNames = value.cols !== domain_1.IntervalBottom && cols !== undefined && cols >= value.cols[1];
149
- return {
150
- ...value,
151
- colnames: allColNames && colnames?.every(assert_1.isNotUndefined) ? colnames : domain_1.ColNamesTop,
152
- };
156
+ const allColNames = colnames?.every(assert_1.isNotUndefined) && value.cols.value !== lattice_1.Bottom && colnames.length >= value.cols.value[1];
157
+ return new dataframe_domain_1.DataFrameDomain({
158
+ colnames: allColNames ? value.colnames.create(colnames) : value.colnames.top(),
159
+ cols: value.cols,
160
+ rows: value.rows
161
+ });
153
162
  }
154
163
  function applyAddColsSemantics(value, { colnames }) {
155
- const cols = colnames?.length;
156
- return {
157
- ...value,
158
- colnames: colnames?.every(assert_1.isNotUndefined) ? (0, domain_1.joinColNames)(value.colnames, colnames) : domain_1.ColNamesTop,
159
- cols: cols !== undefined ? (0, domain_1.addInterval)(value.cols, [cols, cols]) : (0, domain_1.extendIntervalToInfinity)(value.cols)
160
- };
164
+ return new dataframe_domain_1.DataFrameDomain({
165
+ colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
166
+ cols: colnames !== undefined ? value.cols.add([colnames.length, colnames.length]) : value.cols.extendUp(),
167
+ rows: value.rows
168
+ });
161
169
  }
162
170
  function applyAddRowsSemantics(value, { rows }) {
163
- return {
164
- ...value,
165
- rows: rows !== undefined ? (0, domain_1.addInterval)(value.rows, [rows, rows]) : (0, domain_1.extendIntervalToInfinity)(value.rows)
166
- };
171
+ return new dataframe_domain_1.DataFrameDomain({
172
+ colnames: value.colnames,
173
+ cols: value.cols,
174
+ rows: rows !== undefined ? value.rows.add([rows, rows]) : value.rows.extendUp()
175
+ });
167
176
  }
168
177
  function applyRemoveColsSemantics(value, { colnames }, options) {
169
- const cols = colnames?.length;
170
178
  if (options?.maybe) {
171
- return {
172
- ...value,
173
- colnames: colnames !== undefined ? (0, domain_1.subtractColNames)(value.colnames, colnames.filter(assert_1.isNotUndefined)) : value.colnames,
174
- cols: cols !== undefined ? (0, domain_1.subtractInterval)(value.cols, [cols, 0]) : (0, domain_1.extendIntervalToZero)(value.cols)
175
- };
179
+ return new dataframe_domain_1.DataFrameDomain({
180
+ colnames: colnames !== undefined ? value.colnames.subtract(colnames.filter(assert_1.isNotUndefined)) : value.colnames,
181
+ cols: colnames !== undefined ? value.cols.subtract([colnames.length, 0]) : value.cols.extendDown(),
182
+ rows: value.rows
183
+ });
176
184
  }
177
- return {
178
- ...value,
179
- colnames: colnames !== undefined ? (0, domain_1.subtractColNames)(value.colnames, colnames.filter(assert_1.isNotUndefined)) : value.colnames,
180
- cols: cols !== undefined ? (0, domain_1.subtractInterval)(value.cols, [cols, cols]) : (0, domain_1.extendIntervalToZero)(value.cols)
181
- };
185
+ return new dataframe_domain_1.DataFrameDomain({
186
+ colnames: colnames !== undefined ? value.colnames.subtract(colnames.filter(assert_1.isNotUndefined)) : value.colnames,
187
+ cols: colnames !== undefined ? value.cols.subtract([colnames.length, colnames.length]) : value.cols.extendDown(),
188
+ rows: value.rows
189
+ });
182
190
  }
183
191
  function applyRemoveRowsSemantics(value, { rows }, options) {
184
192
  if (options?.maybe) {
185
- return {
186
- ...value,
187
- cols: rows !== undefined ? (0, domain_1.subtractInterval)(value.cols, [rows, 0]) : (0, domain_1.extendIntervalToZero)(value.cols)
188
- };
193
+ return new dataframe_domain_1.DataFrameDomain({
194
+ colnames: value.colnames,
195
+ cols: value.cols,
196
+ rows: rows !== undefined ? value.rows.subtract([rows, 0]) : value.rows.extendDown()
197
+ });
189
198
  }
190
- return {
191
- ...value,
192
- rows: rows !== undefined ? (0, domain_1.subtractInterval)(value.rows, [rows, rows]) : (0, domain_1.extendIntervalToZero)(value.rows)
193
- };
199
+ return new dataframe_domain_1.DataFrameDomain({
200
+ colnames: value.colnames,
201
+ cols: value.cols,
202
+ rows: rows !== undefined ? value.rows.subtract([rows, rows]) : value.rows.extendDown()
203
+ });
194
204
  }
195
205
  function applyConcatColsSemantics(value, { other }) {
196
- return {
197
- ...value,
198
- colnames: (0, domain_1.joinColNames)(value.colnames, other.colnames),
199
- cols: (0, domain_1.addInterval)(value.cols, other.cols)
200
- };
206
+ return new dataframe_domain_1.DataFrameDomain({
207
+ colnames: value.colnames.join(other.colnames),
208
+ cols: value.cols.add(other.cols),
209
+ rows: value.rows
210
+ });
201
211
  }
202
212
  function applyConcatRowsSemantics(value, { other }) {
203
- if (value.cols !== domain_1.IntervalBottom && value.cols[0] === 0) {
204
- return {
213
+ if (value.cols.value !== lattice_1.Bottom && value.cols.value[0] === 0) {
214
+ return new dataframe_domain_1.DataFrameDomain({
205
215
  ...value,
206
- colnames: (0, domain_1.joinColNames)(value.colnames, other.colnames),
207
- cols: (0, domain_1.joinInterval)(value.cols, other.cols),
208
- rows: (0, domain_1.addInterval)(value.rows, other.rows)
209
- };
216
+ colnames: value.colnames.join(other.colnames),
217
+ cols: value.cols.join(other.cols),
218
+ rows: value.rows.add(other.rows)
219
+ });
210
220
  }
211
- return {
212
- ...value,
213
- rows: (0, domain_1.addInterval)(value.rows, other.rows)
214
- };
221
+ return new dataframe_domain_1.DataFrameDomain({
222
+ colnames: value.colnames,
223
+ cols: value.cols,
224
+ rows: value.rows.add(other.rows)
225
+ });
215
226
  }
216
227
  function applySubsetColsSemantics(value, { colnames }, options) {
217
- const cols = colnames?.length;
218
228
  if (options?.duplicateCols) {
219
- return {
220
- ...value,
221
- colnames: domain_1.ColNamesTop,
222
- cols: cols !== undefined ? [cols, cols] : domain_1.IntervalTop
223
- };
229
+ return new dataframe_domain_1.DataFrameDomain({
230
+ colnames: value.colnames.top(),
231
+ cols: colnames !== undefined ? value.cols.create([colnames.length, colnames.length]) : value.cols.top(),
232
+ rows: value.rows
233
+ });
224
234
  }
225
235
  else if (options?.renamedCols) {
226
- return {
227
- ...value,
228
- colnames: domain_1.ColNamesTop,
229
- cols: cols !== undefined ? (0, domain_1.minInterval)(value.cols, [cols, cols]) : (0, domain_1.extendIntervalToZero)(value.cols)
230
- };
236
+ return new dataframe_domain_1.DataFrameDomain({
237
+ colnames: value.colnames.top(),
238
+ cols: colnames !== undefined ? value.cols.min([colnames.length, colnames.length]) : value.cols.extendDown(),
239
+ rows: value.rows
240
+ });
231
241
  }
232
- return {
233
- ...value,
234
- colnames: colnames?.every(assert_1.isNotUndefined) ? (0, domain_1.meetColNames)(value.colnames, colnames) : value.colnames,
235
- cols: cols !== undefined ? (0, domain_1.minInterval)(value.cols, [cols, cols]) : (0, domain_1.extendIntervalToZero)(value.cols)
236
- };
242
+ return new dataframe_domain_1.DataFrameDomain({
243
+ colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.meet(colnames) : value.colnames,
244
+ cols: colnames !== undefined ? value.cols.min([colnames.length, colnames.length]) : value.cols.extendDown(),
245
+ rows: value.rows
246
+ });
237
247
  }
238
248
  function applySubsetRowsSemantics(value, { rows }, options) {
239
249
  if (options?.duplicateRows) {
240
- return {
241
- ...value,
242
- rows: rows !== undefined ? [rows, rows] : domain_1.IntervalTop
243
- };
250
+ return new dataframe_domain_1.DataFrameDomain({
251
+ colnames: value.colnames,
252
+ cols: value.cols,
253
+ rows: rows !== undefined ? value.rows.create([rows, rows]) : value.rows.top()
254
+ });
244
255
  }
245
- return {
246
- ...value,
247
- rows: rows !== undefined ? (0, domain_1.minInterval)(value.rows, [rows, rows]) : (0, domain_1.extendIntervalToZero)(value.rows)
248
- };
256
+ return new dataframe_domain_1.DataFrameDomain({
257
+ colnames: value.colnames,
258
+ cols: value.cols,
259
+ rows: rows !== undefined ? value.rows.min([rows, rows]) : value.rows.extendDown()
260
+ });
249
261
  }
250
262
  function applyFilterRowsSemantics(value, { condition }) {
251
- return {
252
- ...value,
253
- rows: condition ? value.rows : condition === false ? [0, 0] : (0, domain_1.extendIntervalToZero)(value.rows)
254
- };
263
+ return new dataframe_domain_1.DataFrameDomain({
264
+ colnames: value.colnames,
265
+ cols: value.cols,
266
+ rows: condition ? value.rows : condition === false ? value.rows.create([0, 0]) : value.rows.extendDown()
267
+ });
255
268
  }
256
269
  function applyMutateColsSemantics(value, { colnames }) {
257
- const cols = colnames?.length;
258
- return {
259
- ...value,
260
- colnames: colnames?.every(assert_1.isNotUndefined) ? (0, domain_1.joinColNames)(value.colnames, colnames) : domain_1.ColNamesTop,
261
- cols: cols !== undefined ? (0, domain_1.maxInterval)((0, domain_1.addInterval)(value.cols, [0, cols]), [cols, cols]) : (0, domain_1.extendIntervalToInfinity)(value.cols)
262
- };
270
+ return new dataframe_domain_1.DataFrameDomain({
271
+ colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
272
+ cols: colnames !== undefined ? value.cols.add([0, colnames.length]).max([colnames.length, colnames.length]) : value.cols.extendUp(),
273
+ rows: value.rows
274
+ });
263
275
  }
264
276
  function applyGroupBySemantics(value, { by }, options) {
265
277
  if (options?.mutatedCols) {
266
- return {
267
- ...value,
268
- colnames: by.every(assert_1.isNotUndefined) ? (0, domain_1.joinColNames)(value.colnames, by) : domain_1.ColNamesTop,
269
- cols: (0, domain_1.addInterval)(value.cols, [0, by.length])
270
- };
278
+ return new dataframe_domain_1.DataFrameDomain({
279
+ colnames: by.every(assert_1.isNotUndefined) ? value.colnames.join(by) : value.colnames.top(),
280
+ cols: value.cols.add([0, by.length]),
281
+ rows: value.rows
282
+ });
271
283
  }
272
284
  // Group by only marks columns as groups but does not change the shape itself
273
285
  return value;
274
286
  }
275
287
  function applySummarizeSemantics(value, { colnames }) {
276
- const cols = colnames?.length;
277
- return {
278
- ...value,
279
- colnames: colnames?.every(assert_1.isNotUndefined) ? (0, domain_1.joinColNames)(value.colnames, colnames) : domain_1.ColNamesTop,
280
- cols: cols !== undefined ? (0, domain_1.minInterval)((0, domain_1.addInterval)(value.cols, [0, cols]), [cols, Infinity]) : (0, domain_1.extendIntervalToInfinity)(value.rows),
281
- rows: (0, domain_1.maxInterval)((0, domain_1.minInterval)(value.rows, [1, Infinity]), [0, 1])
282
- };
288
+ return new dataframe_domain_1.DataFrameDomain({
289
+ colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
290
+ cols: colnames !== undefined ? value.cols.add([0, colnames.length]).min([colnames.length, +Infinity]) : value.cols.extendUp(),
291
+ rows: value.rows.min([1, +Infinity]).max([0, 1])
292
+ });
283
293
  }
284
294
  function applyJoinSemantics(value, { other, by }, options) {
285
295
  // Merge two intervals by creating the maximum of the lower bounds and adding the upper bounds
286
296
  const mergeInterval = (interval1, interval2) => {
287
- if (interval1 === domain_1.IntervalBottom || interval2 === domain_1.IntervalBottom) {
288
- return domain_1.IntervalBottom;
297
+ if (interval1.value === lattice_1.Bottom || interval2.value === lattice_1.Bottom) {
298
+ return interval1.bottom();
289
299
  }
290
300
  else {
291
- return [Math.max(interval1[0], interval2[0]), interval1[1] + interval2[1]];
301
+ return new positive_interval_domain_1.PosIntervalDomain([Math.max(interval1.value[0], interval2.value[0]), interval1.value[1] + interval2.value[1]]);
292
302
  }
293
303
  };
294
304
  // Creating the Cartesian product of two intervals by keeping the lower bound and multiplying the upper bounds
295
305
  const productInterval = (lower, interval1, interval2) => {
296
- if (lower === domain_1.IntervalBottom || interval1 === domain_1.IntervalBottom || interval2 === domain_1.IntervalBottom) {
297
- return domain_1.IntervalBottom;
306
+ if (lower.value === lattice_1.Bottom || interval1.value === lattice_1.Bottom || interval2.value === lattice_1.Bottom) {
307
+ return lower.bottom();
298
308
  }
299
309
  else {
300
- return [lower[0], interval1[1] * interval2[1]];
310
+ return new positive_interval_domain_1.PosIntervalDomain([lower.value[0], interval1.value[1] * interval2.value[1]]);
301
311
  }
302
312
  };
303
- const commonCols = (0, domain_1.meetColNames)(value.colnames, other.colnames);
313
+ const commonCols = value.colnames.meet(other.colnames);
304
314
  let duplicateCols; // whether columns may be renamed due to occurrence in both data frames
305
315
  let productRows; // whether the resulting rows may be a Cartesian product of the rows of the data frames
306
316
  if (options?.natural) {
307
317
  duplicateCols = false;
308
- productRows = commonCols !== domain_1.ColNamesTop && commonCols.length === 0;
318
+ productRows = commonCols.isValue() && commonCols.value.size === 0;
309
319
  }
310
320
  else if (by === undefined) {
311
321
  duplicateCols = true;
312
322
  productRows = true;
313
323
  }
314
324
  else if (by.length === 0) {
315
- duplicateCols = commonCols === domain_1.ColNamesTop || commonCols.length > 0;
325
+ duplicateCols = commonCols.isTop() || (commonCols.isValue() && commonCols.value.size > 0);
316
326
  productRows = true;
317
327
  }
318
328
  else if (by.every(assert_1.isNotUndefined)) {
319
- const remainingCols = (0, domain_1.subtractColNames)(commonCols, by);
320
- duplicateCols = remainingCols === domain_1.ColNamesTop || remainingCols.length > 0;
329
+ const remainingCols = commonCols.subtract(by);
330
+ duplicateCols = remainingCols.isTop() || (remainingCols.isValue() && remainingCols.value.size > 0);
321
331
  productRows = false;
322
332
  }
323
333
  else {
@@ -328,7 +338,7 @@ function applyJoinSemantics(value, { other, by }, options) {
328
338
  let rows;
329
339
  switch (joinType) {
330
340
  case 'inner':
331
- rows = (0, domain_1.extendIntervalToZero)((0, domain_1.minInterval)(value.rows, other.rows));
341
+ rows = value.rows.min(other.rows).extendDown();
332
342
  break;
333
343
  case 'left':
334
344
  rows = value.rows;
@@ -342,22 +352,21 @@ function applyJoinSemantics(value, { other, by }, options) {
342
352
  default:
343
353
  (0, assert_1.assertUnreachable)(joinType);
344
354
  }
345
- const byCols = by?.length;
346
- return {
355
+ return new dataframe_domain_1.DataFrameDomain({
347
356
  ...value,
348
- colnames: duplicateCols ? domain_1.ColNamesTop : (0, domain_1.joinColNames)(value.colnames, other.colnames),
349
- cols: byCols !== undefined ? (0, domain_1.subtractInterval)((0, domain_1.addInterval)(value.cols, other.cols), [byCols, byCols]) : mergeInterval(value.cols, other.cols),
357
+ colnames: duplicateCols ? value.colnames.top() : value.colnames.join(other.colnames),
358
+ cols: by !== undefined ? value.cols.add(other.cols).subtract([by.length, by.length]) : mergeInterval(value.cols, other.cols),
350
359
  rows: productRows ? productInterval(rows, value.rows, other.rows) : rows
351
- };
360
+ });
352
361
  }
353
362
  function applyIdentitySemantics(value,
354
363
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
355
364
  _args) {
356
365
  return value;
357
366
  }
358
- function applyUnknownSemantics(_value,
367
+ function applyUnknownSemantics(value,
359
368
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
360
369
  _args) {
361
- return domain_1.DataFrameTop;
370
+ return value.top();
362
371
  }
363
372
  //# sourceMappingURL=semantics.js.map
@@ -5,11 +5,10 @@ import type { RNode } from '../../r-bridge/lang-4.x/ast/model/model';
5
5
  import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
6
6
  import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
7
7
  import { type AbstractInterpretationInfo } from './absint-info';
8
- import { type DataFrameDomain, type DataFrameStateDomain } from './domain';
8
+ import { type DataFrameDomain, DataFrameStateDomain } from './dataframe-domain';
9
9
  /**
10
10
  * Infers the shape of data frames by performing abstract interpretation using the control flow graph of a program.
11
11
  * This directly attaches the inferred data frames shapes to the AST (see {@link AbstractInterpretationInfo}).
12
- *
13
12
  * @param cfinfo - The control flow information containing the control flow graph
14
13
  * @param dfg - The data flow graph to resolve variable origins and function arguments
15
14
  * @param ast - The abstract syntax tree to resolve node IDs to AST nodes
@@ -21,7 +20,6 @@ export declare function inferDataFrameShapes(cfinfo: ControlFlowInformation, dfg
21
20
  /**
22
21
  * Resolves the abstract data frame shape of a node in the AST.
23
22
  * This requires that the data frame shape inference has been executed before using {@link inferDataFrameShapes}.
24
- *
25
23
  * @param id - The node or node ID to get the data frame shape for
26
24
  * @param dfg - The data flow graph used to resolve the data frame shape
27
25
  * @param domain - An optional abstract data frame state domain used to resolve the data frame shape (defaults to the state at the requested node)
@@ -30,7 +28,6 @@ export declare function inferDataFrameShapes(cfinfo: ControlFlowInformation, dfg
30
28
  export declare function resolveIdToDataFrameShape(id: RNode<ParentInformation & AbstractInterpretationInfo> | NodeId | undefined, dfg: DataflowGraph | undefined, domain?: DataFrameStateDomain): DataFrameDomain | undefined;
31
29
  /**
32
30
  * Gets all origins of a variable in the data flow graph that have already been visited.
33
- *
34
31
  * @param node - The node to get the origins for
35
32
  * @param dfg - The data flow graph for resolving the origins
36
33
  * @returns The origins nodes of the variable
@@ -9,13 +9,13 @@ const dfg_get_origin_1 = require("../../dataflow/origin/dfg-get-origin");
9
9
  const r_function_call_1 = require("../../r-bridge/lang-4.x/ast/model/nodes/r-function-call");
10
10
  const type_1 = require("../../r-bridge/lang-4.x/ast/model/type");
11
11
  const assert_1 = require("../../util/assert");
12
+ const abstract_domain_1 = require("../domains/abstract-domain");
12
13
  const absint_info_1 = require("./absint-info");
13
14
  const absint_visitor_1 = require("./absint-visitor");
14
- const domain_1 = require("./domain");
15
+ const dataframe_domain_1 = require("./dataframe-domain");
15
16
  /**
16
17
  * Infers the shape of data frames by performing abstract interpretation using the control flow graph of a program.
17
18
  * This directly attaches the inferred data frames shapes to the AST (see {@link AbstractInterpretationInfo}).
18
- *
19
19
  * @param cfinfo - The control flow information containing the control flow graph
20
20
  * @param dfg - The data flow graph to resolve variable origins and function arguments
21
21
  * @param ast - The abstract syntax tree to resolve node IDs to AST nodes
@@ -28,13 +28,12 @@ function inferDataFrameShapes(cfinfo, dfg, ast, config) {
28
28
  visitor.start();
29
29
  const exitPoints = cfinfo.exitPoints.map(id => cfinfo.graph.getVertex(id)).filter(assert_1.isNotUndefined);
30
30
  const exitNodes = exitPoints.map(vertex => ast.idMap.get((0, control_flow_graph_1.getVertexRootId)(vertex))).filter(assert_1.isNotUndefined);
31
- const result = exitNodes.map(node => node.info.dataFrame?.domain ?? new Map());
32
- return (0, domain_1.joinDataFrameStates)(...result);
31
+ const domains = exitNodes.map(node => node.info.dataFrame?.domain).filter(assert_1.isNotUndefined);
32
+ return dataframe_domain_1.DataFrameStateDomain.bottom().joinAll(domains);
33
33
  }
34
34
  /**
35
35
  * Resolves the abstract data frame shape of a node in the AST.
36
36
  * This requires that the data frame shape inference has been executed before using {@link inferDataFrameShapes}.
37
- *
38
37
  * @param id - The node or node ID to get the data frame shape for
39
38
  * @param dfg - The data flow graph used to resolve the data frame shape
40
39
  * @param domain - An optional abstract data frame state domain used to resolve the data frame shape (defaults to the state at the requested node)
@@ -55,7 +54,7 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
55
54
  if (node.type === type_1.RType.Symbol) {
56
55
  const values = getVariableOrigins(node.info.id, dfg).map(origin => domain.get(origin.info.id));
57
56
  if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
58
- return (0, domain_1.joinDataFrames)(...values);
57
+ return abstract_domain_1.AbstractDomain.joinAll(values);
59
58
  }
60
59
  }
61
60
  else if (node.type === type_1.RType.Argument && node.value !== undefined) {
@@ -79,7 +78,7 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
79
78
  if (node.otherwise !== undefined) {
80
79
  const values = [node.then, node.otherwise].map(entry => resolveIdToDataFrameShape(entry, dfg, domain));
81
80
  if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
82
- return (0, domain_1.joinDataFrames)(...values);
81
+ return abstract_domain_1.AbstractDomain.joinAll(values);
83
82
  }
84
83
  }
85
84
  }
@@ -87,14 +86,13 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
87
86
  if (call.args.length === 3) {
88
87
  const values = call.args.slice(1, 3).map(entry => resolveIdToDataFrameShape(entry.nodeId, dfg, domain));
89
88
  if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
90
- return (0, domain_1.joinDataFrames)(...values);
89
+ return abstract_domain_1.AbstractDomain.joinAll(values);
91
90
  }
92
91
  }
93
92
  }
94
93
  }
95
94
  /**
96
95
  * Gets all origins of a variable in the data flow graph that have already been visited.
97
- *
98
96
  * @param node - The node to get the origins for
99
97
  * @param dfg - The data flow graph for resolving the origins
100
98
  * @returns The origins nodes of the variable