@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,17 @@
1
+ import { DeepPartial, DeepRequired } from 'ts-essentials';
2
+ /**
3
+ * checks if `item` is an object (it may be an array, ...)
4
+ */
5
+ export declare function isObjectOrArray(item: unknown): boolean;
6
+ export type MergeableRecord = Record<string, unknown>;
7
+ export type MergeableArray = unknown[];
8
+ export type Mergeable = MergeableRecord | MergeableArray;
9
+ /**
10
+ * Given two objects deeply merges them, if an object is an array it will merge the array values!
11
+ * Guarantees some type safety by requiring objects to merge to be from the same type (allows undefined)
12
+ */
13
+ export declare function deepMergeObject<T extends Mergeable>(base: Required<T>, addon?: T): Required<T>;
14
+ export declare function deepMergeObject<T extends Mergeable>(base: DeepRequired<T>, addon?: T): DeepRequired<T>;
15
+ export declare function deepMergeObject<T extends Mergeable>(base: T, addon?: DeepPartial<T> | Partial<T>): T;
16
+ export declare function deepMergeObject(base: Mergeable, addon: Mergeable): Mergeable;
17
+ export declare function deepMergeObject(base?: Mergeable, addon?: Mergeable): Mergeable | undefined;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deepMergeObject = exports.isObjectOrArray = void 0;
4
+ const json_1 = require("./json");
5
+ /**
6
+ * checks if `item` is an object (it may be an array, ...)
7
+ */
8
+ function isObjectOrArray(item) {
9
+ return typeof item === 'object';
10
+ }
11
+ exports.isObjectOrArray = isObjectOrArray;
12
+ function deepMergeObject(base, addon) {
13
+ if (!base) {
14
+ return addon;
15
+ }
16
+ else if (!addon) {
17
+ return base;
18
+ }
19
+ else if (typeof base !== 'object' || typeof addon !== 'object') {
20
+ // this case should be guarded by type guards, but in case we do not know
21
+ throw new Error('illegal types for deepMergeObject!');
22
+ }
23
+ assertSameType(base, addon);
24
+ const result = { ...base };
25
+ const baseIsArray = Array.isArray(base);
26
+ const addonIsArray = Array.isArray(addon);
27
+ if (!baseIsArray && !addonIsArray) {
28
+ deepMergeObjectWithResult(addon, base, result);
29
+ }
30
+ else if (baseIsArray && addonIsArray) {
31
+ return [...base, ...addon];
32
+ }
33
+ else {
34
+ throw new Error('cannot merge object with array!');
35
+ }
36
+ return result;
37
+ }
38
+ exports.deepMergeObject = deepMergeObject;
39
+ function deepMergeObjectWithResult(addon, base, result) {
40
+ for (const key of Object.keys(addon)) {
41
+ if (typeof addon[key] === 'object') {
42
+ if (key in base) {
43
+ result[key] = deepMergeObject(base[key], addon[key]);
44
+ }
45
+ else {
46
+ result[key] = addon[key];
47
+ }
48
+ }
49
+ else {
50
+ assertSameType(result[key], addon[key]);
51
+ result[key] = addon[key];
52
+ }
53
+ }
54
+ }
55
+ function assertSameType(base, addon) {
56
+ if (base !== undefined && addon !== undefined && typeof base !== typeof addon) {
57
+ throw new Error(`cannot merge different types! ${typeof base} (${JSON.stringify(base, json_1.jsonReplacer)}) !== ${typeof addon} (${JSON.stringify(addon, json_1.jsonReplacer)})`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=objects.js.map
package/util/os.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export type Os = 'mac-os' | 'linux' | 'windows' | 'unknown';
2
+ export declare function getPlatform(): Os;
package/util/os.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPlatform = void 0;
4
+ let platformCache = null;
5
+ function getPlatform() {
6
+ if (platformCache !== null) {
7
+ return platformCache;
8
+ }
9
+ const platform = process.platform;
10
+ if (platform === 'darwin') {
11
+ platformCache = 'mac-os';
12
+ }
13
+ else if (platform === 'linux') {
14
+ platformCache = 'linux';
15
+ }
16
+ else if (platform === 'win32') {
17
+ platformCache = 'windows';
18
+ }
19
+ else {
20
+ platformCache = 'unknown';
21
+ }
22
+ return platformCache;
23
+ }
24
+ exports.getPlatform = getPlatform;
25
+ //# sourceMappingURL=os.js.map
@@ -0,0 +1,30 @@
1
+ export type Arguments = string[];
2
+ type WorkingQueue = Arguments[];
3
+ /**
4
+ * This is not really generic but written especially for the benchmarking script.
5
+ * It offers a work stealing thread pool executor.
6
+ */
7
+ export declare class LimitedThreadPool {
8
+ private readonly workingQueue;
9
+ private readonly limit;
10
+ private readonly parallel;
11
+ private readonly module;
12
+ private counter;
13
+ private skipped;
14
+ private currentlyRunning;
15
+ private reportingInterval;
16
+ /**
17
+ * Create a new parallel helper that runs the given `module` once for each list of {@link Arguments} in the `queue`.
18
+ * The `limit` stops the execution if `<limit>` number of runs exited successfully.
19
+ * The `parallel` parameter limits the number of parallel executions.
20
+ */
21
+ constructor(module: string, queue: WorkingQueue, limit: number, parallel: number);
22
+ run(): Promise<void>;
23
+ getStats(): {
24
+ counter: number;
25
+ skipped: Arguments[];
26
+ };
27
+ private runNext;
28
+ private onChildExit;
29
+ }
30
+ export {};
@@ -0,0 +1,103 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.LimitedThreadPool = void 0;
27
+ /**
28
+ * Tasked with parallelize the benchmarking by calling the given script in an executor-pool style fashion.
29
+ * Now used to parallelize more in _flowR_.
30
+ * @module parallel
31
+ */
32
+ const cp = __importStar(require("child_process"));
33
+ const log_1 = require("./log");
34
+ const assert_1 = require("./assert");
35
+ const json_1 = require("./json");
36
+ /**
37
+ * This is not really generic but written especially for the benchmarking script.
38
+ * It offers a work stealing thread pool executor.
39
+ */
40
+ class LimitedThreadPool {
41
+ workingQueue;
42
+ limit;
43
+ parallel;
44
+ module;
45
+ counter = 0;
46
+ skipped = [];
47
+ currentlyRunning = new Set();
48
+ reportingInterval = undefined;
49
+ /**
50
+ * Create a new parallel helper that runs the given `module` once for each list of {@link Arguments} in the `queue`.
51
+ * The `limit` stops the execution if `<limit>` number of runs exited successfully.
52
+ * The `parallel` parameter limits the number of parallel executions.
53
+ */
54
+ constructor(module, queue, limit, parallel) {
55
+ this.workingQueue = queue;
56
+ this.limit = limit;
57
+ this.module = module;
58
+ this.parallel = parallel;
59
+ }
60
+ async run() {
61
+ this.reportingInterval = setInterval(() => {
62
+ console.log(`Waiting for: ${JSON.stringify(this.currentlyRunning, json_1.jsonReplacer)}`);
63
+ }, 20000);
64
+ const promises = [];
65
+ // initial run, runNext will schedule itself recursively we use the limit too if there are more cores than limit :D
66
+ while (this.currentlyRunning.size < Math.min(this.parallel, this.limit) && this.workingQueue.length > 0) {
67
+ promises.push(this.runNext());
68
+ }
69
+ await Promise.all(promises);
70
+ clearInterval(this.reportingInterval);
71
+ }
72
+ getStats() {
73
+ return { counter: this.counter, skipped: this.skipped };
74
+ }
75
+ async runNext() {
76
+ if (this.counter + this.currentlyRunning.size >= this.limit || this.workingQueue.length <= 0) {
77
+ console.log(`Skip running next as counter: ${this.counter} and currently running: ${this.currentlyRunning.size} beat ${this.limit} or ${this.workingQueue.length}`);
78
+ return;
79
+ }
80
+ const args = this.workingQueue.pop();
81
+ (0, assert_1.guard)(args !== undefined, () => `arguments should not be undefined in ${JSON.stringify(this.workingQueue)}`);
82
+ this.currentlyRunning.add(args);
83
+ console.log(`[${this.counter}/${this.limit}] Running next, currently running: ${this.currentlyRunning.size}, queue: ${this.workingQueue.length} [args: ${args.join(' ')}]`);
84
+ const child = cp.fork(this.module, args);
85
+ child.on('exit', this.onChildExit(args));
86
+ // schedule re-schedule
87
+ await new Promise(resolve => child.on('exit', resolve)).then(() => this.runNext());
88
+ }
89
+ onChildExit(args) {
90
+ return (code, signal) => {
91
+ if (code === 0) {
92
+ this.counter++;
93
+ }
94
+ else {
95
+ log_1.log.error(`Benchmark for ${JSON.stringify(args)} exited with code ${JSON.stringify(code)} (signal: ${JSON.stringify(signal)})`);
96
+ this.skipped.push(args);
97
+ }
98
+ this.currentlyRunning.delete(args);
99
+ };
100
+ }
101
+ }
102
+ exports.LimitedThreadPool = LimitedThreadPool;
103
+ //# sourceMappingURL=parallel.js.map
@@ -0,0 +1,92 @@
1
+ /**
2
+ * As other project partners want the produced data structures as rdf quads, this module provides
3
+ * serialization capabilities for this purpose.
4
+ * <p>
5
+ * At the time of writing this module I am unaware of any sophisticated rdf library for typescript which allows to serialize objects
6
+ * directly as rdf quads. Therefore, this module provides a simple serialization mechanism based on the popular n3.js library.
7
+ *
8
+ * @module
9
+ */
10
+ import { MergeableRecord } from './objects';
11
+ import { NodeId } from '../r-bridge';
12
+ type RecordForQuad = Record<string, unknown>;
13
+ type DataForQuad = Record<string, unknown> | ArrayLike<unknown>;
14
+ type ContextForQuad = string;
15
+ /**
16
+ * Predicate that allows you to ignore given elements based on their key/value
17
+ *
18
+ * @returns true if the given key/value should be ignored, false otherwise
19
+ */
20
+ export type QuadIgnoreIf = (key: string, value: unknown) => boolean;
21
+ /**
22
+ * Deterministically retrieve a unique id for a given object.
23
+ * @param obj - the object to retrieve the id for
24
+ * @param context - In order to provide unique ids even for different contexts, we add the context to the id.
25
+ */
26
+ export type QuadIdRetriever = (obj: unknown, context: ContextForQuad) => string;
27
+ /**
28
+ * Either a constant string or a supplier depending on the object in question
29
+ */
30
+ export type QuadContextRetriever = ContextForQuad | ((obj: DataForQuad) => ContextForQuad);
31
+ /**
32
+ * A deterministic counting id generator for quads.
33
+ */
34
+ export declare function defaultQuadIdGenerator(): QuadIdRetriever;
35
+ export declare function defaultQuadIgnoreIf(): QuadIgnoreIf;
36
+ /**
37
+ * See {@link DefaultQuadSerializationConfiguration} for defaults.
38
+ */
39
+ export interface QuadSerializationConfiguration extends MergeableRecord {
40
+ /**
41
+ * Ignore certain keys or values when serializing to quads.
42
+ * @see defaultQuadIgnoreIf
43
+ */
44
+ ignore?: QuadIgnoreIf;
45
+ /**
46
+ * Retrieve a unique id for a given object.
47
+ * @see defaultQuadIdGenerator
48
+ */
49
+ getId?: QuadIdRetriever;
50
+ /**
51
+ * The context of the serialized quads, probably the file-name (constant) or whatever is desired.
52
+ */
53
+ context: QuadContextRetriever;
54
+ /**
55
+ * The basic domain name to use for the quads.
56
+ */
57
+ domain?: string;
58
+ }
59
+ export declare const DefaultQuadSerializationConfiguration: Required<QuadSerializationConfiguration>;
60
+ /**
61
+ * Serializes the given object or array to rdf quads.
62
+ *
63
+ * @param obj - The object to serialize (must be a Record and no array etc.)
64
+ * @param config - Further configuration options
65
+ *
66
+ * @returns the serialized quads
67
+ *
68
+ * @see graph2quads
69
+ */
70
+ export declare function serialize2quads(obj: RecordForQuad, config: QuadSerializationConfiguration): string;
71
+ export type VertexInformationForQuad<AdditionalInformation extends MergeableRecord> = MergeableRecord & AdditionalInformation & {
72
+ id: NodeId;
73
+ };
74
+ export type EdgeInformationForQuad<AdditionalInformation extends MergeableRecord> = MergeableRecord & AdditionalInformation & {
75
+ from: NodeId;
76
+ type: NodeId | NodeId[];
77
+ to: NodeId;
78
+ };
79
+ export interface GraphInformationForQuad<AdditionalVertexInformation extends MergeableRecord, AdditionalEdgeInformation extends MergeableRecord> extends MergeableRecord {
80
+ rootIds: NodeId[];
81
+ vertices: VertexInformationForQuad<AdditionalVertexInformation>[];
82
+ edges: EdgeInformationForQuad<AdditionalEdgeInformation>[];
83
+ additional?: DataForQuad;
84
+ }
85
+ /**
86
+ * Serializes the given directed graph to rdf quads.
87
+ * This is a mere (type-)convenience wrapper for {@link serialize2quads}.
88
+ *
89
+ * @see serialize2quads
90
+ */
91
+ export declare function graph2quads<AdditionalVertexInformation extends MergeableRecord, AdditionalEdgeInformation extends MergeableRecord>(graph: GraphInformationForQuad<AdditionalVertexInformation, AdditionalEdgeInformation>, config: QuadSerializationConfiguration): string;
92
+ export {};
package/util/quads.js ADDED
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /**
3
+ * As other project partners want the produced data structures as rdf quads, this module provides
4
+ * serialization capabilities for this purpose.
5
+ * <p>
6
+ * At the time of writing this module I am unaware of any sophisticated rdf library for typescript which allows to serialize objects
7
+ * directly as rdf quads. Therefore, this module provides a simple serialization mechanism based on the popular n3.js library.
8
+ *
9
+ * @module
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.graph2quads = exports.serialize2quads = exports.DefaultQuadSerializationConfiguration = exports.defaultQuadIgnoreIf = exports.defaultQuadIdGenerator = void 0;
13
+ const n3_1 = require("n3");
14
+ var namedNode = n3_1.DataFactory.namedNode;
15
+ var quad = n3_1.DataFactory.quad;
16
+ const objects_1 = require("./objects");
17
+ const assert_1 = require("./assert");
18
+ const defaultmap_1 = require("./defaultmap");
19
+ var literal = n3_1.DataFactory.literal;
20
+ const log_1 = require("./log");
21
+ const domain = 'https://uni-ulm.de/r-ast/';
22
+ /**
23
+ * A deterministic counting id generator for quads.
24
+ */
25
+ function defaultQuadIdGenerator() {
26
+ let counter = 0;
27
+ const idMap = new defaultmap_1.DefaultMap(() => counter++);
28
+ return (elem, context) => `${context}/${idMap.get(elem)}`;
29
+ }
30
+ exports.defaultQuadIdGenerator = defaultQuadIdGenerator;
31
+ const ignoredKeysArray = ['complexNumber', 'markedAsInt', 'info'];
32
+ function defaultQuadIgnoreIf() {
33
+ return (key, value) => value === undefined || ignoredKeysArray.includes(key);
34
+ }
35
+ exports.defaultQuadIgnoreIf = defaultQuadIgnoreIf;
36
+ exports.DefaultQuadSerializationConfiguration = {
37
+ ignore: defaultQuadIgnoreIf(),
38
+ context: 'unknown-context',
39
+ getId: defaultQuadIdGenerator(),
40
+ domain: 'https://uni-ulm.de/r-ast/'
41
+ };
42
+ function retrieveContext(context, obj) {
43
+ return typeof context === 'string' ? context : context(obj);
44
+ }
45
+ const writer = new n3_1.Writer({ format: 'N-Quads' });
46
+ /**
47
+ * Serializes the given object or array to rdf quads.
48
+ *
49
+ * @param obj - The object to serialize (must be a Record and no array etc.)
50
+ * @param config - Further configuration options
51
+ *
52
+ * @returns the serialized quads
53
+ *
54
+ * @see graph2quads
55
+ */
56
+ function serialize2quads(obj, config) {
57
+ const useConfig = (0, objects_1.deepMergeObject)(exports.DefaultQuadSerializationConfiguration, config);
58
+ (0, assert_1.guard)((0, objects_1.isObjectOrArray)(obj), 'cannot serialize non-object to rdf!');
59
+ (0, assert_1.guard)(!Array.isArray(obj), 'cannot serialize arrays (must wrap in object)!');
60
+ store = new Set();
61
+ const quads = [];
62
+ serializeObject(obj, quads, useConfig);
63
+ return writer.quadsToString(quads);
64
+ }
65
+ exports.serialize2quads = serialize2quads;
66
+ /**
67
+ * Serializes the given directed graph to rdf quads.
68
+ * This is a mere (type-)convenience wrapper for {@link serialize2quads}.
69
+ *
70
+ * @see serialize2quads
71
+ */
72
+ function graph2quads(graph, config) {
73
+ return serialize2quads(graph, config);
74
+ }
75
+ exports.graph2quads = graph2quads;
76
+ function processArrayEntries(key, values, obj, quads, config) {
77
+ for (const [index, element] of values.entries()) {
78
+ if (element !== null && element !== undefined && (0, objects_1.isObjectOrArray)(element)) {
79
+ const context = retrieveContext(config.context, obj);
80
+ quads.push(quad(namedNode(domain + config.getId(obj, context)), namedNode(domain + key), namedNode(domain + config.getId(element, context)), namedNode(context)));
81
+ // we now add a next link to the next vertex
82
+ const next = values[index + 1];
83
+ if (next !== undefined) {
84
+ const nextId = config.getId(next, context);
85
+ quads.push(quad(namedNode(domain + config.getId(element, context)), namedNode(domain + 'next'), namedNode(domain + nextId), namedNode(context)));
86
+ }
87
+ serializeObject(element, quads, config);
88
+ }
89
+ else {
90
+ // for the time being, the index does not seem of interest for the graph summary team.
91
+ processLiteralEntry(element, key, obj, quads, config, undefined);
92
+ }
93
+ }
94
+ }
95
+ function processObjectEntries(key, value, obj, quads, config) {
96
+ const context = retrieveContext(config.context, obj);
97
+ quads.push(quad(namedNode(domain + config.getId(obj, context)), namedNode(domain + key), namedNode(domain + config.getId(value, context)), namedNode(context)));
98
+ serializeObject(value, quads, config);
99
+ }
100
+ function objToType(value) {
101
+ let suffix;
102
+ switch (typeof value) {
103
+ case 'string':
104
+ suffix = 'string';
105
+ break;
106
+ case 'number':
107
+ suffix = Number.isInteger(value) ? 'integer' : 'decimal';
108
+ break;
109
+ case 'boolean':
110
+ suffix = 'boolean';
111
+ break;
112
+ case 'bigint':
113
+ suffix = 'integer';
114
+ break;
115
+ default:
116
+ log_1.log.warn(`unknown ${typeof value} with ${JSON.stringify(value)}`);
117
+ break;
118
+ }
119
+ return suffix ? namedNode(`http://www.w3.org/2001/XMLSchema#${suffix}`) : undefined;
120
+ }
121
+ function processLiteralEntry(value, key, obj, quads, config, index) {
122
+ const context = retrieveContext(config.context, obj);
123
+ // we have to create an object if there is an index, so that we can link the index!
124
+ if (index !== undefined) {
125
+ const newId = `${key}-${index}`;
126
+ quads.push(quad(namedNode(domain + config.getId(obj, context)), namedNode(domain + key), namedNode(domain + config.getId(newId, context)), namedNode(context)));
127
+ quads.push(quad(namedNode(domain + config.getId(newId, context)), namedNode(domain + 'value'), literal(String(value), objToType(value)), namedNode(context)));
128
+ quads.push(quad(namedNode(domain + newId), namedNode(domain + 'order'), literal(String(index), namedNode('http://www.w3.org/2001/XMLSchema#integer')), namedNode(context)));
129
+ }
130
+ else {
131
+ quads.push(quad(namedNode(domain + config.getId(obj, context)), namedNode(domain + key), literal(String(value), objToType(value)), namedNode(context)));
132
+ }
133
+ }
134
+ function processObjectEntry(key, value, obj, quads, config) {
135
+ if (config.ignore(key, value)) {
136
+ return;
137
+ }
138
+ if (guardCycle(value)) {
139
+ return;
140
+ }
141
+ if ((0, objects_1.isObjectOrArray)(value)) {
142
+ if (Array.isArray(value)) {
143
+ processArrayEntries(key, value, obj, quads, config);
144
+ }
145
+ else {
146
+ processObjectEntries(key, value, obj, quads, config);
147
+ }
148
+ }
149
+ else {
150
+ processLiteralEntry(value, key, obj, quads, config, undefined);
151
+ }
152
+ }
153
+ let store = new Set();
154
+ function guardCycle(obj) {
155
+ // @ts-expect-error we do not care about the type here
156
+ if ((0, objects_1.isObjectOrArray)(obj) && 'id' in obj) {
157
+ if (store.has(obj.id)) {
158
+ return true;
159
+ }
160
+ store.add(obj.id);
161
+ }
162
+ return false;
163
+ }
164
+ function serializeObject(obj, quads, config) {
165
+ if (obj === null || obj === undefined) {
166
+ return;
167
+ }
168
+ if (guardCycle(obj)) {
169
+ return;
170
+ }
171
+ if (obj instanceof Map) {
172
+ for (const [key, value] of obj.entries()) {
173
+ processObjectEntry('key-' + String(key), value, obj, quads, config);
174
+ }
175
+ }
176
+ else if (obj instanceof Set) {
177
+ let i = 0;
178
+ for (const value of obj.values()) {
179
+ console.log('set', value);
180
+ processObjectEntry('idx-' + String(i++), value, obj, quads, config);
181
+ }
182
+ }
183
+ else {
184
+ for (const [key, value] of Object.entries(obj)) {
185
+ processObjectEntry(key, value, obj, quads, config);
186
+ }
187
+ }
188
+ }
189
+ //# sourceMappingURL=quads.js.map
@@ -0,0 +1,4 @@
1
+ export declare const ALPHABET_LOWERCASE: readonly string[];
2
+ export declare const ALPHABET_UPPERCASE: readonly string[];
3
+ export declare const ALPHABET: readonly string[];
4
+ export declare function randomString(length: number, symbols?: readonly string[]): string;
package/util/random.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomString = exports.ALPHABET = exports.ALPHABET_UPPERCASE = exports.ALPHABET_LOWERCASE = void 0;
4
+ const assert_1 = require("./assert");
5
+ exports.ALPHABET_LOWERCASE = [...'abcdefghijklmnopqrstuvwxyz'];
6
+ exports.ALPHABET_UPPERCASE = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'];
7
+ exports.ALPHABET = [...exports.ALPHABET_LOWERCASE, ...exports.ALPHABET_UPPERCASE];
8
+ // we could do this with type guards etc. but this way it is easier to read I guess
9
+ function isPositiveFiniteInteger(length) {
10
+ return isFinite(length) && length >= 0 && length === Math.floor(length);
11
+ }
12
+ function randomString(length, symbols = exports.ALPHABET) {
13
+ (0, assert_1.guard)(isPositiveFiniteInteger(length), `length must be a positive, finite integer (${length} >= 0)`);
14
+ (0, assert_1.guard)(symbols.length > 0, 'there must be at least one symbol to use');
15
+ let result = '';
16
+ for (let i = 0; i < length; i++) {
17
+ result += symbols[Math.floor(Math.random() * symbols.length)];
18
+ }
19
+ return result;
20
+ }
21
+ exports.randomString = randomString;
22
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1,32 @@
1
+ export interface SourcePosition {
2
+ /** starts with 1 */
3
+ line: number;
4
+ /** starts with 1 */
5
+ column: number;
6
+ }
7
+ export interface SourceRange {
8
+ /** inclusive start position */
9
+ readonly start: SourcePosition;
10
+ /** inclusive end position */
11
+ readonly end: SourcePosition;
12
+ }
13
+ /**
14
+ * at the moment this does not ensure ordering of start and end!
15
+ */
16
+ export declare function rangeFrom(line1: number | string, col1: number | string, line2: number | string, col2: number | string): SourceRange;
17
+ export declare function mergeRanges(...rs: SourceRange[]): SourceRange;
18
+ /**
19
+ * @returns true iff `r1` starts and ends before `r2` starts (i.e., if `r1` and `r2` do not overlap and `r1` comes before `r2`
20
+ */
21
+ export declare function rangeStartsCompletelyBefore(r1: SourceRange, r2: SourceRange): boolean;
22
+ /**
23
+ * Checks if the two ranges overlap.
24
+ */
25
+ export declare function rangesOverlap(r1: SourceRange, r2: SourceRange): boolean;
26
+ export declare function addRanges(r1: SourceRange, r2: SourceRange): SourceRange;
27
+ /**
28
+ * Provides a comparator for {@link SourceRange}s that sorts them in ascending order.
29
+ *
30
+ * @returns a positive number if `r1` comes after `r2`, a negative number if `r1` comes before `r2`, and `0` if they are equal
31
+ */
32
+ export declare function rangeCompare(r1: SourceRange, r2: SourceRange): number;
package/util/range.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rangeCompare = exports.addRanges = exports.rangesOverlap = exports.rangeStartsCompletelyBefore = exports.mergeRanges = exports.rangeFrom = void 0;
4
+ const assert_1 = require("./assert");
5
+ /**
6
+ * at the moment this does not ensure ordering of start and end!
7
+ */
8
+ function rangeFrom(line1, col1, line2, col2) {
9
+ return {
10
+ start: {
11
+ line: Number(line1),
12
+ column: Number(col1)
13
+ },
14
+ end: {
15
+ line: Number(line2),
16
+ column: Number(col2)
17
+ }
18
+ };
19
+ }
20
+ exports.rangeFrom = rangeFrom;
21
+ function mergeRanges(...rs) {
22
+ (0, assert_1.guard)(rs.length > 0, 'Cannot merge no ranges');
23
+ return {
24
+ start: rs.reduce((acc, r) => acc.line < r.start.line || (acc.line === r.start.line && acc.column < r.start.column) ? acc : r.start, rs[0].start),
25
+ end: rs.reduce((acc, r) => acc.line > r.end.line || (acc.line === r.end.line && acc.column > r.end.column) ? acc : r.end, rs[0].end)
26
+ };
27
+ }
28
+ exports.mergeRanges = mergeRanges;
29
+ /**
30
+ * @returns true iff `r1` starts and ends before `r2` starts (i.e., if `r1` and `r2` do not overlap and `r1` comes before `r2`
31
+ */
32
+ function rangeStartsCompletelyBefore(r1, r2) {
33
+ return r1.end.line < r2.start.line || (r1.end.line === r2.start.line && r1.end.column < r2.start.column);
34
+ }
35
+ exports.rangeStartsCompletelyBefore = rangeStartsCompletelyBefore;
36
+ /**
37
+ * Checks if the two ranges overlap.
38
+ */
39
+ function rangesOverlap(r1, r2) {
40
+ return r1.start.line <= r2.end.line && r2.start.line <= r1.end.line && r1.start.column <= r2.end.column && r2.start.column <= r1.end.column;
41
+ }
42
+ exports.rangesOverlap = rangesOverlap;
43
+ function addRanges(r1, r2) {
44
+ return rangeFrom(r1.start.line + r2.start.line, r1.start.column + r2.start.column, r1.end.line + r2.end.line, r1.end.column + r2.end.column);
45
+ }
46
+ exports.addRanges = addRanges;
47
+ /**
48
+ * Provides a comparator for {@link SourceRange}s that sorts them in ascending order.
49
+ *
50
+ * @returns a positive number if `r1` comes after `r2`, a negative number if `r1` comes before `r2`, and `0` if they are equal
51
+ */
52
+ function rangeCompare(r1, r2) {
53
+ if (r1.start.line === r2.start.line) {
54
+ return r1.start.column - r2.start.column;
55
+ }
56
+ else {
57
+ return r1.start.line - r2.start.line;
58
+ }
59
+ }
60
+ exports.rangeCompare = rangeCompare;
61
+ //# sourceMappingURL=range.js.map
package/util/set.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Given both sets, this checks if they contain the same elements.
3
+ */
4
+ export declare function setEquals<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): boolean;
5
+ /**
6
+ * Returns `A – B`
7
+ */
8
+ export declare function setMinus<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): Set<T>;