@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,97 @@
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.StatisticFileProvider = exports.defaultStatisticsFileSuffix = exports.DummyAppendProvider = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const assert_1 = require("../../util/assert");
10
+ const log_1 = require("../../util/log");
11
+ class DummyAppendProvider {
12
+ map;
13
+ /**
14
+ * If you pass a map the dummy will log all append calls to the map, using the feature name and the appendage type as keys
15
+ *
16
+ * @param map - The map to log to
17
+ */
18
+ constructor(map = undefined) {
19
+ this.map = map;
20
+ }
21
+ append(name, fn, content) {
22
+ if (log_1.log.settings.minLevel >= 1 /* LogLevel.Trace */) {
23
+ log_1.log.trace(`DummyAppendProvider: ${name} ${String(fn)} ${content}`);
24
+ }
25
+ if (this.map) {
26
+ const fnMap = this.map.get(name);
27
+ const contentArr = content.split('\n');
28
+ if (fnMap) {
29
+ const contentList = fnMap.get(fn);
30
+ if (contentList) {
31
+ contentList.push(...contentArr);
32
+ }
33
+ else {
34
+ // just in case the map already had some entries
35
+ fnMap.set(fn, contentArr);
36
+ }
37
+ }
38
+ else {
39
+ this.map.set(name, new Map([[fn, contentArr]]));
40
+ }
41
+ }
42
+ }
43
+ }
44
+ exports.DummyAppendProvider = DummyAppendProvider;
45
+ exports.defaultStatisticsFileSuffix = '.txt';
46
+ /**
47
+ * Provides cached open connections for all files to connect.
48
+ * allowing to append to the same file often.
49
+ * <p>
50
+ * While we could simply reopen these files, it is safer/more performant to keep the connection open.
51
+ */
52
+ class StatisticFileProvider {
53
+ statisticsDirectory;
54
+ connections = new Map();
55
+ constructor(statisticsDirectory) {
56
+ (0, assert_1.guard)(statisticsDirectory !== undefined, 'Please supply an output directory!');
57
+ this.statisticsDirectory = statisticsDirectory;
58
+ // just to make sure, that they are closed
59
+ process.on('beforeExit', () => {
60
+ this.connections.forEach(fd => {
61
+ fs_1.default.closeSync(fd);
62
+ });
63
+ });
64
+ }
65
+ /**
66
+ * @param name - the name of the feature {@link Feature#name}
67
+ * @param fn - the name of the feature-aspect to record
68
+ */
69
+ statisticsFile(name, fn) {
70
+ return path_1.default.join(this.statisticsDirectory, name, `${fn}${exports.defaultStatisticsFileSuffix}`);
71
+ }
72
+ /**
73
+ * Append the given content to the information for a feature of the given name and function.
74
+ */
75
+ append(name, fn, content) {
76
+ const descriptor = this.getHandle(name, String(fn));
77
+ fs_1.default.appendFileSync(descriptor, content + '\n', 'utf8');
78
+ }
79
+ getHandle(name, fn) {
80
+ const key = `${name}-${fn}`;
81
+ const fileHandle = this.connections.get(key);
82
+ if (fileHandle) {
83
+ return fileHandle;
84
+ }
85
+ // open the connection and ensure the location
86
+ const filepath = this.statisticsFile(name, String(fn));
87
+ const dirpath = path_1.default.dirname(filepath);
88
+ if (!fs_1.default.existsSync(dirpath)) {
89
+ fs_1.default.mkdirSync(dirpath, { recursive: true });
90
+ }
91
+ const fileDescriptor = fs_1.default.openSync(filepath, 'a');
92
+ this.connections.set(key, fileDescriptor);
93
+ return fileDescriptor;
94
+ }
95
+ }
96
+ exports.StatisticFileProvider = StatisticFileProvider;
97
+ //# sourceMappingURL=file-provider.js.map
@@ -0,0 +1,4 @@
1
+ export * from './print-stats';
2
+ export * from './file-provider';
3
+ export * from './statistics-file';
4
+ export * from './ansi';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./print-stats"), exports);
18
+ __exportStar(require("./file-provider"), exports);
19
+ __exportStar(require("./statistics-file"), exports);
20
+ __exportStar(require("./ansi"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,17 @@
1
+ import { FeatureKey, FeatureStatistics } from '../features';
2
+ import { MetaStatistics } from '../meta-statistics';
3
+ interface MinMaxAvgMedian {
4
+ sum: number;
5
+ min: number;
6
+ max: number;
7
+ avg: number;
8
+ median: number;
9
+ }
10
+ export declare function minMaxAvgAndMedian(data: number[]): MinMaxAvgMedian;
11
+ export declare function statsString(data: MinMaxAvgMedian, suffix?: string): string;
12
+ export declare function printFeatureStatistics(statistics: {
13
+ features: FeatureStatistics;
14
+ meta: MetaStatistics;
15
+ }, features?: 'all' | Set<FeatureKey>): void;
16
+ export declare function printFeatureStatisticsEntry(info: Record<string, unknown>): void;
17
+ export {};
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printFeatureStatisticsEntry = exports.printFeatureStatistics = exports.statsString = exports.minMaxAvgAndMedian = void 0;
4
+ const features_1 = require("../features");
5
+ const ansi_1 = require("./ansi");
6
+ const json_1 = require("../../util/json");
7
+ function minMaxAvgAndMedian(data) {
8
+ data = data.sort((a, b) => a - b);
9
+ const sum = data.reduce((a, b) => a + b, 0);
10
+ return {
11
+ sum,
12
+ min: data[0],
13
+ max: data[data.length - 1],
14
+ avg: sum / data.length,
15
+ median: data[Math.floor(data.length / 2)]
16
+ };
17
+ }
18
+ exports.minMaxAvgAndMedian = minMaxAvgAndMedian;
19
+ function formatStatNumber(num) {
20
+ return num === undefined ? '<?>' : Number(num.toFixed(3)).toLocaleString();
21
+ }
22
+ function statsString(data, suffix = '') {
23
+ return `[${formatStatNumber(data.min)}${suffix} .. ${formatStatNumber(data.max)}${suffix}] (avg: ${formatStatNumber(data.avg)}${suffix}, median: ${formatStatNumber(data.median)}${suffix})`;
24
+ }
25
+ exports.statsString = statsString;
26
+ function printFeatureStatistics(statistics, features = 'all') {
27
+ for (const feature of Object.keys(statistics.features)) {
28
+ if (features !== 'all' && !features.has(feature)) {
29
+ continue;
30
+ }
31
+ const meta = features_1.ALL_FEATURES[feature];
32
+ console.log(`\n\n-----${meta.name}-------------`);
33
+ console.log(ansi_1.formatter.format(meta.description, { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground }));
34
+ printFeatureStatisticsEntry(statistics.features[feature]);
35
+ console.log('\n\n');
36
+ }
37
+ const linesPerFile = minMaxAvgAndMedian(statistics.meta.lines.map(l => l.length));
38
+ const lineLengths = minMaxAvgAndMedian(statistics.meta.lines.flat());
39
+ const processingTimesPerFile = minMaxAvgAndMedian(statistics.meta.processingTimeMs);
40
+ console.log(`processed ${statistics.meta.successfulParsed} files (skipped ${statistics.meta.failedRequests.length} due to errors):
41
+ \ttotal processing time: ${processingTimesPerFile.sum} ms
42
+ \t\tprocessing time range: ${statsString(processingTimesPerFile, ' ms')}
43
+ \ttotal number of lines: ${lineLengths.sum}
44
+ \t\tline range: ${statsString(linesPerFile)}
45
+ \t\tline length range: ${statsString(lineLengths, ' chars')}
46
+ `);
47
+ }
48
+ exports.printFeatureStatistics = printFeatureStatistics;
49
+ const pad = 3;
50
+ function printFeatureStatisticsEntry(info) {
51
+ let longestKey = 0;
52
+ let longestValue = 0;
53
+ const out = new Map();
54
+ for (const [key, value] of Object.entries(info)) {
55
+ if (key.length > longestKey) {
56
+ longestKey = key.length;
57
+ }
58
+ const valueString = JSON.stringify(value, json_1.jsonReplacer);
59
+ out.set(key, valueString);
60
+ if (valueString.length > longestValue) {
61
+ longestValue = valueString.length;
62
+ }
63
+ }
64
+ for (const [key, value] of out.entries()) {
65
+ console.log(`${key.padEnd(longestKey + pad)} ${value.padStart(longestValue)}`);
66
+ }
67
+ }
68
+ exports.printFeatureStatisticsEntry = printFeatureStatisticsEntry;
69
+ //# sourceMappingURL=print-stats.js.map
@@ -0,0 +1,37 @@
1
+ import { DummyAppendMemoryMap, StatisticAppendProvider } from './file-provider';
2
+ /**
3
+ * Requires source information to be attached on parsing!
4
+ * <p>
5
+ * Returns the content of the node (i.e., the text content excluding the children)
6
+ */
7
+ export declare function extractNodeContent(node: Node): string;
8
+ /** by default, we do not write to anything */
9
+ export declare let statisticsFileProvider: StatisticAppendProvider;
10
+ /**
11
+ * Make the statistics write to a given output directory.
12
+ */
13
+ export declare function initFileProvider(outputDirectory: string): void;
14
+ /**
15
+ * Either ignore the statistics or write them to a given map (e.g., for testing).
16
+ *
17
+ * @param map - The map to write to, will not persist calls if no map is given
18
+ */
19
+ export declare function initDummyFileProvider(map?: DummyAppendMemoryMap): void;
20
+ /**
21
+ * Format used to dump each entry of a feature during collection.
22
+ */
23
+ export type StatisticsOutputFormat<T = string> = [
24
+ /** the collected value (like the assignment operator lexeme, ...) */
25
+ value: T,
26
+ /** the context of the information retrieval (e.g. the name of the file that contained the R source code) */
27
+ context: string | undefined
28
+ ];
29
+ /**
30
+ * Append the content of all nodes to the storage file for the given feature
31
+ * @param name - The name of the feature {@link Feature#name}
32
+ * @param fn - The name of the feature-aspect to record
33
+ * @param nodes - The nodes to append, you may pass already transformed string contents
34
+ * @param context - The context of the information retrieval (e.g. the name of the file that contained the R source code)
35
+ * @param unique - Should duplicate entries be removed on addition
36
+ */
37
+ export declare function appendStatisticsFile<T>(name: string, fn: keyof T, nodes: string[] | Node[] | object[], context: string | undefined, unique?: boolean): void;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendStatisticsFile = exports.initDummyFileProvider = exports.initFileProvider = exports.statisticsFileProvider = exports.extractNodeContent = void 0;
4
+ const file_provider_1 = require("./file-provider");
5
+ const log_1 = require("../../util/log");
6
+ /**
7
+ * Requires source information to be attached on parsing!
8
+ * <p>
9
+ * Returns the content of the node (i.e., the text content excluding the children)
10
+ */
11
+ function extractNodeContent(node) {
12
+ let result = node.textContent;
13
+ if (node.hasChildNodes()) {
14
+ const firstChild = node.childNodes.item(0);
15
+ if (firstChild.nodeType === 3 /* text node */) {
16
+ result = firstChild.textContent;
17
+ }
18
+ }
19
+ return result?.trim()?.replaceAll('\n', '\\n') ?? '<unknown>';
20
+ }
21
+ exports.extractNodeContent = extractNodeContent;
22
+ initDummyFileProvider();
23
+ /**
24
+ * Make the statistics write to a given output directory.
25
+ */
26
+ function initFileProvider(outputDirectory) {
27
+ log_1.log.debug(`Initializing file provider for output directory ${outputDirectory}`);
28
+ exports.statisticsFileProvider = new file_provider_1.StatisticFileProvider(outputDirectory);
29
+ }
30
+ exports.initFileProvider = initFileProvider;
31
+ /**
32
+ * Either ignore the statistics or write them to a given map (e.g., for testing).
33
+ *
34
+ * @param map - The map to write to, will not persist calls if no map is given
35
+ */
36
+ function initDummyFileProvider(map) {
37
+ exports.statisticsFileProvider = new file_provider_1.DummyAppendProvider(map);
38
+ }
39
+ exports.initDummyFileProvider = initDummyFileProvider;
40
+ /**
41
+ * Append the content of all nodes to the storage file for the given feature
42
+ * @param name - The name of the feature {@link Feature#name}
43
+ * @param fn - The name of the feature-aspect to record
44
+ * @param nodes - The nodes to append, you may pass already transformed string contents
45
+ * @param context - The context of the information retrieval (e.g. the name of the file that contained the R source code)
46
+ * @param unique - Should duplicate entries be removed on addition
47
+ */
48
+ function appendStatisticsFile(name, fn, nodes, context, unique = false) {
49
+ if (nodes.length === 0) {
50
+ return;
51
+ }
52
+ let values;
53
+ if (typeof nodes[0] === 'string') {
54
+ values = nodes;
55
+ }
56
+ else if ('nodeType' in nodes[0]) {
57
+ values = nodes.map(extractNodeContent);
58
+ }
59
+ else {
60
+ values = nodes;
61
+ }
62
+ if (unique) {
63
+ values = [...new Set(values)];
64
+ }
65
+ values = values.map(value => JSON.stringify(context === undefined ? [value] : [value, context]));
66
+ exports.statisticsFileProvider.append(name, fn, values.join('\n'));
67
+ }
68
+ exports.appendStatisticsFile = appendStatisticsFile;
69
+ //# sourceMappingURL=statistics-file.js.map
@@ -0,0 +1,24 @@
1
+ import { RParseRequestFromFile, RParseRequestFromText, RShell } from '../r-bridge';
2
+ import { FeatureSelection, FeatureStatistics } from './features';
3
+ import { MetaStatistics } from './meta-statistics';
4
+ import { StepResults } from '../core';
5
+ /**
6
+ * By default, {@link extractUsageStatistics} requires a generator, but sometimes you already know all the files
7
+ * that you want to process. This function simply reps your requests as a generator.
8
+ */
9
+ export declare function staticRequests(...requests: (RParseRequestFromText | RParseRequestFromFile)[]): AsyncGenerator<RParseRequestFromText | RParseRequestFromFile>;
10
+ /**
11
+ * Extract all wanted statistic information from a set of requests using the presented R session.
12
+ *
13
+ * @param shell - The R session to use
14
+ * @param onRequest - A callback that is called at the beginning of each request, this may be used to debug the requests.
15
+ * @param features - The features to extract (see {@link allFeatureNames}).
16
+ * @param requests - The requests to extract the features from. May generate them on demand (e.g., by traversing a folder).
17
+ * If your request is statically known, you can use {@link staticRequests} to create this generator.
18
+ * @param rootPath - The root path to the project, this is used to relativize the file paths in the statistics.
19
+ */
20
+ export declare function extractUsageStatistics<T extends RParseRequestFromText | RParseRequestFromFile>(shell: RShell, onRequest: (request: T) => void, features: FeatureSelection, requests: AsyncGenerator<T>, rootPath?: string): Promise<{
21
+ features: FeatureStatistics;
22
+ meta: MetaStatistics;
23
+ outputs: Map<T, StepResults<'dataflow'>>;
24
+ }>;
@@ -0,0 +1,109 @@
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.extractUsageStatistics = exports.staticRequests = void 0;
7
+ const features_1 = require("./features");
8
+ const xmldom_1 = require("@xmldom/xmldom");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const log_1 = require("../util/log");
11
+ const meta_statistics_1 = require("./meta-statistics");
12
+ const core_1 = require("../core");
13
+ const json_1 = require("../util/json");
14
+ /**
15
+ * By default, {@link extractUsageStatistics} requires a generator, but sometimes you already know all the files
16
+ * that you want to process. This function simply reps your requests as a generator.
17
+ */
18
+ function staticRequests(...requests) {
19
+ // eslint-disable-next-line @typescript-eslint/require-await
20
+ return async function* () {
21
+ for (const request of requests) {
22
+ yield request;
23
+ }
24
+ }();
25
+ }
26
+ exports.staticRequests = staticRequests;
27
+ /**
28
+ * Extract all wanted statistic information from a set of requests using the presented R session.
29
+ *
30
+ * @param shell - The R session to use
31
+ * @param onRequest - A callback that is called at the beginning of each request, this may be used to debug the requests.
32
+ * @param features - The features to extract (see {@link allFeatureNames}).
33
+ * @param requests - The requests to extract the features from. May generate them on demand (e.g., by traversing a folder).
34
+ * If your request is statically known, you can use {@link staticRequests} to create this generator.
35
+ * @param rootPath - The root path to the project, this is used to relativize the file paths in the statistics.
36
+ */
37
+ async function extractUsageStatistics(shell, onRequest, features, requests, rootPath) {
38
+ let result = initializeFeatureStatistics();
39
+ const meta = (0, meta_statistics_1.initialMetaStatistics)();
40
+ let first = true;
41
+ const outputs = new Map();
42
+ for await (const request of requests) {
43
+ onRequest(request);
44
+ const start = performance.now();
45
+ const suffix = request.request === 'file' ? request.content.replace(new RegExp('^' + (rootPath ?? '')), '') : undefined;
46
+ try {
47
+ let output;
48
+ ({ stats: result, output } = await extractSingle(result, shell, {
49
+ ...request,
50
+ ensurePackageInstalled: first
51
+ }, features, suffix));
52
+ outputs.set(request, output);
53
+ processMetaOnSuccessful(meta, request);
54
+ meta.numberOfNormalizedNodes.push(output.normalize.idMap.size);
55
+ first = false;
56
+ }
57
+ catch (e) {
58
+ log_1.log.error('for request: ', request, e);
59
+ processMetaOnUnsuccessful(meta, request);
60
+ }
61
+ meta.processingTimeMs.push(performance.now() - start);
62
+ }
63
+ return { features: result, meta, outputs };
64
+ }
65
+ exports.extractUsageStatistics = extractUsageStatistics;
66
+ function initializeFeatureStatistics() {
67
+ const result = {};
68
+ for (const key of features_1.allFeatureNames) {
69
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
70
+ result[key] = JSON.parse(JSON.stringify(features_1.ALL_FEATURES[key].initialValue, json_1.jsonReplacer), json_1.jsonRetriever);
71
+ }
72
+ return result;
73
+ }
74
+ function processMetaOnUnsuccessful(meta, request) {
75
+ meta.failedRequests.push(request);
76
+ }
77
+ function processMetaOnSuccessful(meta, request) {
78
+ meta.successfulParsed++;
79
+ if (request.request === 'text') {
80
+ meta.lines.push(request.content.split('\n').map(l => l.length));
81
+ }
82
+ else {
83
+ meta.lines.push(fs_1.default.readFileSync(request.content, 'utf-8').split('\n').map(l => l.length));
84
+ }
85
+ }
86
+ const parser = new xmldom_1.DOMParser();
87
+ async function extractSingle(result, shell, request, features, suffixFilePath) {
88
+ const slicerOutput = await new core_1.SteppingSlicer({
89
+ stepOfInterest: 'dataflow',
90
+ request, shell
91
+ }).allRemainingSteps();
92
+ // await retrieveXmlFromRCode(from, shell)
93
+ const doc = parser.parseFromString(slicerOutput.parse, 'text/xml');
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ for (const [key, feature] of Object.entries(features_1.ALL_FEATURES)) {
96
+ if (features !== 'all' && !features.has(key)) {
97
+ continue;
98
+ }
99
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
100
+ result[key] = feature.process(result[key], {
101
+ parsedRAst: doc,
102
+ dataflow: slicerOutput.dataflow,
103
+ normalizedRAst: slicerOutput.normalize,
104
+ filepath: suffixFilePath
105
+ });
106
+ }
107
+ return { stats: result, output: slicerOutput };
108
+ }
109
+ //# sourceMappingURL=statistics.js.map
package/util/args.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Just to avoid another library for splitting arguments, we use this module to provide what we need.
3
+ *
4
+ * @module
5
+ */
6
+ /**
7
+ * This splits an input string on the given split string (e.g., ` `) but checks if the string is quoted or escaped.
8
+ *
9
+ * Given an input string like `a "b c" d` with a space character as split this splits the arguments similar to common shell interpreters (i.e., `a`, `b c`, and `d`).
10
+ *
11
+ * @param inputString - The string to split
12
+ * @param split - The **single** character to split on (can not be the backslash or quote)
13
+ */
14
+ export declare function splitAtEscapeSensitive(inputString: string, split?: string): string[];
package/util/args.js ADDED
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Just to avoid another library for splitting arguments, we use this module to provide what we need.
4
+ *
5
+ * @module
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.splitAtEscapeSensitive = void 0;
9
+ /**
10
+ * This splits an input string on the given split string (e.g., ` `) but checks if the string is quoted or escaped.
11
+ *
12
+ * Given an input string like `a "b c" d` with a space character as split this splits the arguments similar to common shell interpreters (i.e., `a`, `b c`, and `d`).
13
+ *
14
+ * @param inputString - The string to split
15
+ * @param split - The **single** character to split on (can not be the backslash or quote)
16
+ */
17
+ function splitAtEscapeSensitive(inputString, split = ' ') {
18
+ const args = [];
19
+ let current = '';
20
+ let inQuotes = false;
21
+ let escaped = false;
22
+ for (const c of inputString) {
23
+ if (escaped) {
24
+ escaped = false;
25
+ switch (c) {
26
+ case 'n':
27
+ current += '\n';
28
+ break;
29
+ case 't':
30
+ current += '\t';
31
+ break;
32
+ case 'r':
33
+ current += '\r';
34
+ break;
35
+ case 'v':
36
+ current += '\v';
37
+ break;
38
+ case 'f':
39
+ current += '\f';
40
+ break;
41
+ case 'b':
42
+ current += '\b';
43
+ break;
44
+ default: current += c;
45
+ }
46
+ }
47
+ else if (c === split && !inQuotes && current !== '') {
48
+ args.push(current);
49
+ current = '';
50
+ }
51
+ else if (c === '"' || c === "'") {
52
+ inQuotes = !inQuotes;
53
+ }
54
+ else if (c === '\\') {
55
+ escaped = true;
56
+ }
57
+ else {
58
+ current += c;
59
+ }
60
+ }
61
+ if (current !== '') {
62
+ args.push(current);
63
+ }
64
+ return args;
65
+ }
66
+ exports.splitAtEscapeSensitive = splitAtEscapeSensitive;
67
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Splits the array every time the given predicate fires.
3
+ * The element the split appears on will not be included!
4
+ *
5
+ * @example with this we can split on all empty strings:
6
+ * ```
7
+ * splitArrayOn(['a', '', 'b', '', '', 'c'], elem => elem === '')
8
+ * // => [['a'], ['b'], [], ['c']]
9
+ * ```
10
+ * @example if the last element satisfies the predicate, this will add an empty array element
11
+ * ```
12
+ * splitArrayOn([1,2,3], elem => true)
13
+ * // => [[], [], [], []]
14
+ * ```
15
+ */
16
+ export declare function splitArrayOn<T>(arr: T[], predicate: (elem: T) => boolean): T[][];
17
+ /**
18
+ * Generate all permutations of the given array using Heap's algorithm (with its non-recursive variant).
19
+ *
20
+ * @param arr - The array to permute
21
+ * @see getUniqueCombinationsOfSize
22
+ */
23
+ export declare function allPermutations<T>(arr: T[]): Generator<T[], void, void>;
24
+ export declare function partition<T>(arr: T[], predicate: (elem: T) => boolean): [T[], T[]];
25
+ /**
26
+ * Generate all unique combinations of the array with the given size.
27
+ * In other words, given `[a,b,c]`, as well as `minSize=2` and `maxSize=2`, this will generate `[a,b]`, `[a,c]` and `[b,c]`,
28
+ * but not, e.g., `[a,a]` or `[b,a]`.
29
+ *
30
+ * If `minSize!=maxSize`, the result is guaranteed to be sorted by size.
31
+ *
32
+ * @param array - The array to generate combinations from
33
+ * @param minSize - The inclusive minimum size of the combinations, must be at least `0` and at most `maxSize`
34
+ * @param maxSize - The inclusive maximum size of the combinations, must be at least `minSize` and at most `array.length`
35
+ */
36
+ export declare function getUniqueCombinationsOfSize<T>(array: T[], minSize?: number, maxSize?: number): Generator<T[], void, void>;
37
+ /**
38
+ * Returns the sum of all elements in the given array
39
+ */
40
+ export declare function sum(arr: number[]): number;
41
+ /**
42
+ * Converts an array into a bag data-structure (in the form of a map mapping the entries/keys to their counts)
43
+ */
44
+ export declare function array2bag<T>(arr: T[]): Map<T, number>;