@eagleoutice/flowr 1.3.11

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 (668) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +27 -0
  3. package/benchmark/benchmark-slicer.js +223 -0
  4. package/benchmark/index.d.ts +3 -0
  5. package/benchmark/index.js +20 -0
  6. package/benchmark/slicer.d.ts +100 -0
  7. package/benchmark/slicer.js +223 -0
  8. package/benchmark/stats/index.d.ts +10 -0
  9. package/benchmark/stats/index.js +27 -0
  10. package/benchmark/stats/print.d.ts +7 -0
  11. package/benchmark/stats/print.js +157 -0
  12. package/benchmark/stats/stats.d.ts +41 -0
  13. package/benchmark/stats/stats.js +6 -0
  14. package/benchmark/stopwatch.d.ts +35 -0
  15. package/benchmark/stopwatch.js +79 -0
  16. package/cli/benchmark-app.d.ts +9 -0
  17. package/cli/benchmark-app.js +52 -0
  18. package/cli/benchmark-helper-app.d.ts +7 -0
  19. package/cli/benchmark-helper-app.js +60 -0
  20. package/cli/common/features.d.ts +3 -0
  21. package/cli/common/features.js +30 -0
  22. package/cli/common/index.d.ts +2 -0
  23. package/cli/common/index.js +19 -0
  24. package/cli/common/options.d.ts +20 -0
  25. package/cli/common/options.js +82 -0
  26. package/cli/common/script.d.ts +21 -0
  27. package/cli/common/script.js +61 -0
  28. package/cli/common/scripts-info.d.ts +24 -0
  29. package/cli/common/scripts-info.js +69 -0
  30. package/cli/export-quads-app.d.ts +7 -0
  31. package/cli/export-quads-app.js +46 -0
  32. package/cli/repl/commands/cfg.d.ts +3 -0
  33. package/cli/repl/commands/cfg.js +37 -0
  34. package/cli/repl/commands/commands.d.ts +11 -0
  35. package/cli/repl/commands/commands.js +103 -0
  36. package/cli/repl/commands/dataflow.d.ts +3 -0
  37. package/cli/repl/commands/dataflow.js +34 -0
  38. package/cli/repl/commands/execute.d.ts +4 -0
  39. package/cli/repl/commands/execute.js +27 -0
  40. package/cli/repl/commands/index.d.ts +2 -0
  41. package/cli/repl/commands/index.js +19 -0
  42. package/cli/repl/commands/main.d.ts +39 -0
  43. package/cli/repl/commands/main.js +14 -0
  44. package/cli/repl/commands/normalize.d.ts +3 -0
  45. package/cli/repl/commands/normalize.js +34 -0
  46. package/cli/repl/commands/parse.d.ts +2 -0
  47. package/cli/repl/commands/parse.js +109 -0
  48. package/cli/repl/commands/quit.d.ts +2 -0
  49. package/cli/repl/commands/quit.js +12 -0
  50. package/cli/repl/commands/version.d.ts +16 -0
  51. package/cli/repl/commands/version.js +33 -0
  52. package/cli/repl/core.d.ts +41 -0
  53. package/cli/repl/core.js +89 -0
  54. package/cli/repl/execute.d.ts +28 -0
  55. package/cli/repl/execute.js +79 -0
  56. package/cli/repl/index.d.ts +5 -0
  57. package/cli/repl/index.js +22 -0
  58. package/cli/repl/prompt.d.ts +2 -0
  59. package/cli/repl/prompt.js +9 -0
  60. package/cli/repl/server/connection.d.ts +21 -0
  61. package/cli/repl/server/connection.js +217 -0
  62. package/cli/repl/server/messages/analysis.d.ts +71 -0
  63. package/cli/repl/server/messages/analysis.js +21 -0
  64. package/cli/repl/server/messages/error.d.ts +11 -0
  65. package/cli/repl/server/messages/error.js +3 -0
  66. package/cli/repl/server/messages/hello.d.ts +20 -0
  67. package/cli/repl/server/messages/hello.js +3 -0
  68. package/cli/repl/server/messages/index.d.ts +1 -0
  69. package/cli/repl/server/messages/index.js +3 -0
  70. package/cli/repl/server/messages/messages.d.ts +35 -0
  71. package/cli/repl/server/messages/messages.js +20 -0
  72. package/cli/repl/server/messages/repl.d.ts +33 -0
  73. package/cli/repl/server/messages/repl.js +17 -0
  74. package/cli/repl/server/messages/slice.d.ts +25 -0
  75. package/cli/repl/server/messages/slice.js +17 -0
  76. package/cli/repl/server/net.d.ts +33 -0
  77. package/cli/repl/server/net.js +24 -0
  78. package/cli/repl/server/send.d.ts +4 -0
  79. package/cli/repl/server/send.js +18 -0
  80. package/cli/repl/server/server.d.ts +20 -0
  81. package/cli/repl/server/server.js +66 -0
  82. package/cli/repl/server/validate.d.ts +15 -0
  83. package/cli/repl/server/validate.js +34 -0
  84. package/cli/slicer-app.d.ts +11 -0
  85. package/cli/slicer-app.js +81 -0
  86. package/cli/statistics-app.d.ts +11 -0
  87. package/cli/statistics-app.js +98 -0
  88. package/cli/statistics-helper-app.d.ts +11 -0
  89. package/cli/statistics-helper-app.js +83 -0
  90. package/cli/summarizer-app.d.ts +18 -0
  91. package/cli/summarizer-app.js +67 -0
  92. package/core/index.d.ts +4 -0
  93. package/core/index.js +23 -0
  94. package/core/input.d.ts +42 -0
  95. package/core/input.js +3 -0
  96. package/core/output.d.ts +15 -0
  97. package/core/output.js +3 -0
  98. package/core/pipeline-executor.js +221 -0
  99. package/core/print/dataflow-printer.d.ts +8 -0
  100. package/core/print/dataflow-printer.js +62 -0
  101. package/core/print/normalize-printer.d.ts +7 -0
  102. package/core/print/normalize-printer.js +31 -0
  103. package/core/print/parse-printer.d.ts +3 -0
  104. package/core/print/parse-printer.js +29 -0
  105. package/core/print/print.d.ts +47 -0
  106. package/core/print/print.js +13 -0
  107. package/core/print/slice-diff-ansi.d.ts +2 -0
  108. package/core/print/slice-diff-ansi.js +49 -0
  109. package/core/slicer.d.ts +123 -0
  110. package/core/slicer.js +227 -0
  111. package/core/stepping-slicer.js +160 -0
  112. package/core/steps/all/00-parse.js +19 -0
  113. package/core/steps/all/10-normalize.js +21 -0
  114. package/core/steps/all/20-dataflow.js +21 -0
  115. package/core/steps/all/30-slice.js +16 -0
  116. package/core/steps/all/40-reconstruct.js +16 -0
  117. package/core/steps/all/core/00-parse.js +24 -0
  118. package/core/steps/all/core/10-normalize.js +46 -0
  119. package/core/steps/all/core/20-dataflow.js +39 -0
  120. package/core/steps/all/static-slicing/00-slice.js +21 -0
  121. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  122. package/core/steps/index.js +21 -0
  123. package/core/steps/input.js +3 -0
  124. package/core/steps/output.js +3 -0
  125. package/core/steps/pipeline/create.js +130 -0
  126. package/core/steps/pipeline/default.js +15 -0
  127. package/core/steps/pipeline/dependency-checker.js +76 -0
  128. package/core/steps/pipeline/index.js +20 -0
  129. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  130. package/core/steps/pipeline/pipeline.js +28 -0
  131. package/core/steps/step.js +8 -0
  132. package/core/steps/steps-provider.js +3 -0
  133. package/core/steps/steps.js +35 -0
  134. package/core/steps.d.ts +166 -0
  135. package/core/steps.js +99 -0
  136. package/dataflow/common/environments/append.js +48 -0
  137. package/dataflow/common/environments/environment.js +165 -0
  138. package/dataflow/common/environments/index.js +23 -0
  139. package/dataflow/common/environments/overwrite.js +82 -0
  140. package/dataflow/common/environments/register.js +49 -0
  141. package/dataflow/common/environments/resolve-by-name.js +35 -0
  142. package/dataflow/common/environments/scopes.js +6 -0
  143. package/dataflow/common/environments/scoping.js +27 -0
  144. package/dataflow/environments/append.d.ts +8 -0
  145. package/dataflow/environments/append.js +48 -0
  146. package/dataflow/environments/environment.d.ts +78 -0
  147. package/dataflow/environments/environment.js +161 -0
  148. package/dataflow/environments/index.d.ts +7 -0
  149. package/dataflow/environments/index.js +23 -0
  150. package/dataflow/environments/overwrite.d.ts +6 -0
  151. package/dataflow/environments/overwrite.js +82 -0
  152. package/dataflow/environments/register.d.ts +7 -0
  153. package/dataflow/environments/register.js +39 -0
  154. package/dataflow/environments/resolve-by-name.d.ts +12 -0
  155. package/dataflow/environments/resolve-by-name.js +35 -0
  156. package/dataflow/environments/scopes.d.ts +6 -0
  157. package/dataflow/environments/scopes.js +6 -0
  158. package/dataflow/environments/scoping.d.ts +4 -0
  159. package/dataflow/environments/scoping.js +27 -0
  160. package/dataflow/extractor.d.ts +6 -0
  161. package/dataflow/extractor.js +60 -0
  162. package/dataflow/graph/diff.d.ts +18 -0
  163. package/dataflow/graph/diff.js +206 -0
  164. package/dataflow/graph/edge.d.ts +37 -0
  165. package/dataflow/graph/edge.js +32 -0
  166. package/dataflow/graph/equal.js +127 -0
  167. package/dataflow/graph/graph.d.ts +120 -0
  168. package/dataflow/graph/graph.js +298 -0
  169. package/dataflow/graph/index.d.ts +4 -0
  170. package/dataflow/graph/index.js +21 -0
  171. package/dataflow/graph/quads.d.ts +8 -0
  172. package/dataflow/graph/quads.js +27 -0
  173. package/dataflow/graph/vertex.d.ts +86 -0
  174. package/dataflow/graph/vertex.js +3 -0
  175. package/dataflow/index.d.ts +5 -0
  176. package/dataflow/index.js +24 -0
  177. package/dataflow/internal/info.d.ts +21 -0
  178. package/dataflow/internal/info.js +16 -0
  179. package/dataflow/internal/linker.d.ts +41 -0
  180. package/dataflow/internal/linker.js +255 -0
  181. package/dataflow/internal/process/access.d.ts +4 -0
  182. package/dataflow/internal/process/access.js +53 -0
  183. package/dataflow/internal/process/expression-list.d.ts +8 -0
  184. package/dataflow/internal/process/expression-list.js +148 -0
  185. package/dataflow/internal/process/functions/argument.d.ts +8 -0
  186. package/dataflow/internal/process/functions/argument.js +46 -0
  187. package/dataflow/internal/process/functions/exit-points.d.ts +2 -0
  188. package/dataflow/internal/process/functions/exit-points.js +121 -0
  189. package/dataflow/internal/process/functions/function-call.d.ts +5 -0
  190. package/dataflow/internal/process/functions/function-call.js +99 -0
  191. package/dataflow/internal/process/functions/function-definition.d.ts +4 -0
  192. package/dataflow/internal/process/functions/function-definition.js +176 -0
  193. package/dataflow/internal/process/functions/parameter.d.ts +4 -0
  194. package/dataflow/internal/process/functions/parameter.js +47 -0
  195. package/dataflow/internal/process/if-then-else.d.ts +4 -0
  196. package/dataflow/internal/process/if-then-else.js +56 -0
  197. package/dataflow/internal/process/loops/for-loop.d.ts +4 -0
  198. package/dataflow/internal/process/loops/for-loop.js +54 -0
  199. package/dataflow/internal/process/loops/repeat-loop.d.ts +4 -0
  200. package/dataflow/internal/process/loops/repeat-loop.js +21 -0
  201. package/dataflow/internal/process/loops/while-loop.d.ts +4 -0
  202. package/dataflow/internal/process/loops/while-loop.js +31 -0
  203. package/dataflow/internal/process/operators/assignment.d.ts +4 -0
  204. package/dataflow/internal/process/operators/assignment.js +129 -0
  205. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +4 -0
  206. package/dataflow/internal/process/operators/non-assignment-binary-op.js +25 -0
  207. package/dataflow/internal/process/operators/pipe.d.ts +4 -0
  208. package/dataflow/internal/process/operators/pipe.js +46 -0
  209. package/dataflow/internal/process/operators/unary-op.d.ts +4 -0
  210. package/dataflow/internal/process/operators/unary-op.js +10 -0
  211. package/dataflow/internal/process/symbol.d.ts +4 -0
  212. package/dataflow/internal/process/symbol.js +21 -0
  213. package/dataflow/internal/process/uninteresting-leaf.d.ts +3 -0
  214. package/dataflow/internal/process/uninteresting-leaf.js +9 -0
  215. package/dataflow/processor.d.ts +47 -0
  216. package/dataflow/processor.js +20 -0
  217. package/dataflow/v1/extractor.js +60 -0
  218. package/dataflow/v1/graph/diff.js +206 -0
  219. package/dataflow/v1/graph/edge.js +32 -0
  220. package/dataflow/v1/graph/graph.js +298 -0
  221. package/dataflow/v1/graph/index.js +21 -0
  222. package/dataflow/v1/graph/quads.js +27 -0
  223. package/dataflow/v1/graph/vertex.js +3 -0
  224. package/dataflow/v1/index.js +24 -0
  225. package/dataflow/v1/internal/info.js +16 -0
  226. package/dataflow/v1/internal/linker.js +255 -0
  227. package/dataflow/v1/internal/process/access.js +54 -0
  228. package/dataflow/v1/internal/process/expression-list.js +154 -0
  229. package/dataflow/v1/internal/process/functions/argument.js +46 -0
  230. package/dataflow/v1/internal/process/functions/exit-points.js +125 -0
  231. package/dataflow/v1/internal/process/functions/function-call.js +99 -0
  232. package/dataflow/v1/internal/process/functions/function-definition.js +176 -0
  233. package/dataflow/v1/internal/process/functions/parameter.js +47 -0
  234. package/dataflow/v1/internal/process/if-then-else.js +57 -0
  235. package/dataflow/v1/internal/process/loops/for-loop.js +54 -0
  236. package/dataflow/v1/internal/process/loops/repeat-loop.js +21 -0
  237. package/dataflow/v1/internal/process/loops/while-loop.js +31 -0
  238. package/dataflow/v1/internal/process/operators/assignment.js +129 -0
  239. package/dataflow/v1/internal/process/operators/non-assignment-binary-op.js +25 -0
  240. package/dataflow/v1/internal/process/operators/pipe.js +46 -0
  241. package/dataflow/v1/internal/process/operators/unary-op.js +10 -0
  242. package/dataflow/v1/internal/process/symbol.js +21 -0
  243. package/dataflow/v1/internal/process/uninteresting-leaf.js +9 -0
  244. package/dataflow/v1/processor.js +20 -0
  245. package/dataflow/v2/entry.js +11 -0
  246. package/flowr-1.3.7.tgz +0 -0
  247. package/flowr.d.ts +26 -0
  248. package/flowr.js +135 -0
  249. package/index.d.ts +6 -0
  250. package/index.js +23 -0
  251. package/package.json +384 -0
  252. package/r-bridge/index.d.ts +11 -0
  253. package/r-bridge/index.js +28 -0
  254. package/r-bridge/lang-4.x/ast/index.d.ts +2 -0
  255. package/r-bridge/lang-4.x/ast/index.js +19 -0
  256. package/r-bridge/lang-4.x/ast/model/collect.d.ts +9 -0
  257. package/r-bridge/lang-4.x/ast/model/collect.js +23 -0
  258. package/r-bridge/lang-4.x/ast/model/index.d.ts +6 -0
  259. package/r-bridge/lang-4.x/ast/model/index.js +23 -0
  260. package/r-bridge/lang-4.x/ast/model/model.d.ts +127 -0
  261. package/r-bridge/lang-4.x/ast/model/model.js +3 -0
  262. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +21 -0
  263. package/r-bridge/lang-4.x/ast/model/nodes/index.js +38 -0
  264. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +13 -0
  265. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +27 -0
  266. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.d.ts +12 -0
  267. package/r-bridge/lang-4.x/ast/model/nodes/info/r-delimiter.js +3 -0
  268. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +24 -0
  269. package/r-bridge/lang-4.x/ast/model/nodes/r-access.js +3 -0
  270. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +11 -0
  271. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.js +3 -0
  272. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +25 -0
  273. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.js +3 -0
  274. package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +5 -0
  275. package/r-bridge/lang-4.x/ast/model/nodes/r-break.js +3 -0
  276. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +6 -0
  277. package/r-bridge/lang-4.x/ast/model/nodes/r-comment.js +3 -0
  278. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +6 -0
  279. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.js +3 -0
  280. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +18 -0
  281. package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.js +3 -0
  282. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +31 -0
  283. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +3 -0
  284. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -0
  285. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.js +3 -0
  286. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +9 -0
  287. package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.js +3 -0
  288. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +7 -0
  289. package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.js +3 -0
  290. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +7 -0
  291. package/r-bridge/lang-4.x/ast/model/nodes/r-logical.js +3 -0
  292. package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +5 -0
  293. package/r-bridge/lang-4.x/ast/model/nodes/r-next.js +3 -0
  294. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +8 -0
  295. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  296. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/model/nodes/r-parameter.js +3 -0
  298. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +7 -0
  299. package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.js +3 -0
  300. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +12 -0
  301. package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.js +3 -0
  302. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +7 -0
  303. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  304. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +7 -0
  305. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +9 -0
  306. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +18 -0
  307. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.js +3 -0
  308. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +13 -0
  309. package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.js +3 -0
  310. package/r-bridge/lang-4.x/ast/model/operators.d.ts +46 -0
  311. package/r-bridge/lang-4.x/ast/model/operators.js +67 -0
  312. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +81 -0
  313. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +342 -0
  314. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +10 -0
  315. package/r-bridge/lang-4.x/ast/model/processing/fold.js +20 -0
  316. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +5 -0
  317. package/r-bridge/lang-4.x/ast/model/processing/index.js +22 -0
  318. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +41 -0
  319. package/r-bridge/lang-4.x/ast/model/processing/role.js +17 -0
  320. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +61 -0
  321. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +87 -0
  322. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +13 -0
  323. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +109 -0
  324. package/r-bridge/lang-4.x/ast/model/type.d.ts +206 -0
  325. package/r-bridge/lang-4.x/ast/model/type.js +18 -0
  326. package/r-bridge/lang-4.x/ast/model/versions.d.ts +9 -0
  327. package/r-bridge/lang-4.x/ast/model/versions.js +13 -0
  328. package/r-bridge/lang-4.x/ast/parser/xml/common/config.js +16 -0
  329. package/r-bridge/lang-4.x/ast/parser/xml/common/input-format.js +42 -0
  330. package/r-bridge/lang-4.x/ast/parser/xml/common/meta.js +118 -0
  331. package/r-bridge/lang-4.x/ast/parser/xml/common/xml-to-json.js +58 -0
  332. package/r-bridge/lang-4.x/ast/parser/xml/config.d.ts +25 -0
  333. package/r-bridge/lang-4.x/ast/parser/xml/config.js +16 -0
  334. package/r-bridge/lang-4.x/ast/parser/xml/data.d.ts +22 -0
  335. package/r-bridge/lang-4.x/ast/parser/xml/data.js +3 -0
  336. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +292 -0
  337. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +136 -0
  338. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +5 -0
  339. package/r-bridge/lang-4.x/ast/parser/xml/index.js +22 -0
  340. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +32 -0
  341. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +33 -0
  342. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.d.ts +12 -0
  343. package/r-bridge/lang-4.x/ast/parser/xml/internal/access.js +107 -0
  344. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.d.ts +15 -0
  345. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then-else.js +32 -0
  346. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.d.ts +13 -0
  347. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/if-then.js +46 -0
  348. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +2 -0
  349. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +19 -0
  350. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +10 -0
  351. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +65 -0
  352. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +1 -0
  353. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +18 -0
  354. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.d.ts +13 -0
  355. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/argument.js +74 -0
  356. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.d.ts +13 -0
  357. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/call.js +149 -0
  358. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +12 -0
  359. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.js +60 -0
  360. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +2 -0
  361. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +20 -0
  362. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.d.ts +13 -0
  363. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/parameter.js +64 -0
  364. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +10 -0
  365. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +27 -0
  366. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +4 -0
  367. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.js +24 -0
  368. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +4 -0
  369. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.js +72 -0
  370. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +5 -0
  371. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +22 -0
  372. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +4 -0
  373. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.js +24 -0
  374. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +13 -0
  375. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.js +42 -0
  376. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +4 -0
  377. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.js +45 -0
  378. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.d.ts +50 -0
  379. package/r-bridge/lang-4.x/ast/parser/xml/internal/meta.js +118 -0
  380. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.d.ts +8 -0
  381. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/binary.js +162 -0
  382. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +3 -0
  383. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +20 -0
  384. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +6 -0
  385. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +24 -0
  386. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +13 -0
  387. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +59 -0
  388. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +11 -0
  389. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.js +34 -0
  390. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +1 -0
  391. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +18 -0
  392. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +12 -0
  393. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.js +55 -0
  394. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +10 -0
  395. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +159 -0
  396. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +3 -0
  397. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +20 -0
  398. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +4 -0
  399. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +34 -0
  400. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +13 -0
  401. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +64 -0
  402. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +3 -0
  403. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +20 -0
  404. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +13 -0
  405. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.js +56 -0
  406. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +11 -0
  407. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.js +41 -0
  408. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.d.ts +14 -0
  409. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/symbol.js +56 -0
  410. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.d.ts +9 -0
  411. package/r-bridge/lang-4.x/ast/parser/xml/internal/xml-to-json.js +51 -0
  412. package/r-bridge/lang-4.x/ast/parser/xml/parser.d.ts +17 -0
  413. package/r-bridge/lang-4.x/ast/parser/xml/parser.js +30 -0
  414. package/r-bridge/lang-4.x/ast/parser/xml/v1/data.js +3 -0
  415. package/r-bridge/lang-4.x/ast/parser/xml/v1/hooks.js +136 -0
  416. package/r-bridge/lang-4.x/ast/parser/xml/v1/index.js +22 -0
  417. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/access.js +107 -0
  418. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then-else.js +32 -0
  419. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/if-then.js +46 -0
  420. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/control/index.js +19 -0
  421. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/expression.js +65 -0
  422. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/expression/index.js +18 -0
  423. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/argument.js +74 -0
  424. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/call.js +149 -0
  425. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/definition.js +60 -0
  426. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/index.js +20 -0
  427. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/functions/parameter.js +64 -0
  428. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/index.js +27 -0
  429. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/break.js +24 -0
  430. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/for.js +72 -0
  431. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/index.js +22 -0
  432. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/next.js +24 -0
  433. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/repeat.js +42 -0
  434. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/loops/while.js +45 -0
  435. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/binary.js +162 -0
  436. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/index.js +20 -0
  437. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/special.js +24 -0
  438. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/operators/unary.js +59 -0
  439. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/comment.js +34 -0
  440. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/index.js +18 -0
  441. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/other/line-directive.js +55 -0
  442. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/elements.js +159 -0
  443. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/index.js +20 -0
  444. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/root.js +34 -0
  445. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/structure/single-element.js +64 -0
  446. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/index.js +20 -0
  447. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/number.js +56 -0
  448. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/string.js +41 -0
  449. package/r-bridge/lang-4.x/ast/parser/xml/v1/internal/values/symbol.js +56 -0
  450. package/r-bridge/lang-4.x/ast/parser/xml/v1/normalize.js +30 -0
  451. package/r-bridge/lang-4.x/ast/parser/xml/v2/data.js +3 -0
  452. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/access.js +95 -0
  453. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/expression.js +99 -0
  454. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/functions/argument.js +71 -0
  455. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/binary.js +30 -0
  456. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/index.js +19 -0
  457. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/operators/unary.js +35 -0
  458. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/comment.js +25 -0
  459. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/index.js +18 -0
  460. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/other/line-directive.js +38 -0
  461. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/root.js +26 -0
  462. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/single-element.js +63 -0
  463. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/index.js +18 -0
  464. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/number.js +46 -0
  465. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/string.js +33 -0
  466. package/r-bridge/lang-4.x/ast/parser/xml/v2/internal/values/symbol.js +63 -0
  467. package/r-bridge/lang-4.x/ast/parser/xml/v2/normalize.js +25 -0
  468. package/r-bridge/lang-4.x/index.d.ts +2 -0
  469. package/r-bridge/lang-4.x/index.js +19 -0
  470. package/r-bridge/lang-4.x/values.d.ts +39 -0
  471. package/r-bridge/lang-4.x/values.js +149 -0
  472. package/r-bridge/retriever.d.ts +48 -0
  473. package/r-bridge/retriever.js +71 -0
  474. package/r-bridge/shell.d.ts +147 -0
  475. package/r-bridge/shell.js +423 -0
  476. package/reconstruct/reconstruct.d.ts +28 -0
  477. package/reconstruct/reconstruct.js +448 -0
  478. package/slicing/criterion/collect-all.d.ts +36 -0
  479. package/slicing/criterion/collect-all.js +23 -0
  480. package/slicing/criterion/filters/all-variables.d.ts +2 -0
  481. package/slicing/criterion/filters/all-variables.js +63 -0
  482. package/slicing/criterion/filters/index.d.ts +1 -0
  483. package/slicing/criterion/filters/index.js +18 -0
  484. package/slicing/criterion/index.d.ts +3 -0
  485. package/slicing/criterion/index.js +20 -0
  486. package/slicing/criterion/parse.d.ts +20 -0
  487. package/slicing/criterion/parse.js +79 -0
  488. package/slicing/index.d.ts +3 -0
  489. package/slicing/index.js +20 -0
  490. package/slicing/static/index.d.ts +1 -0
  491. package/slicing/static/index.js +18 -0
  492. package/slicing/static/static-slicer.d.ts +29 -0
  493. package/slicing/static/static-slicer.js +186 -0
  494. package/statistics/features/common-syntax-probability.d.ts +30 -0
  495. package/statistics/features/common-syntax-probability.js +159 -0
  496. package/statistics/features/feature.d.ts +175 -0
  497. package/statistics/features/feature.js +30 -0
  498. package/statistics/features/index.d.ts +1 -0
  499. package/statistics/features/index.js +18 -0
  500. package/statistics/features/post-processing.d.ts +12 -0
  501. package/statistics/features/post-processing.js +21 -0
  502. package/statistics/features/supported/assignments/assignments.d.ts +11 -0
  503. package/statistics/features/supported/assignments/assignments.js +53 -0
  504. package/statistics/features/supported/assignments/index.d.ts +1 -0
  505. package/statistics/features/supported/assignments/index.js +6 -0
  506. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  507. package/statistics/features/supported/assignments/post-process.js +125 -0
  508. package/statistics/features/supported/comments/comments.d.ts +18 -0
  509. package/statistics/features/supported/comments/comments.js +133 -0
  510. package/statistics/features/supported/comments/index.d.ts +1 -0
  511. package/statistics/features/supported/comments/index.js +6 -0
  512. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  513. package/statistics/features/supported/comments/post-process.js +50 -0
  514. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  515. package/statistics/features/supported/control-flow/control-flow.js +67 -0
  516. package/statistics/features/supported/control-flow/index.d.ts +1 -0
  517. package/statistics/features/supported/control-flow/index.js +6 -0
  518. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  519. package/statistics/features/supported/control-flow/post-process.js +65 -0
  520. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  521. package/statistics/features/supported/data-access/data-access.js +118 -0
  522. package/statistics/features/supported/data-access/index.d.ts +1 -0
  523. package/statistics/features/supported/data-access/index.js +6 -0
  524. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  525. package/statistics/features/supported/data-access/post-process.js +107 -0
  526. package/statistics/features/supported/defined-functions/defined-functions.d.ts +35 -0
  527. package/statistics/features/supported/defined-functions/defined-functions.js +139 -0
  528. package/statistics/features/supported/defined-functions/index.d.ts +1 -0
  529. package/statistics/features/supported/defined-functions/index.js +6 -0
  530. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  531. package/statistics/features/supported/defined-functions/post-process.js +177 -0
  532. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  533. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  534. package/statistics/features/supported/expression-list/index.d.ts +1 -0
  535. package/statistics/features/supported/expression-list/index.js +6 -0
  536. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  537. package/statistics/features/supported/expression-list/post-process.js +44 -0
  538. package/statistics/features/supported/index.d.ts +10 -0
  539. package/statistics/features/supported/index.js +27 -0
  540. package/statistics/features/supported/loops/index.d.ts +1 -0
  541. package/statistics/features/supported/loops/index.js +6 -0
  542. package/statistics/features/supported/loops/loops.d.ts +20 -0
  543. package/statistics/features/supported/loops/loops.js +79 -0
  544. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  545. package/statistics/features/supported/loops/post-process.js +72 -0
  546. package/statistics/features/supported/used-functions/index.d.ts +1 -0
  547. package/statistics/features/supported/used-functions/index.js +6 -0
  548. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  549. package/statistics/features/supported/used-functions/post-process.js +179 -0
  550. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  551. package/statistics/features/supported/used-functions/used-functions.js +95 -0
  552. package/statistics/features/supported/used-packages/index.d.ts +1 -0
  553. package/statistics/features/supported/used-packages/index.js +6 -0
  554. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  555. package/statistics/features/supported/used-packages/post-process.js +121 -0
  556. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  557. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  558. package/statistics/features/supported/values/index.d.ts +1 -0
  559. package/statistics/features/supported/values/index.js +6 -0
  560. package/statistics/features/supported/values/post-process.d.ts +3 -0
  561. package/statistics/features/supported/values/post-process.js +72 -0
  562. package/statistics/features/supported/values/values.d.ts +14 -0
  563. package/statistics/features/supported/values/values.js +101 -0
  564. package/statistics/features/supported/variables/index.d.ts +1 -0
  565. package/statistics/features/supported/variables/index.js +6 -0
  566. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  567. package/statistics/features/supported/variables/post-process.js +122 -0
  568. package/statistics/features/supported/variables/variables.d.ts +15 -0
  569. package/statistics/features/supported/variables/variables.js +70 -0
  570. package/statistics/index.d.ts +6 -0
  571. package/statistics/index.js +24 -0
  572. package/statistics/meta-statistics.d.ts +33 -0
  573. package/statistics/meta-statistics.js +17 -0
  574. package/statistics/output/ansi.d.ts +50 -0
  575. package/statistics/output/ansi.js +58 -0
  576. package/statistics/output/file-provider.d.ts +37 -0
  577. package/statistics/output/file-provider.js +97 -0
  578. package/statistics/output/index.d.ts +4 -0
  579. package/statistics/output/index.js +21 -0
  580. package/statistics/output/print-stats.d.ts +17 -0
  581. package/statistics/output/print-stats.js +69 -0
  582. package/statistics/output/statistics-file.d.ts +37 -0
  583. package/statistics/output/statistics-file.js +69 -0
  584. package/statistics/statistics.d.ts +24 -0
  585. package/statistics/statistics.js +109 -0
  586. package/util/args.d.ts +14 -0
  587. package/util/args.js +67 -0
  588. package/util/arrays.d.ts +44 -0
  589. package/util/arrays.js +145 -0
  590. package/util/assert.d.ts +11 -0
  591. package/util/assert.js +35 -0
  592. package/util/bimap.d.ts +24 -0
  593. package/util/bimap.js +71 -0
  594. package/util/cfg.d.ts +55 -0
  595. package/util/cfg.js +498 -0
  596. package/util/defaultmap.d.ts +34 -0
  597. package/util/defaultmap.js +65 -0
  598. package/util/diff.d.ts +43 -0
  599. package/util/diff.js +28 -0
  600. package/util/files.d.ts +54 -0
  601. package/util/files.js +144 -0
  602. package/util/json.d.ts +2 -0
  603. package/util/json.js +28 -0
  604. package/util/log.d.ts +22 -0
  605. package/util/log.js +48 -0
  606. package/util/mermaid/ast.d.ts +6 -0
  607. package/util/mermaid/ast.js +28 -0
  608. package/util/mermaid/cfg.d.ts +7 -0
  609. package/util/mermaid/cfg.js +44 -0
  610. package/util/mermaid/dfg.d.ts +21 -0
  611. package/util/mermaid/dfg.js +165 -0
  612. package/util/mermaid/index.d.ts +3 -0
  613. package/util/mermaid/index.js +20 -0
  614. package/util/mermaid/mermaid.d.ts +7 -0
  615. package/util/mermaid/mermaid.js +24 -0
  616. package/util/numbers.d.ts +1 -0
  617. package/util/numbers.js +9 -0
  618. package/util/objects.d.ts +17 -0
  619. package/util/objects.js +60 -0
  620. package/util/os.d.ts +2 -0
  621. package/util/os.js +25 -0
  622. package/util/parallel.d.ts +30 -0
  623. package/util/parallel.js +103 -0
  624. package/util/quads.d.ts +92 -0
  625. package/util/quads.js +189 -0
  626. package/util/random.d.ts +4 -0
  627. package/util/random.js +22 -0
  628. package/util/range.d.ts +32 -0
  629. package/util/range.js +61 -0
  630. package/util/set.d.ts +8 -0
  631. package/util/set.js +32 -0
  632. package/util/strings.d.ts +12 -0
  633. package/util/strings.js +41 -0
  634. package/util/summarizer/auto-detect.d.ts +2 -0
  635. package/util/summarizer/auto-detect.js +32 -0
  636. package/util/summarizer/benchmark/benchmark-summarizer.js +208 -0
  637. package/util/summarizer/benchmark/data.d.ts +66 -0
  638. package/util/summarizer/benchmark/data.js +13 -0
  639. package/util/summarizer/benchmark/first-phase/input.d.ts +2 -0
  640. package/util/summarizer/benchmark/first-phase/input.js +59 -0
  641. package/util/summarizer/benchmark/first-phase/process.d.ts +10 -0
  642. package/util/summarizer/benchmark/first-phase/process.js +208 -0
  643. package/util/summarizer/benchmark/second-phase/graph.d.ts +2 -0
  644. package/util/summarizer/benchmark/second-phase/graph.js +54 -0
  645. package/util/summarizer/benchmark/second-phase/process.d.ts +4 -0
  646. package/util/summarizer/benchmark/second-phase/process.js +89 -0
  647. package/util/summarizer/benchmark/summarizer.d.ts +34 -0
  648. package/util/summarizer/benchmark/summarizer.js +53 -0
  649. package/util/summarizer/statistics/first-phase/process.d.ts +6 -0
  650. package/util/summarizer/statistics/first-phase/process.js +81 -0
  651. package/util/summarizer/statistics/post-process/clusterer.d.ts +26 -0
  652. package/util/summarizer/statistics/post-process/clusterer.js +43 -0
  653. package/util/summarizer/statistics/post-process/file-based-count.d.ts +17 -0
  654. package/util/summarizer/statistics/post-process/file-based-count.js +49 -0
  655. package/util/summarizer/statistics/post-process/histogram.d.ts +59 -0
  656. package/util/summarizer/statistics/post-process/histogram.js +128 -0
  657. package/util/summarizer/statistics/post-process/index.d.ts +4 -0
  658. package/util/summarizer/statistics/post-process/index.js +21 -0
  659. package/util/summarizer/statistics/post-process/post-process-output.d.ts +16 -0
  660. package/util/summarizer/statistics/post-process/post-process-output.js +104 -0
  661. package/util/summarizer/statistics/second-phase/process.d.ts +11 -0
  662. package/util/summarizer/statistics/second-phase/process.js +117 -0
  663. package/util/summarizer/statistics/summarizer.d.ts +34 -0
  664. package/util/summarizer/statistics/summarizer.js +135 -0
  665. package/util/summarizer/summarizer.d.ts +25 -0
  666. package/util/summarizer/summarizer.js +13 -0
  667. package/util/time.d.ts +6 -0
  668. package/util/time.js +13 -0
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowRServerConnection = void 0;
4
+ const core_1 = require("../../../core");
5
+ const r_bridge_1 = require("../../../r-bridge");
6
+ const send_1 = require("./send");
7
+ const validate_1 = require("./validate");
8
+ const analysis_1 = require("./messages/analysis");
9
+ const slice_1 = require("./messages/slice");
10
+ const server_1 = require("./server");
11
+ const repl_1 = require("./messages/repl");
12
+ const core_2 = require("../core");
13
+ const statistics_1 = require("../../../statistics");
14
+ const cfg_1 = require("../../../util/cfg");
15
+ const quads_1 = require("../../../util/quads");
16
+ const objects_1 = require("../../../util/objects");
17
+ /**
18
+ * Each connection handles a single client, answering to its requests.
19
+ * There is no need to construct this class manually, {@link FlowRServer} will do it for you.
20
+ */
21
+ class FlowRServerConnection {
22
+ socket;
23
+ shell;
24
+ name;
25
+ logger;
26
+ // maps token to information
27
+ fileMap = new Map();
28
+ // we do not have to ensure synchronized shell-access as we are always running synchronized
29
+ constructor(socket, name, shell) {
30
+ this.socket = socket;
31
+ this.shell = shell;
32
+ this.name = name;
33
+ this.logger = server_1.serverLog.getSubLogger({ name });
34
+ this.socket.on('data', data => this.handleData(String(data)));
35
+ this.socket.on('error', e => this.logger.error(`[${this.name}] Error while handling connection: ${String(e)}`));
36
+ }
37
+ currentMessageBuffer = '';
38
+ handleData(message) {
39
+ if (!message.endsWith('\n')) {
40
+ this.currentMessageBuffer += message;
41
+ this.logger.trace(`[${this.name}] Received partial message. Buffering ${this.currentMessageBuffer.length}.`);
42
+ return;
43
+ }
44
+ message = this.currentMessageBuffer + message;
45
+ if (this.logger.settings.minLevel >= 2 /* LogLevel.Debug */) {
46
+ this.logger.debug(`[${this.name}] Received message: ${message}`);
47
+ }
48
+ this.currentMessageBuffer = '';
49
+ const request = (0, validate_1.validateBaseMessageFormat)(message);
50
+ if (request.type === 'error') {
51
+ (0, validate_1.answerForValidationError)(this.socket, request);
52
+ return;
53
+ }
54
+ switch (request.message.type) {
55
+ case 'request-file-analysis':
56
+ this.handleFileAnalysisRequest(request.message);
57
+ break;
58
+ case 'request-slice':
59
+ this.handleSliceRequest(request.message);
60
+ break;
61
+ case 'request-repl-execution':
62
+ this.handleRepl(request.message);
63
+ break;
64
+ default:
65
+ (0, send_1.sendMessage)(this.socket, {
66
+ id: request.message.id,
67
+ type: 'error',
68
+ fatal: true,
69
+ reason: `The message type ${JSON.stringify(request.message.type ?? 'undefined')} is not supported.`
70
+ });
71
+ this.socket.end();
72
+ }
73
+ }
74
+ handleFileAnalysisRequest(base) {
75
+ const requestResult = (0, validate_1.validateMessage)(base, analysis_1.requestAnalysisMessage);
76
+ if (requestResult.type === 'error') {
77
+ (0, validate_1.answerForValidationError)(this.socket, requestResult, base.id);
78
+ return;
79
+ }
80
+ const message = requestResult.message;
81
+ this.logger.info(`[${this.name}] Received file analysis request for ${message.filename ?? 'unknown file'}${message.filetoken ? ' with token: ' + message.filetoken : ''}`);
82
+ if (message.filetoken && this.fileMap.has(message.filetoken)) {
83
+ this.logger.warn(`File token ${message.filetoken} already exists. Overwriting.`);
84
+ }
85
+ const slicer = this.createSteppingSlicerForRequest(message);
86
+ void slicer.allRemainingSteps(false).then(async (results) => await this.sendFileAnalysisResponse(results, message))
87
+ .catch(e => {
88
+ this.logger.error(`[${this.name}] Error while analyzing file ${message.filename ?? 'unknown file'}: ${String(e)}`);
89
+ (0, send_1.sendMessage)(this.socket, {
90
+ id: message.id,
91
+ type: 'error',
92
+ fatal: false,
93
+ reason: `Error while analyzing file ${message.filename ?? 'unknown file'}: ${String(e)}`
94
+ });
95
+ });
96
+ }
97
+ async sendFileAnalysisResponse(results, message) {
98
+ let cfg = undefined;
99
+ if (message.cfg) {
100
+ cfg = (0, cfg_1.extractCFG)(results.normalize);
101
+ }
102
+ const config = () => ({ context: message.filename ?? 'unknown', getId: (0, quads_1.defaultQuadIdGenerator)() });
103
+ const parseConfig = (0, objects_1.deepMergeObject)(r_bridge_1.DEFAULT_XML_PARSER_CONFIG, { tokenMap: await this.shell.tokenMap() });
104
+ if (message.format === 'n-quads') {
105
+ (0, send_1.sendMessage)(this.socket, {
106
+ type: 'response-file-analysis',
107
+ format: 'n-quads',
108
+ id: message.id,
109
+ cfg: cfg ? (0, cfg_1.cfg2quads)(cfg, config()) : undefined,
110
+ results: {
111
+ parse: await (0, core_1.printStepResult)('parse', results.parse, 5 /* StepOutputFormat.RdfQuads */, config(), parseConfig),
112
+ normalize: await (0, core_1.printStepResult)('normalize', results.normalize, 5 /* StepOutputFormat.RdfQuads */, config()),
113
+ dataflow: await (0, core_1.printStepResult)('dataflow', results.dataflow, 5 /* StepOutputFormat.RdfQuads */, config()),
114
+ }
115
+ });
116
+ }
117
+ else {
118
+ (0, send_1.sendMessage)(this.socket, {
119
+ type: 'response-file-analysis',
120
+ format: 'json',
121
+ id: message.id,
122
+ cfg,
123
+ results: {
124
+ ...results,
125
+ normalize: {
126
+ ...results.normalize,
127
+ idMap: undefined
128
+ }
129
+ }
130
+ });
131
+ }
132
+ }
133
+ createSteppingSlicerForRequest(message) {
134
+ const slicer = new core_1.SteppingSlicer({
135
+ stepOfInterest: core_1.LAST_STEP,
136
+ shell: this.shell,
137
+ // we have to make sure, that the content is not interpreted as a file path if it starts with 'file://' therefore, we do it manually
138
+ request: {
139
+ request: message.content === undefined ? 'file' : 'text',
140
+ content: message.content ?? message.filepath,
141
+ ensurePackageInstalled: false
142
+ },
143
+ criterion: [] // currently unknown
144
+ });
145
+ if (message.filetoken) {
146
+ this.logger.info(`Storing file token ${message.filetoken}`);
147
+ this.fileMap.set(message.filetoken, {
148
+ filename: message.filename,
149
+ slicer
150
+ });
151
+ }
152
+ return slicer;
153
+ }
154
+ handleSliceRequest(base) {
155
+ const requestResult = (0, validate_1.validateMessage)(base, slice_1.requestSliceMessage);
156
+ if (requestResult.type === 'error') {
157
+ (0, validate_1.answerForValidationError)(this.socket, requestResult, base.id);
158
+ return;
159
+ }
160
+ const request = requestResult.message;
161
+ this.logger.info(`[${request.filetoken}] Received slice request with criteria ${JSON.stringify(request.criterion)}`);
162
+ const fileInformation = this.fileMap.get(request.filetoken);
163
+ if (!fileInformation) {
164
+ (0, send_1.sendMessage)(this.socket, {
165
+ id: request.id,
166
+ type: 'error',
167
+ fatal: false,
168
+ reason: `The file token ${request.filetoken} has never been analyzed.`
169
+ });
170
+ return;
171
+ }
172
+ fileInformation.slicer.updateCriterion(request.criterion);
173
+ void fileInformation.slicer.allRemainingSteps(true).then(results => {
174
+ (0, send_1.sendMessage)(this.socket, {
175
+ type: 'response-slice',
176
+ id: request.id,
177
+ results: Object.fromEntries(Object.entries(results).filter(([k,]) => Object.hasOwn(core_1.STEPS_PER_SLICE, k)))
178
+ });
179
+ }).catch(e => {
180
+ this.logger.error(`[${this.name}] Error while analyzing file for token ${request.filetoken}: ${String(e)}`);
181
+ (0, send_1.sendMessage)(this.socket, {
182
+ id: request.id,
183
+ type: 'error',
184
+ fatal: false,
185
+ reason: `Error while analyzing file for token ${request.filetoken}: ${String(e)}`
186
+ });
187
+ });
188
+ }
189
+ handleRepl(base) {
190
+ const requestResult = (0, validate_1.validateMessage)(base, repl_1.requestExecuteReplExpressionMessage);
191
+ if (requestResult.type === 'error') {
192
+ (0, validate_1.answerForValidationError)(this.socket, requestResult, base.id);
193
+ return;
194
+ }
195
+ const request = requestResult.message;
196
+ const out = (stream, msg) => {
197
+ (0, send_1.sendMessage)(this.socket, {
198
+ type: 'response-repl-execution',
199
+ id: request.id,
200
+ result: msg,
201
+ stream
202
+ });
203
+ };
204
+ void (0, core_2.replProcessAnswer)({
205
+ formatter: request.ansi ? statistics_1.ansiFormatter : statistics_1.voidFormatter,
206
+ stdout: msg => out('stdout', msg),
207
+ stderr: msg => out('stderr', msg)
208
+ }, request.expression, this.shell).then(() => {
209
+ (0, send_1.sendMessage)(this.socket, {
210
+ type: 'end-repl-execution',
211
+ id: request.id
212
+ });
213
+ });
214
+ }
215
+ }
216
+ exports.FlowRServerConnection = FlowRServerConnection;
217
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1,71 @@
1
+ import { IdMessageBase, MessageDefinition } from './messages';
2
+ import { LAST_PER_FILE_STEP, StepResults } from '../../../../core';
3
+ import { ControlFlowInformation } from '../../../../util/cfg';
4
+ /**
5
+ * Send by the client to request an analysis of a given file.
6
+ * Answered by either an {@link FlowrErrorMessage} or a {@link FileAnalysisResponseMessageJson}.
7
+ */
8
+ export interface FileAnalysisRequestMessage extends IdMessageBase {
9
+ type: 'request-file-analysis';
10
+ /**
11
+ * This is a unique token that you assign to subsequently slice the respective files.
12
+ * If you pass the same token multiple times, previous results will be overwritten.
13
+ *
14
+ * If you do not pass a file token, the server will _not_ store the results!
15
+ */
16
+ filetoken?: string;
17
+ /**
18
+ * A human-readable file name. If you present a `filepath` or read from a file this should be straightforward.
19
+ * However, the name is only for debugging and bears no semantic meaning.
20
+ */
21
+ filename?: string;
22
+ /** The contents of the file, or an R expression itself (like `1 + 1`), give either this or the `filepath`. */
23
+ content?: string;
24
+ /** The filepath on the local machine, accessible to flowR, or simply. Give either this or the `content` */
25
+ filepath?: string;
26
+ /** Can be used to additionally extract the {@link ControlFlowInformation} of the file, which is not exposed (and not fully calculated) by default. */
27
+ cfg?: boolean;
28
+ /** Controls the serialization of the `results` (and the {@link ControlFlowGraph} if the corresponding flag is set). If missing, we assume _json_. */
29
+ format?: 'json' | 'n-quads';
30
+ }
31
+ export declare const requestAnalysisMessage: MessageDefinition<FileAnalysisRequestMessage>;
32
+ /**
33
+ * Answer for a successful {@link FileAnalysisRequestMessage}.
34
+ * It contains the results of the analysis in JSON format (guided by {@link FileAnalysisRequestMessage#format}).
35
+ *
36
+ * The `idMap` of the normalization step (see {@link NormalizedAst}) is not serialized as it would essentially
37
+ * repeat the complete normalized AST.
38
+ *
39
+ * @note The serialization of maps and sets is controlled by the {@link jsonReplacer} as part of {@link sendMessage}.
40
+ *
41
+ * @see FileAnalysisResponseMessageNQuads
42
+ */
43
+ export interface FileAnalysisResponseMessageJson extends IdMessageBase {
44
+ type: 'response-file-analysis';
45
+ format: 'json';
46
+ /**
47
+ * See the {@link SteppingSlicer} and {@link StepResults} for details on the results.
48
+ */
49
+ results: StepResults<typeof LAST_PER_FILE_STEP>;
50
+ /**
51
+ * Only if the {@link FileAnalysisRequestMessage} contained a `cfg: true` this will contain the {@link ControlFlowInformation} of the file.
52
+ */
53
+ cfg?: ControlFlowInformation;
54
+ }
55
+ /**
56
+ * Similar to {@link FileAnalysisResponseMessageJson} but using n-quads as serialization format.
57
+ */
58
+ export interface FileAnalysisResponseMessageNQuads extends IdMessageBase {
59
+ type: 'response-file-analysis';
60
+ format: 'n-quads';
61
+ /**
62
+ * @see FileAnalysisResponseMessageJson#results
63
+ */
64
+ results: {
65
+ [K in keyof StepResults<typeof LAST_PER_FILE_STEP>]: string;
66
+ };
67
+ /**
68
+ * @see FileAnalysisResponseMessageJson#cfg
69
+ */
70
+ cfg?: string;
71
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.requestAnalysisMessage = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ exports.requestAnalysisMessage = {
9
+ type: 'request-file-analysis',
10
+ schema: joi_1.default.object({
11
+ type: joi_1.default.string().valid('request-file-analysis').required(),
12
+ id: joi_1.default.string().optional(),
13
+ filetoken: joi_1.default.string().optional(),
14
+ filename: joi_1.default.string().optional(),
15
+ content: joi_1.default.string().optional(),
16
+ filepath: joi_1.default.string().optional(),
17
+ cfg: joi_1.default.boolean().optional(),
18
+ format: joi_1.default.string().valid('json', 'n-quads').optional()
19
+ }).xor('content', 'filepath')
20
+ };
21
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1,11 @@
1
+ import { IdMessageBase } from './messages';
2
+ /**
3
+ * Sent in case of any error (e.g., if the analysis fails, or the message contains syntax errors).
4
+ */
5
+ export interface FlowrErrorMessage extends IdMessageBase {
6
+ type: 'error';
7
+ /** if fatal, the connection will be partially closed afterward */
8
+ fatal: boolean;
9
+ /** the human-readable reason for the error */
10
+ reason: string;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1,20 @@
1
+ import { VersionInformation } from '../../commands/version';
2
+ import { IdMessageBase } from './messages';
3
+ /**
4
+ * The hello message is automatically send by the sever upon connection.
5
+ */
6
+ export interface FlowrHelloResponseMessage extends IdMessageBase {
7
+ type: 'hello';
8
+ /** The hello message never has an id, it is always undefined */
9
+ id: undefined;
10
+ /**
11
+ * A unique name that is assigned to each client.
12
+ * It has no semantic meaning and is only used/useful for debugging.
13
+ */
14
+ clientName: string;
15
+ /**
16
+ * Describes which versions are in use on the server.
17
+ * @see VersionInformation
18
+ */
19
+ versions: VersionInformation;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=hello.js.map
@@ -0,0 +1 @@
1
+ export { FlowrMessage } from './messages';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Provides the capability of connecting to the repl of flowr via messages.
3
+ *
4
+ * @module
5
+ */
6
+ import Joi from 'joi';
7
+ import { FlowrHelloResponseMessage } from './hello';
8
+ import { FileAnalysisRequestMessage, FileAnalysisResponseMessageJson } from './analysis';
9
+ import { ExecuteEndMessage, ExecuteIntermediateResponseMessage, ExecuteRequestMessage } from './repl';
10
+ import { SliceRequestMessage, SliceResponseMessage } from './slice';
11
+ import { FlowrErrorMessage } from './error';
12
+ /**
13
+ * If you send a message it must *not* contain a newline but the message must be terminated by a newline.
14
+ */
15
+ export interface IdMessageBase {
16
+ /**
17
+ * The at this time unknown type
18
+ */
19
+ type: string;
20
+ /**
21
+ * The id that links a request with its responses, it is up to the calling client to make sure it is unique.
22
+ * However, the client does not have to pass the id if it does not need to link the request with its response.
23
+ * The id is always undefined if the message is unprompted (e.g., with hello) or the id unknown.
24
+ */
25
+ id: string | undefined;
26
+ }
27
+ export interface MessageDefinition<T extends FlowrMessage | IdMessageBase> {
28
+ type: T['type'] | undefined;
29
+ schema: Joi.Schema;
30
+ }
31
+ export declare const baseMessage: MessageDefinition<IdMessageBase>;
32
+ /**
33
+ * This is the main message type that should be used to represent a message in *flowR*
34
+ */
35
+ export type FlowrMessage = FlowrHelloResponseMessage | FileAnalysisRequestMessage | FileAnalysisResponseMessageJson | ExecuteRequestMessage | ExecuteIntermediateResponseMessage | ExecuteEndMessage | SliceRequestMessage | SliceResponseMessage | FlowrErrorMessage;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.baseMessage = void 0;
7
+ /**
8
+ * Provides the capability of connecting to the repl of flowr via messages.
9
+ *
10
+ * @module
11
+ */
12
+ const joi_1 = __importDefault(require("joi"));
13
+ exports.baseMessage = {
14
+ type: '**base**',
15
+ schema: joi_1.default.object({
16
+ type: joi_1.default.string().required(),
17
+ id: joi_1.default.string().optional()
18
+ }).unknown(true)
19
+ };
20
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1,33 @@
1
+ import { IdMessageBase, MessageDefinition } from './messages';
2
+ /**
3
+ * Request the execution of the given expression as a REPL statement.
4
+ * We strongly recommend that you make use of a unique {@link IdMessageBase#id}
5
+ * in case the message responses happen in parallel.
6
+ *
7
+ * @see ExecuteIntermediateResponseMessage
8
+ * @see ExecuteEndMessage
9
+ */
10
+ export interface ExecuteRequestMessage extends IdMessageBase {
11
+ type: 'request-repl-execution';
12
+ /** Should ansi formatting be enabled for the response? Is `false` by default. */
13
+ ansi?: boolean;
14
+ /** The expression to execute */
15
+ expression: string;
16
+ }
17
+ export declare const requestExecuteReplExpressionMessage: MessageDefinition<ExecuteRequestMessage>;
18
+ /**
19
+ * This message may be sent multiple times, triggered for every "output" performed by the execution.
20
+ * {@link ExecuteEndMessage} marks the end of these messages.
21
+ */
22
+ export interface ExecuteIntermediateResponseMessage extends IdMessageBase {
23
+ type: 'response-repl-execution';
24
+ stream: 'stdout' | 'stderr';
25
+ result: string;
26
+ }
27
+ /**
28
+ * Marks the end of the execution of the respective {@link ExecuteRequestMessage}.
29
+ * The underlying TCP connection should ensure the ordering so that this message is the last.
30
+ */
31
+ export interface ExecuteEndMessage extends IdMessageBase {
32
+ type: 'end-repl-execution';
33
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.requestExecuteReplExpressionMessage = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ exports.requestExecuteReplExpressionMessage = {
9
+ type: 'request-repl-execution',
10
+ schema: joi_1.default.object({
11
+ type: joi_1.default.string().valid('request-repl-execution').required(),
12
+ id: joi_1.default.string().optional(),
13
+ ansi: joi_1.default.boolean().optional(),
14
+ expression: joi_1.default.string().required(),
15
+ })
16
+ };
17
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1,25 @@
1
+ import { SlicingCriteria } from '../../../../slicing';
2
+ import { LAST_PER_FILE_STEP, LAST_STEP, StepResults } from '../../../../core';
3
+ import { IdMessageBase, MessageDefinition } from './messages';
4
+ /**
5
+ * Can only be sent after you have sent the {@link FileAnalysisRequestMessage}.
6
+ * Using the same `filetoken` as in the {@link FileAnalysisRequestMessage} you
7
+ * can slice the respective file given the respective criteria.
8
+ */
9
+ export interface SliceRequestMessage extends IdMessageBase {
10
+ type: 'request-slice';
11
+ /** The {@link FileAnalysisRequestMessage#filetoken} of the file/data to slice */
12
+ filetoken: string;
13
+ /** The slicing criteria to use */
14
+ criterion: SlicingCriteria;
15
+ }
16
+ export declare const requestSliceMessage: MessageDefinition<SliceRequestMessage>;
17
+ /**
18
+ * Similar to {@link FileAnalysisResponseMessage} this only contains the results of
19
+ * the slice steps.
20
+ */
21
+ export interface SliceResponseMessage extends IdMessageBase {
22
+ type: 'response-slice';
23
+ /** only contains the results of the slice steps to not repeat ourselves */
24
+ results: Omit<StepResults<typeof LAST_STEP>, keyof StepResults<typeof LAST_PER_FILE_STEP>>;
25
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.requestSliceMessage = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ exports.requestSliceMessage = {
9
+ type: 'request-slice',
10
+ schema: joi_1.default.object({
11
+ type: joi_1.default.string().valid('request-slice').required(),
12
+ id: joi_1.default.string().optional(),
13
+ filetoken: joi_1.default.string().required(),
14
+ criterion: joi_1.default.array().items(joi_1.default.string().regex(/\d+:\d+|\d+@.*|\$\d+/)).min(0).required()
15
+ })
16
+ };
17
+ //# sourceMappingURL=slice.js.map
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ /** Function handler that should be triggered when the respective socket connects */
3
+ export type OnConnect = (c: Socket) => void;
4
+ /**
5
+ * A generic server interface that allows us to mock the server's behavior in tests.
6
+ */
7
+ export interface Server {
8
+ /**
9
+ * Register a function to be called when a new socket connects.
10
+ * This should be only called once per server.
11
+ */
12
+ onConnect(handler: OnConnect): void;
13
+ start(port: number): void;
14
+ }
15
+ /**
16
+ * The socket abstraction of *flowR*.
17
+ * Essentially a subset of what the default `net.Socket` of `node` provides.
18
+ */
19
+ export interface Socket {
20
+ remoteAddress?: string;
21
+ remotePort?: number;
22
+ on(event: 'error', listener: (e: unknown) => void): void;
23
+ on(event: 'close', listener: () => void): void;
24
+ on(event: 'data', listener: (data: Buffer) => void): void;
25
+ write(data: string): void;
26
+ end(): void;
27
+ }
28
+ export declare class NetServer implements Server {
29
+ private readonly server;
30
+ constructor();
31
+ onConnect(handler: OnConnect): void;
32
+ start(port: number): void;
33
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NetServer = void 0;
7
+ /**
8
+ * This is just a simple layer to allow me to mock the server's behavior in tests.
9
+ */
10
+ const node_net_1 = __importDefault(require("node:net"));
11
+ class NetServer {
12
+ server;
13
+ constructor() {
14
+ this.server = node_net_1.default.createServer();
15
+ }
16
+ onConnect(handler) {
17
+ this.server.on('connection', handler);
18
+ }
19
+ start(port) {
20
+ this.server.listen(port);
21
+ }
22
+ }
23
+ exports.NetServer = NetServer;
24
+ //# sourceMappingURL=net.js.map
@@ -0,0 +1,4 @@
1
+ import { IdMessageBase } from './messages/messages';
2
+ import { Socket } from './net';
3
+ export declare function getUnnamedSocketName(c: Socket): string;
4
+ export declare function sendMessage<T extends IdMessageBase>(c: Socket, message: T): void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendMessage = exports.getUnnamedSocketName = void 0;
4
+ const json_1 = require("../../../util/json");
5
+ const server_1 = require("./server");
6
+ function getUnnamedSocketName(c) {
7
+ return `${c.remoteAddress ?? '?'}@${c.remotePort ?? '?'}`;
8
+ }
9
+ exports.getUnnamedSocketName = getUnnamedSocketName;
10
+ function sendMessage(c, message) {
11
+ const msg = JSON.stringify(message, json_1.jsonReplacer);
12
+ if (server_1.serverLog.settings.minLevel >= 2 /* LogLevel.Debug */) {
13
+ server_1.serverLog.debug(`[${getUnnamedSocketName(c)}] sending message: ${msg}`);
14
+ }
15
+ c.write(`${msg}\n`);
16
+ }
17
+ exports.sendMessage = sendMessage;
18
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1,20 @@
1
+ import { RShell } from '../../../r-bridge';
2
+ import { Server } from './net';
3
+ import { FlowrLogger } from '../../../util/log';
4
+ export declare const serverLog: FlowrLogger;
5
+ /**
6
+ * This class controls the TCP server, which can be started by calling {@link start}.
7
+ * Afterward, each incoming connection will be greeted with {@link helloClient} and from
8
+ * thereon be handled by a {@link FlowRServerConnection}.
9
+ */
10
+ export declare class FlowRServer {
11
+ private readonly server;
12
+ private readonly shell;
13
+ private versionInformation;
14
+ /** maps names to the respective connection */
15
+ private connections;
16
+ private nameCounter;
17
+ constructor(shell: RShell, server?: Server);
18
+ start(port: number): Promise<void>;
19
+ private onConnect;
20
+ }