@eagleoutice/flowr 2.2.3 → 2.2.4

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 (63) hide show
  1. package/README.md +412 -39
  2. package/benchmark/slicer.js +0 -1
  3. package/benchmark/summarizer/first-phase/process.js +18 -8
  4. package/benchmark/summarizer/summarizer.d.ts +1 -1
  5. package/benchmark/summarizer/summarizer.js +1 -1
  6. package/cli/benchmark-app.js +1 -1
  7. package/cli/common/script.js +0 -1
  8. package/cli/repl/commands/repl-cfg.js +38 -8
  9. package/cli/repl/commands/repl-commands.js +1 -1
  10. package/cli/repl/commands/repl-dataflow.js +38 -8
  11. package/cli/repl/commands/repl-normalize.js +38 -8
  12. package/cli/repl/commands/repl-query.js +2 -2
  13. package/cli/repl/core.js +17 -8
  14. package/cli/repl/print-version.js +2 -1
  15. package/cli/repl/server/connection.js +17 -7
  16. package/cli/repl/server/messages/all-messages.js +17 -7
  17. package/cli/repl/server/messages/message-repl.js +17 -7
  18. package/cli/repl/server/messages/message-slice.js +17 -7
  19. package/cli/script-core/statistics-helper-core.js +0 -1
  20. package/core/print/normalize-printer.js +0 -1
  21. package/dataflow/environments/resolve-by-name.d.ts +2 -0
  22. package/dataflow/environments/resolve-by-name.js +2 -0
  23. package/dataflow/graph/resolve-graph.js +1 -1
  24. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +1 -1
  25. package/documentation/data/server/doc-data-server-messages.js +1 -2
  26. package/documentation/doc-util/doc-auto-gen.d.ts +1 -0
  27. package/documentation/doc-util/doc-auto-gen.js +5 -1
  28. package/documentation/doc-util/doc-benchmarks.d.ts +23 -0
  29. package/documentation/doc-util/doc-benchmarks.js +76 -0
  30. package/documentation/doc-util/doc-code.d.ts +1 -0
  31. package/documentation/doc-util/doc-code.js +4 -0
  32. package/documentation/doc-util/doc-files.d.ts +1 -0
  33. package/documentation/doc-util/doc-files.js +2 -1
  34. package/documentation/doc-util/doc-server-message.js +1 -1
  35. package/documentation/doc-util/doc-structure.d.ts +1 -1
  36. package/documentation/doc-util/doc-structure.js +2 -2
  37. package/documentation/doc-util/doc-types.d.ts +1 -0
  38. package/documentation/doc-util/doc-types.js +16 -8
  39. package/documentation/print-core-wiki.js +8 -1
  40. package/documentation/print-interface-wiki.js +21 -15
  41. package/documentation/print-linting-and-testing-wiki.js +3 -1
  42. package/documentation/print-readme.d.ts +1 -0
  43. package/documentation/print-readme.js +160 -0
  44. package/package.json +28 -40
  45. package/queries/catalog/dependencies-query/dependencies-query-executor.js +77 -45
  46. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +3 -0
  47. package/queries/catalog/dependencies-query/dependencies-query-format.js +3 -2
  48. package/r-bridge/lang-4.x/ast/model/model.d.ts +2 -3
  49. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +1 -0
  50. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +3 -0
  51. package/r-bridge/shell.js +18 -8
  52. package/statistics/features/supported/comments/comments.js +17 -7
  53. package/statistics/features/supported/used-functions/post-process.js +0 -1
  54. package/statistics/features/supported/used-packages/used-packages.js +17 -7
  55. package/statistics/features/supported/values/values.js +17 -7
  56. package/statistics/summarizer/summarizer.js +1 -2
  57. package/util/files.js +17 -7
  58. package/util/json.js +0 -2
  59. package/util/numbers.d.ts +1 -0
  60. package/util/numbers.js +5 -0
  61. package/util/parallel.js +17 -7
  62. package/util/quads.js +3 -3
  63. package/util/version.js +1 -1
