@eagleoutice/flowr 2.8.5 → 2.8.6

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.
package/README.md CHANGED
@@ -24,7 +24,7 @@ It offers a wide variety of features, for example:
24
24
 
25
25
  ```shell
26
26
  $ docker run -it --rm eagleoutice/flowr # or npm run flowr
27
- flowR repl using flowR v2.7.6, R grammar v14 (tree-sitter engine)
27
+ flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
28
28
  R> :query @linter "read.csv(\"/root/x.txt\")"
29
29
  ```
30
30
 
@@ -45,7 +45,7 @@ It offers a wide variety of features, for example:
45
45
  ╰ Absolute Paths (absolute-file-paths):
46
46
  ╰ certain:
47
47
  ╰ Path `/root/x.txt` at 1.1-23
48
- ╰ Metadata: totalConsidered: 1, totalUnknown: 0, searchTimeMs: 0, processTimeMs: 0
48
+ ╰ Metadata: totalConsidered: 1, totalUnknown: 0, searchTimeMs: 1, processTimeMs: 0
49
49
  ╰ Unused Definitions (unused-definitions):
50
50
  ╰ Metadata: totalConsidered: 0, searchTimeMs: 0, processTimeMs: 0
51
51
  ╰ Naming Convention (naming-convention):
@@ -53,7 +53,7 @@ It offers a wide variety of features, for example:
53
53
  ╰ Network Functions (network-functions):
54
54
  ╰ Metadata: totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs: 0, processTimeMs: 0
55
55
  ╰ Dataframe Access Validation (dataframe-access-validation):
56
- ╰ Metadata: numOperations: 0, numAccesses: 0, totalAccessed: 0, searchTimeMs: 0, processTimeMs: 1
56
+ ╰ Metadata: numOperations: 0, numAccesses: 0, totalAccessed: 0, searchTimeMs: 0, processTimeMs: 0
57
57
  ╰ Dead Code (dead-code):
58
58
  ╰ Metadata: consideredNodes: 5, searchTimeMs: 0, processTimeMs: 0
59
59
  ╰ Useless Loops (useless-loop):
@@ -82,7 +82,7 @@ It offers a wide variety of features, for example:
82
82
 
83
83
  Query: **linter** (2 ms)\
84
84
     ╰ **Deprecated Functions** (deprecated-functions):\
85
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs: 1, processTimeMs: 0</code>\
85
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>totalCalls: 0, totalFunctionDefinitions: 0, searchTimeMs: 0, processTimeMs: 1</code>\
86
86
  &nbsp;&nbsp;&nbsp;╰ **File Path Validity** (file-path-validity):\
87
87
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ certain:\
88
88
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ Path `/root/x.txt` at 1.1-23\
@@ -105,11 +105,11 @@ It offers a wide variety of features, for example:
105
105
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>consideredNodes: 5, searchTimeMs: 0, processTimeMs: 0</code>\
106
106
  &nbsp;&nbsp;&nbsp;╰ **Useless Loops** (useless-loop):\
107
107
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;╰ _Metadata_: <code>numOfUselessLoops: 0, searchTimeMs: 0, processTimeMs: 0</code>\
108
- _All queries together required ≈2 ms (1ms accuracy, total 2 ms)_
108
+ _All queries together required ≈2 ms (1ms accuracy, total 3 ms)_
109
109
 
110
110
  <details> <summary style="color:gray">Show Detailed Results as Json</summary>
111
111
 
112
- The analysis required _2.2 ms_ (including parsing and normalization and the query) within the generation environment.
112
+ The analysis required _2.6 ms_ (including parsing and normalization and the query) within the generation environment.
113
113
 
114
114
  In general, the JSON contains the Ids of the nodes in question as they are present in the normalized AST or the dataflow graph of flowR.
115
115
  Please consult the [Interface](https://github.com/flowr-analysis/flowr/wiki/Interface) wiki page for more information on how to get those.
@@ -126,13 +126,14 @@ It offers a wide variety of features, for example:
126
126
  ".meta": {
127
127
  "totalCalls": 0,
128
128
  "totalFunctionDefinitions": 0,
129
- "searchTimeMs": 1,
130
- "processTimeMs": 0
129
+ "searchTimeMs": 0,
130
+ "processTimeMs": 1
131
131
  }
132
132
  },
