feat: FlowrConfig helper, setInConfig and FlowrAnalyzerBuilder::configure#2376
Conversation
There was a problem hiding this comment.
Pull request overview
This PR modernizes flowR configuration handling by introducing a FlowrConfig helper (default config, schema, cloning/amending, and path-based setters) and wiring it through the analyzer builder, CLI, queries, engines, and tests. It also updates the generated wiki/README outputs to reflect the new config API.
Changes:
- Introduce
FlowrConfighelper object (default config + Joi schema + parse/fromFile + amend/clone +setInConfighelpers) and migrate call sites fromdefaultConfigOptions/getConfig/getEngineConfig. - Add type-safe dot-path configuration support via
ObjectPath/ObjectPathValueandFlowrAnalyzerBuilder.configure(...). - Regenerate wiki/README artifacts and update tests to use the new config API; add
object-pathdependency.
Reviewed changes
Copilot reviewed 68 out of 70 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| wiki/Core.md | Regenerated core wiki output (version/R engine + snippets). |
| wiki/Capabilities.md | Regenerated capabilities wiki output (counts/timings). |
| wiki/Analyzer.md | Regenerated analyzer wiki output reflecting new config types/methods. |
| test/functionality/statistics/statistics.ts | Switch tests to FlowrConfig.default(). |
| test/functionality/statistics/statistics-post-process.test.ts | Use FlowrConfig.default() for post-processing test. |
| test/functionality/slicing/backward/static-backward-program-slices/simple.test.ts | Replace defaultConfigOptions with FlowrConfig.default(). |
| test/functionality/slicing/backward/static-backward-program-slices/alias-tracking.test.ts | Use FlowrConfig.default().solver.variables in alias tracking test. |
| test/functionality/project/plugin/news-file.test.ts | Update context creation to FlowrConfig.default(). |
| test/functionality/project/plugin/namespace-file.test.ts | Update context creation to FlowrConfig.default(). |
| test/functionality/project/plugin/license-file.test.ts | Update context creation to FlowrConfig.default(). |
| test/functionality/project/plugin/description-file.test.ts | Update context creation to FlowrConfig.default(). |
| test/functionality/project/context/flowr-analyzer-environment-context.test.ts | Use FlowrConfig.default() for environment context test. |
| test/functionality/project/cache/flowr-analyzer-cache.test.ts | Use FlowrConfig.default() when creating analyzer context. |
| test/functionality/dataflow/main/functions/dataflow-source.test.ts | Replace manual amend/merge with FlowrConfig.setInConfig(...). |
| test/functionality/dataflow/environments/resolve.test.ts | Use FlowrConfig.default().solver.variables. |
| test/functionality/control-flow/semantic-cfg-visitor.test.ts | Use FlowrConfig.default() for CFG visitor tests. |
| test/functionality/control-flow/cfg-visit.test.ts | Use FlowrConfig.default() in CFG visit tests. |
| test/functionality/benchmark/slicer.test.ts | Use FlowrConfig.default() for benchmark slicer tests. |
| test/functionality/abstract-interpretation/data-frame/data-frame.ts | Migrate absint test config to FlowrConfig + setInConfig. |
| test/functionality/_helper/shell.ts | Replace config helpers with FlowrConfig.default() / FlowrConfig.clone(...). |
| test/functionality/_helper/repl.ts | Update REPL helper signatures and defaults to FlowrConfig. |
| test/functionality/_helper/net.ts | Update fake server to pass FlowrConfig.default(). |
| test/functionality/_helper/linter.ts | Use builder .configure(...) instead of manual config amendment. |
| test/functionality/_helper/dataflow/environment-builder.ts | Use FlowrConfig.default() in environment builder helper. |
| test/functionality/_helper/controlflow/assert-control-flow-graph.ts | Use FlowrConfig.default() instead of clone+default options. |
| src/util/objects.ts | Add ObjectPath / ObjectPathValue type utilities. |
| src/statistics/statistics.ts | Update statistics extraction API to accept FlowrConfig. |
| src/r-bridge/lang-4.x/ast/parser/json/parser.ts | Use FlowrConfig.default() and FlowrConfig.getForEngine(...). |
| src/queries/query.ts | Update query completer/parser config parameter type to FlowrConfig. |
| src/queries/catalog/static-slice-query/static-slice-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/resolve-value-query/resolve-value-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/origin-query/origin-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/location-map-query/location-map-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/linter-query/linter-query-format.ts | Update parser/completer signature to FlowrConfig. |
| src/queries/catalog/inspect-recursion-query/inspect-recursion-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/inspect-exceptions-query/inspect-exception-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/files-query/files-query-format.ts | Update parser/completer signature to FlowrConfig. |
| src/queries/catalog/does-call-query/does-call-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/df-shape-query/df-shape-query-format.ts | Update parser signature to FlowrConfig. |
| src/queries/catalog/dependencies-query/dependencies-query-executor.ts | Update executor to accept FlowrConfig. |
| src/queries/catalog/config-query/config-query-format.ts | Update config query types to FlowrConfig. |
| src/project/flowr-analyzer.ts | Rename analyzer config type to FlowrConfig. |
| src/project/flowr-analyzer-builder.ts | Add configure(...) API and migrate builder config handling to FlowrConfig. |
| src/project/context/flowr-analyzer-files-context.ts | Update docs to reference FlowrConfig. |
| src/project/context/flowr-analyzer-context.ts | Migrate context config type/defaults to FlowrConfig.default(). |
| src/linter/rules/dataframe-access-validation.ts | Use FlowrConfig.amend(...) for temporary config adjustments. |
| src/engines.ts | Switch to FlowrConfig.getForEngine(...). |
| src/documentation/wiki-interface.ts | Use FlowrConfig.Schema and update docs around config helper usage. |
| src/documentation/wiki-core.ts | Update example to use builder .configure(...). |
| src/documentation/wiki-analyzer.ts | Document FlowrConfig + builder .configure(...) and update engine link generation. |
| src/dataflow/internal/process/functions/call/built-in/built-in-eval.ts | Update config type to FlowrConfig. |
| src/core/steps/pipeline-step.ts | Update step processing config type to FlowrConfig. |
| src/config.ts | Introduce FlowrConfig helper object and replace legacy config exports/functions. |
| src/cli/statistics-helper-app.ts | Load config via FlowrConfig.fromFile(). |
| src/cli/statistics-app.ts | Load config via FlowrConfig.fromFile(). |
| src/cli/slicer-app.ts | Load config via FlowrConfig.fromFile(); update engine config access. |
| src/cli/script-core/statistics-helper-core.ts | Use FlowrConfig.getForEngine(...) and new config type. |
| src/cli/script-core/statistics-core.ts | Update script signature to accept FlowrConfig. |
| src/cli/repl/server/server.ts | Update server to store FlowrConfig. |
| src/cli/repl/server/connection.ts | Update connection to store FlowrConfig. |
| src/cli/repl/core.ts | Update REPL helper signatures to accept FlowrConfig. |
| src/cli/flowr.ts | Use FlowrConfig.parse/fromFile/amend instead of legacy config helpers. |
| src/cli/export-quads-app.ts | Use FlowrConfig.fromFile() + getForEngine(...). |
| src/cli/benchmark-helper-app.ts | Use FlowrConfig.fromFile() and minor cleanup (Number.parseInt). |
| src/benchmark/slicer.ts | Update slicer init signature and engine config retrieval to FlowrConfig. |
| package.json | Add object-path and @types/object-path. |
| package-lock.json | Lockfile updates for new deps. |
| README.md | Regenerated README snippets/timings and mermaid clipboard output lines. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 68 out of 70 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
This pull request is included in v2.9.13 (see Release v2.9.13 (FlowrConfig helper, General Bug-Fixes)). |
Also dropped the
Optionssuffix from the config type name