package/README.md CHANGED
@@ -1,18 +1,414 @@
1
1
  [![flowR logo](https://raw.githubusercontent.com/wiki/flowr-analysis/flowr/img/flowR.png)](https://github.com/flowr-analysis/flowr/wiki)\
2
- [![QA (and potentially deploy)](https://github.com/flowr-analysis/flowr/actions/workflows/qa.yaml/badge.svg)](https://github.com/flowr-analysis/flowr/actions/workflows/qa.yaml) [![codecov](https://codecov.io/gh/flowr-analysis/flowr/graph/badge.svg)](https://codecov.io/gh/flowr-analysis/flowr) [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/eagleoutice/flowr?logo=docker&logoColor=white&label=dockerhub)](https://hub.docker.com/r/eagleoutice/flowr) [![latest tag](https://badgen.net/github/tag/flowr-analysis/flowr?label=latest&color=purple)](https://github.com/flowr-analysis/flowr/releases/latest) [![Marketplace](https://badgen.net/vs-marketplace/v/code-inspect.vscode-flowr)](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr) [![All Contributors](https://img.shields.io/github/all-contributors/flowr-analysis/flowr)](#contributors)
2
+ [![QA (and potentially deploy)](https://github.com/flowr-analysis/flowr/actions/workflows/qa.yaml/badge.svg)](https://github.com/flowr-analysis/flowr/actions/workflows/qa.yaml)
3
+ [![codecov](https://codecov.io/gh/flowr-analysis/flowr/graph/badge.svg)](https://codecov.io/gh/flowr-analysis/flowr)
4
+ [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/eagleoutice/flowr?logo=docker&logoColor=white&label=dockerhub)](https://hub.docker.com/r/eagleoutice/flowr)
5
+ [![latest tag](https://badgen.net/github/tag/flowr-analysis/flowr?label=latest&color=purple)](https://github.com/flowr-analysis/flowr/releases/latest)
6
+ [![Marketplace](https://badgen.net/vs-marketplace/v/code-inspect.vscode-flowr)](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr)
3
7
  [![DOI](https://zenodo.org/badge/624819038.svg)](https://zenodo.org/doi/10.5281/zenodo.13319290)
4
8
 
5
- _flowR_ is a static [dataflow analyzer](https://en.wikipedia.org/wiki/Data-flow_analysis) and [program slicer](https://github.com/flowr-analysis/flowr/wiki/Terminology#program-slice) for the [_R_](https://www.r-project.org/) programming language (currently tested for versions `4.x` and `3.6.x`). You can get and use _flowR_ as a [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr), [RStudio Addin](https://github.com/flowr-analysis/rstudio-addin-flowr), [R package](https://github.com/flowr-analysis/flowr-r-adapter), and as a [Docker image](https://hub.docker.com/r/eagleoutice/flowr).
9
+ _flowR_ is a sophisticated, static [dataflow analyzer](https://en.wikipedia.org/wiki/Data-flow_analysis) for the [R programming language](https://www.r-project.org/).
10
+ It offers a wide variety of features, for example:
6
11
 
12
+ * 🍕 **program slicing**\
13
+ Given a point of interest like the visualization of a plot, _flowR_ reduces the program to just the parts which are relevant
14
+ for the computation of the point of interest.
15
+
16
+
17
+ <details><summary style="">Example: Slicing with flowR</summary>
18
+
19
+
20
+ The simplest way to retrieve slices is with flowR's [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr).
21
+ However, you can slice using the [REPL](https://github.com/flowr-analysis/flowr/wiki/Interface#using-the-repl) as well.
22
+ This can help you if you want to reuse specific parts of an existing analysis within another context or if you want to understand
23
+ what is happening in the code.
24
+
25
+ For this, let's have a look at the example file, located at [test/testfiles/example.R](https://github.com/flowr-analysis/flowr/tree/main//test/testfiles/example.R):
26
+
27
+
28
+ ```r
29
+ sum <- 0
30
+ product <- 1
31
+ w <- 7
32
+ N <- 10
33
+
34
+ for (i in 1:(N-1)) {
35
+ sum <- sum + i + w
36
+ product <- product * i
37
+ }
38
+
39
+ cat("Sum:", sum, "\n")
40
+ cat("Product:", product, "\n")
41
+ ```
42
+
43
+
44
+ Let's suppose we are interested only in the sum which is printed in line 11.
45
+ To get a slice for this, you can use the following command:
46
+
47
+
48
+
49
+ ```shell
50
+ $ docker run -it --rm eagleoutice/flowr # or npm run flowr
51
+ flowR repl using flowR v2.2.3, R v4.4.0 (r-shell engine)
52
+ R> :slicer test/testfiles/example.R --criterion "11@sum"
53
+ ```
54
+
55
+ <details>
56
+ <summary style='color:gray'>Output</summary>
57
+
58
+
59
+ ```text
60
+ sum <- 0
61
+ w <- 7
62
+ N <- 10
63
+ for(i in 1:(N-1)) sum <- sum + i + w
64
+ sum
65
+ ```
66
+
67
+
68
+
69
+
70
+ </details>
71
+
72
+
73
+
74
+
75
+
76
+ </details>
77
+
78
+
79
+ * 📚 **dependency analysis**\
80
+ Given your analysis project, flowR offers a plethora of so-called [queries](https://github.com/flowr-analysis/flowr/wiki/Query-API) to get more information about your code.
81
+ An important query is the [dependencies query](https://github.com/flowr-analysis/flowr/wiki/Query-API#dependencies-query), which shows you the library your project needs,
82
+ the data files it reads, the scripts it sources, and the data it outputs.
83
+
84
+
85
+ <details><summary style="">Example: Dependency Analysis with flowR</summary>
86
+
87
+
88
+ The following showcases the dependency view of the [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr):
89
+
90
+ ![Dependency Analysis](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/dependencies.png)
91
+
92
+
93
+
94
+ </details>
95
+
96
+
97
+ * 🚀 **fast data and control-flow graphs**\
98
+ Within just <i><span title="This measurement is automatically fetched from the latest benchmarks!">120.6 ms</i></span> (as of Feb 12, 2025),
99
+ _flowR_ can analyze the data- and control-flow of the average real-world R script. See the [benchmarks](https://flowr-analysis.github.io/flowr/wiki/stats/benchmark) for more information,
100
+ and consult the [wiki pages](https://github.com/flowr-analysis/flowr/wiki/Dataflow-Graph) for more details on the dataflow graph.
101
+
102
+
103
+ <details><summary style="">Example: Generating a dataflow graph with flowR</summary>
104
+
105
+
106
+ You can investigate flowR's analyses using the [REPL](https://github.com/flowr-analysis/flowr/wiki/Interface#using-the-repl).
107
+ Commands like <span title="Description (Repl Command, starred version): Returns the URL to mermaid.live; Base Command: Get mermaid code for the dataflow graph of R code, start with 'file://' to indicate a file (aliases: :d*, :df*)">`:dataflow*`</span> allow you to view a dataflow graph for a given R script.
108
+
109
+ Let's have a look at the following example:
110
+
111
+
112
+ ```r
113
+ sum <- 0
114
+ product <- 1
115
+ w <- 7
116
+ N <- 10
117
+
118
+ for (i in 1:(N-1)) {
119
+ sum <- sum + i + w
120
+ product <- product * i
121
+ }
122
+
123
+ cat("Sum:", sum, "\n")
124
+ cat("Product:", product, "\n")
125
+ ```
126
+
127
+
128
+ To get the dataflow graph for this script, you can use the following command:
129
+
130
+
131
+
132
+ ```shell
133
+ $ docker run -it --rm eagleoutice/flowr # or npm run flowr
134
+ flowR repl using flowR v2.2.3, R v4.4.0 (r-shell engine)
135
+ R> :dataflow* test/testfiles/example.R
136
+ ```
137
+
138
+ <details>
139
+ <summary style='color:gray'>Output</summary>
140
+
141
+
142
+ ```text
143
+ https://mermaid.live/view#base64:eyJjb2RlIjoiZmxvd2NoYXJ0IFREXG4gICAgMChbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RcbiAgICAgICgwKVxuICAgICAgKjEuMS00KmBcIl0pXG4gICAgMShbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RmaWxlc1xuICAgICAgKDEpXG4gICAgICAqMS42LTE0KmBcIl0pXG4gICAgMltbXCJgIzkxO1JCaW5hcnlPcCM5MzsgL1xuICAgICAgKDIpXG4gICAgICAqMS4xLTE0KlxuICAgICgwLCAxKWBcIl1dXG4gICAgMyhbXCJgIzkxO1JTeW1ib2wjOTM7IGV4YW1wbGUuUlxuICAgICAgKDMpXG4gICAgICAqMS4xNi0yNCpgXCJdKVxuICAgIDRbW1wiYCM5MTtSQmluYXJ5T3AjOTM7IC9cbiAgICAgICg0KVxuICAgICAgKjEuMS0yNCpcbiAgICAoMiwgMylgXCJdXVxuICAgIDIgLS0+fFwicmVhZHMsIGFyZ3VtZW50XCJ8IDBcbiAgICAyIC0tPnxcInJlYWRzLCBhcmd1bWVudFwifCAxXG4gICAgNCAtLT58XCJyZWFkcywgYXJndW1lbnRcInwgMlxuICAgIDQgLS0+fFwicmVhZHMsIGFyZ3VtZW50XCJ8IDMiLCJtZXJtYWlkIjp7ImF1dG9TeW5jIjp0cnVlfX0=
144
+ ```
145
+
146
+
147
+
148
+ Following the link output should show the following:
149
+
150
+
151
+
152
+ ```mermaid
153
+ flowchart LR
154
+ 1{{"`#91;RNumber#93; 0
155
+ (1)
156
+ *1.8*`"}}
157
+ 0["`#91;RSymbol#93; sum
158
+ (0)
159
+ *1.1-3*`"]
160
+ 2[["`#91;RBinaryOp#93; #60;#45;
161
+ (2)
162
+ *1.1-8*
163
+ (0, 1)`"]]
164
+ 4{{"`#91;RNumber#93; 1
165
+ (4)
166
+ *2.12*`"}}
167
+ 3["`#91;RSymbol#93; product
168
+ (3)
169
+ *2.1-7*`"]
170
+ 5[["`#91;RBinaryOp#93; #60;#45;
171
+ (5)
172
+ *2.1-12*
173
+ (3, 4)`"]]
174
+ 7{{"`#91;RNumber#93; 7
175
+ (7)
176
+ *3.6*`"}}
177
+ 6["`#91;RSymbol#93; w
178
+ (6)
179
+ *3.1*`"]
180
+ 8[["`#91;RBinaryOp#93; #60;#45;
181
+ (8)
182
+ *3.1-6*
183
+ (6, 7)`"]]
184
+ 10{{"`#91;RNumber#93; 10
185
+ (10)
186
+ *4.6-7*`"}}
187
+ 9["`#91;RSymbol#93; N
188
+ (9)
189
+ *4.1*`"]
190
+ 11[["`#91;RBinaryOp#93; #60;#45;
191
+ (11)
192
+ *4.1-7*
193
+ (9, 10)`"]]
194
+ 12["`#91;RSymbol#93; i
195
+ (12)
196
+ *6.6*`"]
197
+ 13{{"`#91;RNumber#93; 1
198
+ (13)
199
+ *6.11*`"}}
200
+ 16(["`#91;RSymbol#93; N
201
+ (16)
202
+ *6.14*`"])
203
+ 17{{"`#91;RNumber#93; 1
204
+ (17)
205
+ *6.16*`"}}
206
+ 18[["`#91;RBinaryOp#93; #45;
207
+ (18)
208
+ *6.14-16*
209
+ (16, 17)`"]]
210
+ 19[["`#91;RExpressionList#93; (
211
+ (19)
212
+ *6.13*
213
+ (18)`"]]
214
+ 20[["`#91;RBinaryOp#93; #58;
215
+ (20)
216
+ *6.11-17*
217
+ (13, 19)`"]]
218
+ 24(["`#91;RSymbol#93; sum
219
+ (24, :may:36+)
220
+ *7.10-12*`"])
221
+ 25(["`#91;RSymbol#93; i
222
+ (25, :may:36+)
223
+ *7.16*`"])
224
+ 26[["`#91;RBinaryOp#93; #43;
225
+ (26, :may:36+)
226
+ *7.10-16*
227
+ (24, 25)`"]]
228
+ 27(["`#91;RSymbol#93; w
229
+ (27, :may:36+)
230
+ *7.20*`"])
231
+ 28[["`#91;RBinaryOp#93; #43;
232
+ (28, :may:36+)
233
+ *7.10-20*
234
+ (26, 27)`"]]
235
+ 23["`#91;RSymbol#93; sum
236
+ (23, :may:)
237
+ *7.3-5*`"]
238
+ 29[["`#91;RBinaryOp#93; #60;#45;
239
+ (29, :may:36+)
240
+ *7.3-20*
241
+ (23, 28)`"]]
242
+ 31(["`#91;RSymbol#93; product
243
+ (31, :may:36+)
244
+ *8.14-20*`"])
245
+ 32(["`#91;RSymbol#93; i
246
+ (32, :may:36+)
247
+ *8.24*`"])
248
+ 33[["`#91;RBinaryOp#93; #42;
249
+ (33, :may:36+)
250
+ *8.14-24*
251
+ (31, 32)`"]]
252
+ 30["`#91;RSymbol#93; product
253
+ (30, :may:)
254
+ *8.3-9*`"]
255
+ 34[["`#91;RBinaryOp#93; #60;#45;
256
+ (34, :may:36+)
257
+ *8.3-24*
258
+ (30, 33)`"]]
259
+ 35[["`#91;RExpressionList#93; #123;
260
+ (35, :may:36+)
261
+ *6.20*
262
+ (29, 34)`"]]
263
+ 36[["`#91;RForLoop#93; for
264
+ (36)
265
+ *6.1-9.1*
266
+ (12, 20, 35)`"]]
267
+ 38{{"`#91;RString#93; #34;Sum#58;#34;
268
+ (38)
269
+ *11.5-10*`"}}
270
+ 40(["`#91;RSymbol#93; sum
271
+ (40)
272
+ *11.13-15*`"])
273
+ 42{{"`#91;RString#93; #34;
274
+ #34;
275
+ (42)
276
+ *11.18-21*`"}}
277
+ 44[["`#91;RFunctionCall#93; cat
278
+ (44)
279
+ *11.1-22*
280
+ (38, 40, 42)`"]]
281
+ 46{{"`#91;RString#93; #34;Product#58;#34;
282
+ (46)
283
+ *12.5-14*`"}}
284
+ 48(["`#91;RSymbol#93; product
285
+ (48)
286
+ *12.17-23*`"])
287
+ 50{{"`#91;RString#93; #34;
288
+ #34;
289
+ (50)
290
+ *12.26-29*`"}}
291
+ 52[["`#91;RFunctionCall#93; cat
292
+ (52)
293
+ *12.1-30*
294
+ (46, 48, 50)`"]]
295
+ 0 -->|"defined-by"| 1
296
+ 0 -->|"defined-by"| 2
297
+ 2 -->|"argument"| 1
298
+ 2 -->|"returns, argument"| 0
299
+ 3 -->|"defined-by"| 4
300
+ 3 -->|"defined-by"| 5
301
+ 5 -->|"argument"| 4
302
+ 5 -->|"returns, argument"| 3
303
+ 6 -->|"defined-by"| 7
304
+ 6 -->|"defined-by"| 8
305
+ 8 -->|"argument"| 7
306
+ 8 -->|"returns, argument"| 6
307
+ 9 -->|"defined-by"| 10
308
+ 9 -->|"defined-by"| 11
309
+ 11 -->|"argument"| 10
310
+ 11 -->|"returns, argument"| 9
311
+ 12 -->|"defined-by"| 20
312
+ 16 -->|"reads"| 9
313
+ 18 -->|"reads, argument"| 16
314
+ 18 -->|"reads, argument"| 17
315
+ 19 -->|"returns, argument"| 18
316
+ 20 -->|"reads, argument"| 13
317
+ 20 -->|"reads, argument"| 19
318
+ 24 -->|"reads"| 0
319
+ 24 -->|"reads"| 23
320
+ 24 -->|"CD-True"| 36
321
+ linkStyle 25 stroke:gray,color:gray;
322
+ 25 -->|"reads"| 12
323
+ 25 -->|"CD-True"| 36
324
+ linkStyle 27 stroke:gray,color:gray;
325
+ 26 -->|"reads, argument"| 24
326
+ 26 -->|"reads, argument"| 25
327
+ 26 -->|"CD-True"| 36
328
+ linkStyle 30 stroke:gray,color:gray;
329
+ 27 -->|"reads"| 6
330
+ 27 -->|"CD-True"| 36
331
+ linkStyle 32 stroke:gray,color:gray;
332
+ 28 -->|"reads, argument"| 26
333
+ 28 -->|"reads, argument"| 27
334
+ 28 -->|"CD-True"| 36
335
+ linkStyle 35 stroke:gray,color:gray;
336
+ 23 -->|"defined-by"| 28
337
+ 23 -->|"defined-by"| 29
338
+ 29 -->|"argument"| 28
339
+ 29 -->|"returns, argument"| 23
340
+ 29 -->|"CD-True"| 36
341
+ linkStyle 40 stroke:gray,color:gray;
342
+ 31 -->|"reads"| 3
343
+ 31 -->|"reads"| 30
344
+ 31 -->|"CD-True"| 36
345
+ linkStyle 43 stroke:gray,color:gray;
346
+ 32 -->|"reads"| 12
347
+ 32 -->|"CD-True"| 36
348
+ linkStyle 45 stroke:gray,color:gray;
349
+ 33 -->|"reads, argument"| 31
350
+ 33 -->|"reads, argument"| 32
351
+ 33 -->|"CD-True"| 36
352
+ linkStyle 48 stroke:gray,color:gray;
353
+ 30 -->|"defined-by"| 33
354
+ 30 -->|"defined-by"| 34
355
+ 34 -->|"argument"| 33
356
+ 34 -->|"returns, argument"| 30
357
+ 34 -->|"CD-True"| 36
358
+ linkStyle 53 stroke:gray,color:gray;
359
+ 35 -->|"argument"| 29
360
+ 35 -->|"returns, argument"| 34
361
+ 35 -->|"CD-True"| 36
362
+ linkStyle 56 stroke:gray,color:gray;
363
+ 36 -->|"reads, argument"| 12
364
+ 36 -->|"reads, argument"| 20
365
+ 36 -->|"argument, non-standard-evaluation"| 35
366
+ 40 -->|"reads"| 0
367
+ 40 -->|"reads"| 23
368
+ 44 -->|"argument"| 38
369
+ 44 -->|"reads, argument"| 40
370
+ 44 -->|"argument"| 42
371
+ 48 -->|"reads"| 3
372
+ 48 -->|"reads"| 30
373
+ 52 -->|"argument"| 46
374
+ 52 -->|"reads, argument"| 48
375
+ 52 -->|"argument"| 50
376
+ ```
377
+
378
+ (The analysis required _22.53 ms_ (including parse and normalize, using the [r-shell](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
379
+
380
+
381
+
382
+ </details>
383
+
384
+
385
+
386
+
387
+
388
+ </details>
389
+
390
+
391
+ If you want to use flowR and the features it provides, feel free to check out the:
392
+
393
+ - [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr): provides access to flowR's capabilities directly in VS Code (also works in [vscode.dev](https://vscode.dev/))
394
+ - [RStudio Addin](https://github.com/flowr-analysis/rstudio-addin-flowr): integrates flowR into [RStudio](https://posit.co/downloads/)
395
+ - [R package](https://github.com/flowr-analysis/flowr-r-adapter): allows you to use flowR in your R scripts
396
+ - [Docker image](https://hub.docker.com/r/eagleoutice/flowr): run flowR in a container, this also includes [flowR's server](https://github.com/flowr-analysis/flowr/wiki/Interface#communicating-with-the-server)
397
+ - [NPM package](https://www.npmjs.com/package/@eagleoutice/flowr): include flowR in your TypeScript and JavaScript projects (e.g., used for the VS Code extension)
398
+
7
399
  ## ⭐ Getting Started
8
400
 
9
- To get started with _flowR_ and its features, please check out the [Overview](https://github.com/flowr-analysis/flowr/wiki/Overview) page. The [Setup](https://github.com/flowr-analysis/flowr/wiki/Setup) wiki page explains how you can download and setup _flowR_ on your system. With docker&nbsp;🐳️, the following line should be enough (and drop you directly into the read-eval-print loop):
401
+ To get started with _flowR_ and its features, please check out the [Overview](https://github.com/flowr-analysis/flowr/wiki/Overview) wiki page.
402
+ The [Setup](https://github.com/flowr-analysis/flowr/wiki/Setup) wiki page explains how you can download and setup _flowR_ on your system.
403
+ With docker&nbsp;🐳️, the following line should be enough (and drop you directly into the read-eval-print loop):
404
+
10
405
 
11
406
  ```shell
12
407
  docker run -it --rm eagleoutice/flowr
13
408
  ```
14
409
 
15
- You can enter `:help` to gain more information on its capabilities.
410
+
411
+ You can enter <span title="Description (Repl Command): Show help information (aliases: :h, :?)">`:help`</span> to gain more information on its capabilities.
16
412
 
17
413
  <details>
18
414
 
@@ -33,43 +429,20 @@ We welcome every contribution! Please check out the [contributing guidelines](ht
33
429
 
34
430
  ### Contributors
35
431
 
36
- <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
37
- <!-- prettier-ignore-start -->
38
- <!-- markdownlint-disable -->
39
- <table>
40
- <tbody>
41
- <tr>
42
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/EagleoutIce"><img src="https://avatars.githubusercontent.com/u/9303573?v=4?s=100" width="100px;" alt="Florian Sihler"/><br /><sub><b>Florian Sihler</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=EagleoutIce" title="Code">💻</a> <a href="#ideas-EagleoutIce" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-EagleoutIce" title="Maintenance">🚧</a> <a href="#projectManagement-EagleoutIce" title="Project Management">📆</a> <a href="#research-EagleoutIce" title="Research">🔬</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=EagleoutIce" title="Tests">⚠️</a> <a href="#talk-EagleoutIce" title="Talks">📢</a></td>
43
- <td align="center" valign="top" width="14.28%"><a href="https://ellpeck.de/"><img src="https://avatars.githubusercontent.com/u/5741138?v=4?s=100" width="100px;" alt="Ell"/><br /><sub><b>Ell</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=Ellpeck" title="Code">💻</a> <a href="#maintenance-Ellpeck" title="Maintenance">🚧</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=Ellpeck" title="Tests">⚠️</a> <a href="#plugin-Ellpeck" title="Plugin/utility libraries">🔌</a></td>
44
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/gigalasr"><img src="https://avatars.githubusercontent.com/u/25102989?v=4?s=100" width="100px;" alt="Lars"/><br /><sub><b>Lars</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=gigalasr" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=gigalasr" title="Tests">⚠️</a></td>
45
- <td align="center" valign="top" width="14.28%"><a href="https://lukas.pietzschmann.org/"><img src="https://avatars.githubusercontent.com/u/49213919?v=4?s=100" width="100px;" alt="Lukas Pietzschmann"/><br /><sub><b>Lukas Pietzschmann</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=LukasPietzschmann" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=LukasPietzschmann" title="Tests">⚠️</a></td>
46
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/bjthehun"><img src="https://avatars.githubusercontent.com/u/38729215?v=4?s=100" width="100px;" alt="Benedikt Jutz"/><br /><sub><b>Benedikt Jutz</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=bjthehun" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=bjthehun" title="Tests">⚠️</a></td>
47
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/Core5563"><img src="https://avatars.githubusercontent.com/u/140061253?v=4?s=100" width="100px;" alt="Core5563"/><br /><sub><b>Core5563</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=Core5563" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=Core5563" title="Tests">⚠️</a></td>
48
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/Ehcsan"><img src="https://avatars.githubusercontent.com/u/68707578?v=4?s=100" width="100px;" alt="Ehcsan"/><br /><sub><b>Ehcsan</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=Ehcsan" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=Ehcsan" title="Tests">⚠️</a></td>
49
- </tr>
50
- <tr>
51
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/Slartibartfass2"><img src="https://avatars.githubusercontent.com/u/40503329?v=4?s=100" width="100px;" alt="Felix Schlegel"/><br /><sub><b>Felix Schlegel</b></sub></a><br /><a href="https://github.com/flowr-analysis/flowr/commits?author=Slartibartfass2" title="Code">💻</a> <a href="https://github.com/flowr-analysis/flowr/commits?author=Slartibartfass2" title="Tests">⚠️</a></td>
52
- </tr>
53
- </tbody>
54
- <tfoot>
55
- <tr>
56
- <td align="center" size="13px" colspan="7">
57
- <img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
58
- <a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
59
- </img>
60
- </td>
61
- </tr>
62
- </tfoot>
63
- </table>
64
-
65
- <!-- markdownlint-restore -->
66
- <!-- prettier-ignore-end -->
67
-
68
- <!-- ALL-CONTRIBUTORS-LIST:END -->
432
+ <a href="https://github.com/flowr-analysis/flowr/graphs/contributors">
433
+ <img src="https://contrib.rocks/image?repo=flowr-analysis/flowr" alt="flowR Contributors"/>
434
+ </a>
69
435
 
70
436
  ----
71
437
 
72
- *flowr* is actively developed by *Florian Sihler* (contact at: <florian.sihler@uni-ulm.de>) under the
73
- [GPLv3 License](LICENSE).
438
+ *flowr* is actively developed by [Florian Sihler](https://eagleoutice.github.io/portfolio/) under the
439
+ [GPLv3 License](LICENSE).\
440
+ It is partially supported by the German Research Foundation (DFG) under the grant [504226141](https://gepris.dfg.de/gepris/projekt/504226141) ("CodeInspector").
74
441
 
75
442
  ----
443
+
444
+ ### Generation Notice
445
+
446
+ Please notice that this file was generated automatically using the file [src/documentation/print-readme.ts](https://github.com/flowr-analysis/flowr/tree/main//src/documentation/print-readme.ts) as a source.\
447
+ If you want to make changes please edit the source file (the CI will take care of the rest).
448
+ In fact, many files in the [wiki](https://github.com/flowr-analysis/flowr/wiki) are generated, so make sure to check for the source file if you want to make changes.
@@ -172,7 +172,6 @@ class BenchmarkSlicer {
172
172
  (0, assert_1.guard)(!this.perSliceMeasurements.has(slicingCriteria), 'do not slice the same criteria combination twice');
173
173
  const measurements = new stopwatch_1.Measurements();
174
174
  const stats = {
175
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
176
175
  measurements: undefined,
177
176
  slicingCriteria: [],
178
177
  numberOfDataflowNodesSliced: 0,
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -200,7 +210,7 @@ async function summarizeSlicerStats(stats, report = () => {
200
210
  normalized: (sliceTime + reconstructTime) / numberOfNormalizedTokens
201
211
  });
202
212
  }
203
- catch (e) {
213
+ catch {
204
214
  console.error(` ! Failed to re-parse the output of the slicer for ${JSON.stringify(criteria)}`); //, e
205
215
  console.error(` Code: ${output}\n`);
206
216
  failedOutputs++;
@@ -7,7 +7,7 @@ import type { CommonSummarizerConfiguration } from '../../util/summarizer';
7
7
  import { Summarizer } from '../../util/summarizer';
8
8
  export interface BenchmarkSummarizerConfiguration extends CommonSummarizerConfiguration {
9
9
  /**
10
- * If given, produce graph data output (e.g. for the benchmark visualization) to the given path
10
+ * If given, produce graph data output (e.g., for the benchmark visualization) to the given path
11
11
  */
12
12
  graphOutputPath?: string;
13
13
  /**
@@ -65,7 +65,7 @@ class BenchmarkSummarizer extends summarizer_1.Summarizer {
65
65
  try {
66
66
  fs_1.default.rmSync(path, { recursive: true });
67
67
  }
68
- catch (e) {
68
+ catch {
69
69
  log_1.log.error('failure in cleanup');
70
70
  }
71
71
  }
@@ -30,7 +30,7 @@ function removeIfExists(summarizedRaw) {
30
30
  try {
31
31
  fs_1.default.rmSync(summarizedRaw, { recursive: true });
32
32
  }
33
- catch (e) {
33
+ catch {
34
34
  log_1.log.error('failure in cleanup');
35
35
  }
36
36
  }
@@ -43,7 +43,6 @@ function processCommandLineArgs(script, requireAdditionally, help) {
43
43
  }
44
44
  else if (requireAdditionally.length > 0) {
45
45
  const keys = new Set(Object.keys(options));
46
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- we know that they are not given if undefined
47
46
  const missing = requireAdditionally.filter(k => !keys.has(k) || options[k] === undefined);
48
47
  if (missing.length > 0) {
49
48
  console.error((0, ansi_1.italic)(`Missing required arguments: ${missing.join(', ')}. Showing help.`));
@@ -1,7 +1,37 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
5
35
  Object.defineProperty(exports, "__esModule", { value: true });
6
36
  exports.controlflowStarCommand = exports.controlflowCommand = void 0;
7
37
  const cfg_1 = require("../../../util/cfg/cfg");
@@ -9,7 +39,7 @@ const default_pipelines_1 = require("../../../core/steps/pipeline/default-pipeli
9
39
  const retriever_1 = require("../../../r-bridge/retriever");
10
40
  const cfg_2 = require("../../../util/mermaid/cfg");
11
41
  const ansi_1 = require("../../../util/ansi");
12
- const clipboardy_1 = __importDefault(require("clipboardy"));
42
+ const clipboard = Promise.resolve().then(() => __importStar(require('clipboardy')));
13
43
  async function controlflow(parser, remainingLine) {
14
44
  return await (0, default_pipelines_1.createDataflowPipeline)(parser, {
15
45
  request: (0, retriever_1.requestFromInput)(remainingLine.trim())
@@ -32,10 +62,10 @@ exports.controlflowCommand = {
32
62
  const mermaid = (0, cfg_2.cfgToMermaid)(cfg, result.normalize);
33
63
  output.stdout(mermaid);
34
64
  try {
35
- clipboardy_1.default.writeSync(mermaid);
65
+ (await clipboard).default.writeSync(mermaid);
36
66
  output.stdout(formatInfo(output, 'mermaid code'));
37
67
  }
38
- catch (e) { /* do nothing this is a service thing */ }
68
+ catch { /* do nothing this is a service thing */ }
39
69
  }
40
70
  };
41
71
  exports.controlflowStarCommand = {
@@ -49,10 +79,10 @@ exports.controlflowStarCommand = {
49
79
  const mermaid = (0, cfg_2.cfgToMermaidUrl)(cfg, result.normalize);
50
80
  output.stdout(mermaid);
51
81
  try {
52
- clipboardy_1.default.writeSync(mermaid);
82
+ (await clipboard).default.writeSync(mermaid);
53
83
  output.stdout(formatInfo(output, 'mermaid url'));
54
84
  }
55
- catch (e) { /* do nothing this is a service thing */ }
85
+ catch { /* do nothing this is a service thing */ }
56
86
  }
57
87
  };
58
88
  //# sourceMappingURL=repl-cfg.js.map
@@ -93,7 +93,7 @@ function hasModule(path) {
93
93
  require.resolve(path);
94
94
  return true;
95
95
  }
96
- catch (e) {
96
+ catch {
97
97
  return false;
98
98
  }
99
99
  }