133
133
  "file-path-validity": {
134
134
  "results": [
135
135
  {
136
+ "involvedId": 3,
136
137
  "range": [
137
138
  1,
138
139
  1,
@@ -307,7 +308,7 @@ It offers a wide variety of features, for example:
307
308
 
308
309
  ```shell
309
310
  $ docker run -it --rm eagleoutice/flowr # or npm run flowr
310
- flowR repl using flowR v2.7.6, R grammar v14 (tree-sitter engine)
311
+ flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
311
312
  R> :query @static-slice (11@sum) file://test/testfiles/example.R
312
313
  ```
313
314
 
@@ -321,7 +322,7 @@ It offers a wide variety of features, for example:
321
322
  N <- 10
322
323
  for(i in 1:(N-1)) sum <- sum + i + w
323
324
  sum
324
- All queries together required ≈2 ms (1ms accuracy, total 2 ms)
325
+ All queries together required ≈3 ms (1ms accuracy, total 3 ms)
325
326
  ```
326
327
 
327
328
 
@@ -355,7 +356,7 @@ It offers a wide variety of features, for example:
355
356
 
356
357
 
357
358
  * 🚀 **fast call-graph, data-, and control-flow graphs**\
358
- Within just [<i><span title="This measurement is automatically fetched from the latest benchmark!">118 ms</span></i> (as of Dec 23, 2025)](https://flowr-analysis.github.io/flowr/wiki/stats/benchmark),
359
+ Within just [<i><span title="This measurement is automatically fetched from the latest benchmark!">117.7 ms</span></i> (as of Jan 5, 2026)](https://flowr-analysis.github.io/flowr/wiki/stats/benchmark),
359
360
  _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,
360
361
  and consult the [wiki pages](https://github.com/flowr-analysis/flowr/wiki/dataflow-graph) for more details on the dataflow graphs as well as call graphs.
361
362
 
@@ -391,7 +392,7 @@ It offers a wide variety of features, for example:
391
392
 
392
393
  ```shell
393
394
  $ docker run -it --rm eagleoutice/flowr # or npm run flowr
394
- flowR repl using flowR v2.7.6, R grammar v14 (tree-sitter engine)
395
+ flowR repl using flowR v2.8.5, R grammar v14 (tree-sitter engine)
395
396
  R> :dataflow* test/testfiles/example.R
396
397
  ```
397
398
 
@@ -401,7 +402,6 @@ It offers a wide variety of features, for example:
401
402
 
402
403
  ```text
403
404
  https://mermaid.live/view#base64:eyJjb2RlIjoiZmxvd2NoYXJ0IEJUXG4gICAgMChbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RcbiAgICAgICgwKVxuICAgICAgKjEuMS00KmBcIl0pXG4gICAgMShbXCJgIzkxO1JTeW1ib2wjOTM7IHRlc3RmaWxlc1xuICAgICAgKDEpXG4gICAgICAqMS42LTE0KmBcIl0pXG4gICAgMltbXCJgIzkxO1JCaW5hcnlPcCM5MzsgL1xuICAgICAgKDIpXG4gICAgICAqMS4xLTE0KlxuICAgICgwLCAxKWBcIl1dXG4gICAgYnVpbHQtaW46X1tcImBCdWlsdC1Jbjpcbi9gXCJdXG4gICAgc3R5bGUgYnVpbHQtaW46XyBzdHJva2U6Z3JheSxmaWxsOmdyYXksc3Ryb2tlLXdpZHRoOjJweCxvcGFjaXR5Oi44O1xuICAgIDMoW1wiYCM5MTtSU3ltYm9sIzkzOyBleGFtcGxlLlJcbiAgICAgICgzKVxuICAgICAgKjEuMTYtMjQqYFwiXSlcbiAgICA0W1tcImAjOTE7UkJpbmFyeU9wIzkzOyAvXG4gICAgICAoNClcbiAgICAgICoxLjEtMjQqXG4gICAgKDIsIDMpYFwiXV1cbiAgICAyIC0tPnxcInJlYWRzLCBhcmd1bWVudFwifCAwXG4gICAgMiAtLT58XCJyZWFkcywgYXJndW1lbnRcInwgMVxuICAgIDIgLS4tPnxcInJlYWRzLCBjYWxsc1wifCBidWlsdC1pbjpfXG4gICAgbGlua1N0eWxlIDIgc3Ryb2tlOmdyYXk7XG4gICAgNCAtLT58XCJyZWFkcywgYXJndW1lbnRcInwgMlxuICAgIDQgLS0+fFwicmVhZHMsIGFyZ3VtZW50XCJ8IDNcbiAgICA0IC0uLT58XCJyZWFkcywgY2FsbHNcInwgYnVpbHQtaW46X1xuICAgIGxpbmtTdHlsZSA1IHN0cm9rZTpncmF5OyIsIm1lcm1haWQiOnsiYXV0b1N5bmMiOnRydWV9fQ==
404
- Copied mermaid url to clipboard (dataflow: 0ms).
405
405
  ```
406
406
 
407
407
 
@@ -697,7 +697,7 @@ It offers a wide variety of features, for example:
697
697
  ```
698
698
 
699
699
 
700
- (The analysis required _3.1 ms_ (including parse and normalize, using the [tree-sitter](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
700
+ (The analysis required _4.1 ms_ (including parse and normalize, using the [tree-sitter](https://github.com/flowr-analysis/flowr/wiki/Engines) engine) within the generation environment.)
701
701
 
702
702
 
703
703
 
package/cli/flowr.js CHANGED
@@ -136,6 +136,8 @@ async function mainRepl() {
136
136
  }
137
137
  else {
138
138
  await (0, print_version_1.printVersionRepl)(defaultEngine);
139
+ const w = (x) => ansi_1.ansiFormatter.format(x, { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 3 /* FontStyles.Italic */ });
140
+ console.log(w('use ') + ansi_1.ansiFormatter.format(':help', { color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 1 /* FontStyles.Bold */ }) + w(' to get a list of available commands.'));
139
141
  await (0, core_1.repl)({ analyzer: analyzer, allowRSessionAccess });
140
142
  }
141
143
  process.exit(0);
@@ -33,7 +33,7 @@ async function executeRShellCommand(output, analyzer, statement) {
33
33
  }
34
34
  }
35
35
  exports.executeCommand = {
36
- description: 'Execute the given code as R code (essentially similar to using now command). This requires the `--r-session-access` flag to be set and requires the r-shell engine.',
36
+ description: 'Execute the given code as R code. This requires the `--r-session-access` flag to be set and requires the r-shell engine.',
37
37
  isCodeCommand: false,
38
38
  usageExample: ':execute',
39
39
  aliases: ['e', 'r'],
@@ -112,7 +112,7 @@ The builder provides two methods for building the analyzer:
112
112
 
113
113
  For more information on how to configure the builder, please refer to the [Builder Configuration](#builder-configuration) section below.
114
114
 
115
- ${(0, doc_structure_1.section)('Overview of the Analyzer', 3)}
115
+ ${(0, doc_structure_1.section)('Overview of the Analyzer', 3)}
116
116
 
117
117
  Once you have created an analyzer instance, you can add R files, folders, or even entire projects for analysis using the
118
118
  ${ctx.linkM(flowr_analyzer_1.FlowrAnalyzer, 'addRequest')} method.
@@ -906,7 +906,7 @@ Let's start by looking at the properties of the dataflow information object: ${O
906
906
 
907
907
  ${(() => {
908
908
  /* this includes the meta field for timing and the quick CFG in order to enable re-use and improve performance */
909
- (0, assert_1.guard)(Object.keys(result).length === 9, () => 'Update Dataflow Documentation!');
909
+ (0, assert_1.guard)(Object.keys(result).length === 10, () => 'Update Dataflow Documentation! (Keys: ' + Object.keys(result).join(', ') + ')');
910
910
  return '';
911
911
  })()}
912
912
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eagleoutice/flowr",
3
- "version": "2.8.5",
3
+ "version": "2.8.6",
4
4
  "description": "Static Dataflow Analyzer and Program Slicer for the R Programming Language",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "repository": {
@@ -41,14 +41,19 @@ function makeReport(collector) {
41
41
  function isSubCallQuery(query) {
42
42
  return 'linkTo' in query && query.linkTo !== undefined;
43
43
  }
44
- function exactCallNameRegex(name) {
45
- return new RegExp(`^(${name})$`);
46
- }
47
44
  /**
48
45
  *
49
46
  */
50
47
  function promoteCallName(callName, exact = false) {
51
- return Array.isArray(callName) ? new Set(callName) : exact ? exactCallNameRegex(callName) : new RegExp(callName);
48
+ if (Array.isArray(callName)) {
49
+ return new Set(callName);
50
+ }
51
+ else if (exact) {
52
+ return new Set([typeof callName === 'string' ? callName : callName.source]);
53
+ }
54
+ else {
55
+ return new RegExp(callName);
56
+ }
52
57
  }
53
58
  function promoteQueryCallNames(queries) {
54
59
  let requiresCfg = false;
package/util/version.js CHANGED
@@ -6,7 +6,7 @@ exports.printVersionInformation = printVersionInformation;
6
6
  const semver_1 = require("semver");
7
7
  const assert_1 = require("./assert");
8
8
  // this is automatically replaced with the current version by release-it
9
- const version = '2.8.5';
9
+ const version = '2.8.6';
10
10
  /**
11
11
  * Retrieves the current flowR version as a new {@link SemVer} object.
12
12
  */