@eagleoutice/flowr 2.6.0 → 2.6.2
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 +142 -45
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
- package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +171 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
- package/abstract-interpretation/data-frame/shape-inference.js +7 -9
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +3 -7
- package/benchmark/slicer.js +14 -19
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +12 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
- package/benchmark/summarizer/second-phase/graph.js +3 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/flowr.js +8 -4
- package/cli/repl/commands/repl-cfg.js +4 -4
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +15 -4
- package/cli/repl/commands/repl-dataflow.js +4 -4
- package/cli/repl/commands/repl-execute.d.ts +5 -1
- package/cli/repl/commands/repl-execute.js +12 -8
- package/cli/repl/commands/repl-main.d.ts +17 -14
- package/cli/repl/commands/repl-normalize.js +2 -2
- package/cli/repl/commands/repl-parse.js +4 -3
- package/cli/repl/commands/repl-query.js +18 -7
- package/cli/repl/commands/repl-quit.js +1 -1
- package/cli/repl/commands/repl-version.d.ts +1 -16
- package/cli/repl/commands/repl-version.js +2 -19
- package/cli/repl/core.d.ts +32 -14
- package/cli/repl/core.js +38 -35
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +8 -2
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +9 -33
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-hello.d.ts +1 -1
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/server.js +2 -2
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +3 -0
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/config.d.ts +17 -3
- package/config.js +15 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +3 -6
- package/control-flow/extract-cfg.js +0 -3
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +0 -2
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +0 -3
- package/control-flow/useless-loop.js +2 -5
- package/core/pipeline-executor.d.ts +8 -16
- package/core/pipeline-executor.js +9 -18
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +20 -0
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -0
- package/core/steps/all/core/10-normalize.js +3 -0
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +29 -13
- package/core/steps/pipeline/default-pipelines.js +0 -4
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +12 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +9 -0
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +4 -1
- package/dataflow/environments/overwrite.js +3 -0
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +4 -1
- package/dataflow/environments/scoping.js +3 -0
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +13 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +3 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +16 -1
- package/dataflow/eval/values/r-value.js +14 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +10 -1
- package/dataflow/eval/values/string/string-constants.js +9 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +5 -2
- package/dataflow/extractor.js +7 -5
- package/dataflow/fn/higher-order-function.d.ts +9 -0
- package/dataflow/fn/higher-order-function.js +75 -0
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +6 -19
- package/dataflow/graph/graph.js +4 -15
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +6 -0
- package/dataflow/graph/unknown-replacement.js +6 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +9 -10
- package/dataflow/info.js +6 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +23 -7
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +6 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +3 -0
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
- package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
- package/dataflow/processor.d.ts +0 -1
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +78 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
- package/documentation/data/faq/wiki-faq-store.js +75 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +4 -63
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
- package/documentation/doc-util/doc-benchmarks.js +12 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +9 -0
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +7 -1
- package/documentation/doc-util/doc-dfg.js +9 -0
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +0 -1
- package/documentation/doc-util/doc-escape.js +0 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +6 -0
- package/documentation/doc-util/doc-general.js +6 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
- package/documentation/doc-util/doc-normalized-ast.js +6 -0
- package/documentation/doc-util/doc-query.d.ts +15 -0
- package/documentation/doc-util/doc-query.js +17 -2
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +11 -2
- package/documentation/doc-util/doc-search.d.ts +15 -0
- package/documentation/doc-util/doc-search.js +17 -2
- package/documentation/doc-util/doc-server-message.d.ts +13 -1
- package/documentation/doc-util/doc-server-message.js +13 -1
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +42 -0
- package/documentation/doc-util/doc-types.js +42 -0
- package/documentation/print-analyzer-wiki.js +4 -0
- package/documentation/print-core-wiki.d.ts +3 -0
- package/documentation/print-core-wiki.js +5 -2
- package/documentation/print-dataflow-graph-wiki.js +7 -7
- package/documentation/print-faq-wiki.js +3 -75
- package/documentation/print-interface-wiki.js +1 -1
- package/documentation/print-onboarding-wiki.js +1 -1
- package/documentation/print-query-wiki.js +24 -34
- package/documentation/print-readme.js +106 -1
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +3 -0
- package/linter/linter-format.d.ts +8 -0
- package/linter/linter-format.js +8 -0
- package/linter/rules/absolute-path.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -1
- package/linter/rules/file-path-validity.d.ts +1 -2
- package/linter/rules/function-finder-util.d.ts +1 -2
- package/linter/rules/naming-convention.d.ts +13 -2
- package/linter/rules/naming-convention.js +13 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -2
- package/linter/rules/unused-definition.d.ts +2 -3
- package/linter/rules/useless-loop.d.ts +1 -2
- package/package.json +2 -2
- package/project/cache/flowr-analyzer-cache.d.ts +8 -14
- package/project/cache/flowr-analyzer-cache.js +21 -19
- package/project/cfg-kind.d.ts +17 -0
- package/project/cfg-kind.js +22 -0
- package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
- package/project/context/flowr-analyzer-context.d.ts +9 -6
- package/project/context/flowr-analyzer-context.js +11 -0
- package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
- package/project/context/flowr-analyzer-dependencies-context.js +4 -0
- package/project/context/flowr-analyzer-files-context.d.ts +3 -4
- package/project/context/flowr-analyzer-files-context.js +4 -0
- package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
- package/project/context/flowr-analyzer-loading-order-context.js +6 -0
- package/project/context/flowr-file.d.ts +0 -1
- package/project/flowr-analyzer-builder.d.ts +1 -3
- package/project/flowr-analyzer-builder.js +5 -6
- package/project/flowr-analyzer.d.ts +42 -32
- package/project/flowr-analyzer.js +14 -8
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +5 -1
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +6 -3
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +5 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +6 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +67 -0
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +3 -0
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +91 -53
- package/queries/query.js +37 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/model/type.js +4 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
- package/r-bridge/parser.d.ts +30 -2
- package/r-bridge/retriever.d.ts +16 -1
- package/r-bridge/retriever.js +15 -0
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +1 -2
- package/reconstruct/reconstruct.d.ts +1 -3
- package/reconstruct/reconstruct.js +0 -2
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +3 -3
- package/search/search-executor/search-enrichers.d.ts +9 -6
- package/search/search-executor/search-enrichers.js +5 -1
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +49 -2
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +10 -10
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +4 -2
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +1 -2
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +52 -2
- package/util/assert.js +52 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +11 -11
- package/util/files.js +10 -10
- package/util/formats/adapter.d.ts +9 -0
- package/util/formats/adapter.js +9 -0
- package/util/formats/adapters/rmd-adapter.d.ts +10 -1
- package/util/formats/adapters/rmd-adapter.js +10 -1
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +3 -0
- package/util/mermaid/ast.js +3 -0
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +11 -2
- package/util/r-value.js +23 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +26 -0
- package/util/version.js +37 -1
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -67
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
|
@@ -49,6 +49,7 @@ export declare class FlowrAnalyzerLoadingOrderContext extends AbstractFlowrAnaly
|
|
|
49
49
|
private guesses;
|
|
50
50
|
/** just the base collection of requests we know nothing about the order! */
|
|
51
51
|
private unordered;
|
|
52
|
+
reset(): void;
|
|
52
53
|
/**
|
|
53
54
|
* Add one or multiple requests to the context.
|
|
54
55
|
* These are considered unordered (i.e., ordered implicitly by the order of addition) until a plugin provides either a guess or a known order.
|
|
@@ -23,6 +23,12 @@ class FlowrAnalyzerLoadingOrderContext extends abstract_flowr_analyzer_context_1
|
|
|
23
23
|
guesses = [];
|
|
24
24
|
/** just the base collection of requests we know nothing about the order! */
|
|
25
25
|
unordered = [];
|
|
26
|
+
reset() {
|
|
27
|
+
this.knownOrder = undefined;
|
|
28
|
+
this.guesses.length = 0;
|
|
29
|
+
this.unordered.length = 0;
|
|
30
|
+
this.rerunRequired = this.plugins.length > 0;
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* Add one or multiple requests to the context.
|
|
28
34
|
* These are considered unordered (i.e., ordered implicitly by the order of addition) until a plugin provides either a guess or a known order.
|
|
@@ -28,7 +28,6 @@ export declare enum SpecialFileRole {
|
|
|
28
28
|
*
|
|
29
29
|
* See {@link FlowrFile} for a basic single-cache implementation and {@link FlowrTextFile} for a text-file specific implementation.
|
|
30
30
|
* If you want to pass in inline text files, see {@link FlowrInlineTextFile}.
|
|
31
|
-
*
|
|
32
31
|
* @typeParam Content - The type of the content returned by the `content()` method.
|
|
33
32
|
*/
|
|
34
33
|
export interface FlowrFileProvider<Content = unknown> {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EngineConfig, type FlowrConfigOptions } from '../config';
|
|
2
2
|
import type { DeepWritable } from 'ts-essentials';
|
|
3
3
|
import { fileProtocol, requestFromInput } from '../r-bridge/retriever';
|
|
4
4
|
import { FlowrAnalyzer } from './flowr-analyzer';
|
|
@@ -11,7 +11,6 @@ import type { RAnalysisRequest } from './context/flowr-analyzer-files-context';
|
|
|
11
11
|
* with {@link FlowrAnalyzerBuilder#build|`.build()`} or {@link FlowrAnalyzerBuilder#buildSync|`.buildSync()`}.
|
|
12
12
|
*
|
|
13
13
|
* You can add new files and folders to analyze using the constructor or the {@link FlowrAnalyzerBuilder#add|`.add()`} method.
|
|
14
|
-
*
|
|
15
14
|
* @example Let's create an analyzer for a single R script file:
|
|
16
15
|
*
|
|
17
16
|
* ```ts
|
|
@@ -83,7 +82,6 @@ export declare class FlowrAnalyzerBuilder {
|
|
|
83
82
|
setInput(input: Omit<NormalizeRequiredInput, 'request'>): this;
|
|
84
83
|
/**
|
|
85
84
|
* Register one or multiple additional plugins.
|
|
86
|
-
*
|
|
87
85
|
* @see {@link FlowrAnalyzerBuilder#unregisterPlugins} to remove plugins.
|
|
88
86
|
*/
|
|
89
87
|
registerPlugins(...plugin: readonly FlowrAnalyzerPlugin[]): this;
|
|
@@ -14,7 +14,6 @@ const flowr_analyzer_cache_1 = require("./cache/flowr-analyzer-cache");
|
|
|
14
14
|
* with {@link FlowrAnalyzerBuilder#build|`.build()`} or {@link FlowrAnalyzerBuilder#buildSync|`.buildSync()`}.
|
|
15
15
|
*
|
|
16
16
|
* You can add new files and folders to analyze using the constructor or the {@link FlowrAnalyzerBuilder#add|`.add()`} method.
|
|
17
|
-
*
|
|
18
17
|
* @example Let's create an analyzer for a single R script file:
|
|
19
18
|
*
|
|
20
19
|
* ```ts
|
|
@@ -133,7 +132,6 @@ class FlowrAnalyzerBuilder {
|
|
|
133
132
|
}
|
|
134
133
|
/**
|
|
135
134
|
* Register one or multiple additional plugins.
|
|
136
|
-
*
|
|
137
135
|
* @see {@link FlowrAnalyzerBuilder#unregisterPlugins} to remove plugins.
|
|
138
136
|
*/
|
|
139
137
|
registerPlugins(...plugin) {
|
|
@@ -181,16 +179,17 @@ class FlowrAnalyzerBuilder {
|
|
|
181
179
|
(0, assert_1.guard)(this.parser !== undefined, 'No parser set, please use the setParser or setEngine method to set a parser before building the analyzer');
|
|
182
180
|
(0, assert_1.guard)(this.request !== undefined, 'Currently we require at least one request to build an analyzer, please provide one using the constructor or the addRequest method');
|
|
183
181
|
const context = new flowr_analyzer_context_1.FlowrAnalyzerContext(this.plugins);
|
|
184
|
-
context.addRequests(this.request);
|
|
185
|
-
// we do it here to save time later if the analyzer is to be duplicated
|
|
186
|
-
context.resolvePreAnalysis();
|
|
187
182
|
const cache = flowr_analyzer_cache_1.FlowrAnalyzerCache.create({
|
|
188
183
|
parser: this.parser,
|
|
189
184
|
config: this.flowrConfig,
|
|
190
185
|
request: context.files.computeLoadingOrder(),
|
|
191
186
|
...(this.input ?? {})
|
|
192
187
|
});
|
|
193
|
-
|
|
188
|
+
const analyzer = new flowr_analyzer_1.FlowrAnalyzer(this.flowrConfig, this.parser, context, cache);
|
|
189
|
+
analyzer.addRequests(this.request);
|
|
190
|
+
// we do it here to save time later if the analyzer is to be duplicated
|
|
191
|
+
context.resolvePreAnalysis();
|
|
192
|
+
return analyzer;
|
|
194
193
|
}
|
|
195
194
|
}
|
|
196
195
|
exports.FlowrAnalyzerBuilder = FlowrAnalyzerBuilder;
|
|
@@ -1,30 +1,50 @@
|
|
|
1
1
|
import type { FlowrConfigOptions } from '../config';
|
|
2
|
-
import type { KnownParser,
|
|
3
|
-
import type
|
|
2
|
+
import type { KnownParser, KnownParserInformation, ParseStepOutput } from '../r-bridge/parser';
|
|
3
|
+
import { type Queries, type QueryResults, type SupportedQueryTypes } from '../queries/query';
|
|
4
4
|
import type { ControlFlowInformation } from '../control-flow/control-flow-graph';
|
|
5
5
|
import type { NormalizedAst } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
6
|
import type { DataflowInformation } from '../dataflow/info';
|
|
7
7
|
import type { CfgSimplificationPassName } from '../control-flow/cfg-simplification';
|
|
8
8
|
import type { PipelinePerStepMetaInformation } from '../core/steps/pipeline/pipeline';
|
|
9
|
-
import type { FlowrAnalyzerCache } from './cache/flowr-analyzer-cache';
|
|
9
|
+
import type { AnalyzerCacheType, FlowrAnalyzerCache } from './cache/flowr-analyzer-cache';
|
|
10
10
|
import type { FlowrSearchLike, SearchOutput } from '../search/flowr-search-builder';
|
|
11
|
-
import type
|
|
11
|
+
import { type GetSearchElements } from '../search/flowr-search-executor';
|
|
12
12
|
import type { FlowrAnalyzerContext, ReadOnlyFlowrAnalyzerContext } from './context/flowr-analyzer-context';
|
|
13
|
+
import { CfgKind } from './cfg-kind';
|
|
14
|
+
import type { RAnalysisRequest } from './context/flowr-analyzer-files-context';
|
|
13
15
|
/**
|
|
14
|
-
*
|
|
15
|
-
* This allows us to exchange the underlying implementation of the analyzer without affecting the APIs.
|
|
16
|
+
* Extends the {@link ReadonlyFlowrAnalysisProvider} with methods that allow modifying the analyzer state.
|
|
16
17
|
*/
|
|
17
|
-
export interface FlowrAnalysisProvider {
|
|
18
|
-
/**
|
|
19
|
-
* Get the name of the parser used by the analyzer.
|
|
20
|
-
*/
|
|
21
|
-
parserName(): string;
|
|
18
|
+
export interface FlowrAnalysisProvider extends ReadonlyFlowrAnalysisProvider {
|
|
22
19
|
/**
|
|
23
20
|
* Returns project context information.
|
|
24
21
|
* If you are a user that wants to inspect the context, prefer {@link inspectContext} instead.
|
|
25
22
|
* Please be aware that modifications to the context may break analyzer assumptions.
|
|
26
23
|
*/
|
|
27
24
|
context(): FlowrAnalyzerContext;
|
|
25
|
+
/**
|
|
26
|
+
* Add multiple analysis requests to the analyzer instance
|
|
27
|
+
*/
|
|
28
|
+
addRequests(requests: readonly RAnalysisRequest[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Add a single analysis request to the analyzer instance
|
|
31
|
+
*/
|
|
32
|
+
addRequest(request: RAnalysisRequest): void;
|
|
33
|
+
/**
|
|
34
|
+
* Reset the analyzer state, including the context and the cache.
|
|
35
|
+
*/
|
|
36
|
+
reset(): void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Exposes the central analyses and information provided by the {@link FlowrAnalyzer} to the linter, search, and query APIs.
|
|
40
|
+
* This allows us to exchange the underlying implementation of the analyzer without affecting the APIs.
|
|
41
|
+
*/
|
|
42
|
+
export interface ReadonlyFlowrAnalysisProvider {
|
|
43
|
+
/**
|
|
44
|
+
* Returns a set of additional data and helper functions exposed by the underlying {@link KnownParser},
|
|
45
|
+
* including the parser's {@link BaseParserInformation.name} and corresponding version information.
|
|
46
|
+
*/
|
|
47
|
+
parserInformation(): KnownParserInformation;
|
|
28
48
|
/**
|
|
29
49
|
* Returns a read-only version of the project context information.
|
|
30
50
|
* This is the preferred method for users that want to inspect the context.
|
|
@@ -50,17 +70,10 @@ export interface FlowrAnalysisProvider {
|
|
|
50
70
|
/**
|
|
51
71
|
* Get the control flow graph (CFG) for the request.
|
|
52
72
|
* @param simplifications - Simplification passes to be applied to the CFG.
|
|
53
|
-
* @param
|
|
73
|
+
* @param kind - The kind of CFG that is requested. By default, the CFG without dataflow information is returned.
|
|
54
74
|
* @param force - Do not use the cache, instead force new analyses.
|
|
55
75
|
*/
|
|
56
|
-
controlflow(simplifications?: readonly CfgSimplificationPassName[],
|
|
57
|
-
/**
|
|
58
|
-
* Get a quick and dirty control flow graph (CFG) for the request.
|
|
59
|
-
* This does not use the dataflow information and does not apply any simplifications.
|
|
60
|
-
*
|
|
61
|
-
* @param force - Do not use the cache, instead force new analyses.
|
|
62
|
-
*/
|
|
63
|
-
controlflowQuick(force?: boolean): Promise<ControlFlowInformation>;
|
|
76
|
+
controlflow(simplifications?: readonly CfgSimplificationPassName[], kind?: CfgKind, force?: boolean): Promise<ControlFlowInformation>;
|
|
64
77
|
/**
|
|
65
78
|
* Access the query API for the request.
|
|
66
79
|
* @param query - The list of queries.
|
|
@@ -74,10 +87,6 @@ export interface FlowrAnalysisProvider {
|
|
|
74
87
|
* This executes all steps of the core analysis (parse, normalize, dataflow).
|
|
75
88
|
*/
|
|
76
89
|
runFull(force?: boolean): Promise<void>;
|
|
77
|
-
/**
|
|
78
|
-
* Reset all caches used by the analyzer and effectively force all analyses to be redone.
|
|
79
|
-
*/
|
|
80
|
-
reset(): void;
|
|
81
90
|
/** This is the config used for the analyzer */
|
|
82
91
|
flowrConfig: FlowrConfigOptions;
|
|
83
92
|
}
|
|
@@ -89,17 +98,17 @@ export interface FlowrAnalysisProvider {
|
|
|
89
98
|
*
|
|
90
99
|
* To inspect the context of the analyzer, use {@link FlowrAnalyzer#inspectContext} (if you are a plugin and need to modify it, use {@link FlowrAnalyzer#context} instead).
|
|
91
100
|
*/
|
|
92
|
-
export declare class FlowrAnalyzer<Parser extends KnownParser = KnownParser> implements
|
|
101
|
+
export declare class FlowrAnalyzer<Parser extends KnownParser = KnownParser> implements ReadonlyFlowrAnalysisProvider {
|
|
93
102
|
readonly flowrConfig: FlowrConfigOptions;
|
|
94
103
|
/** The parser and engine backend */
|
|
95
104
|
private readonly parser;
|
|
96
105
|
/** The cache used for storing analysis results */
|
|
97
106
|
private readonly cache;
|
|
98
107
|
private readonly ctx;
|
|
108
|
+
private parserInfo;
|
|
99
109
|
/**
|
|
100
110
|
* Create a new analyzer instance.
|
|
101
111
|
* **Prefer the use of the {@link FlowrAnalyzerBuilder} instead of calling this constructor directly.**
|
|
102
|
-
*
|
|
103
112
|
* @param config - The FlowR config to use for the analyses
|
|
104
113
|
* @param parser - The parser to use for parsing the given request.
|
|
105
114
|
* @param ctx - The context to use for the analyses.
|
|
@@ -107,15 +116,16 @@ export declare class FlowrAnalyzer<Parser extends KnownParser = KnownParser> imp
|
|
|
107
116
|
*/
|
|
108
117
|
constructor(config: FlowrConfigOptions, parser: Parser, ctx: FlowrAnalyzerContext, cache: FlowrAnalyzerCache<Parser>);
|
|
109
118
|
context(): FlowrAnalyzerContext;
|
|
119
|
+
parserInformation(): KnownParserInformation;
|
|
110
120
|
inspectContext(): ReadOnlyFlowrAnalyzerContext;
|
|
111
121
|
reset(): void;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
122
|
+
addRequests(requests: readonly RAnalysisRequest[]): void;
|
|
123
|
+
addRequest(request: RAnalysisRequest): void;
|
|
124
|
+
parse(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['parse']>>;
|
|
125
|
+
normalize(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['normalize']>>;
|
|
126
|
+
dataflow(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['dataflow']>>;
|
|
116
127
|
runFull(force?: boolean): Promise<void>;
|
|
117
|
-
controlflow(simplifications?: readonly CfgSimplificationPassName[],
|
|
118
|
-
controlflowQuick(force?: boolean): Promise<ControlFlowInformation>;
|
|
128
|
+
controlflow(simplifications?: readonly CfgSimplificationPassName[], kind?: CfgKind, force?: boolean): Promise<ControlFlowInformation>;
|
|
119
129
|
query<Types extends SupportedQueryTypes = SupportedQueryTypes>(query: Queries<Types>): Promise<QueryResults<Types>>;
|
|
120
130
|
runSearch<Search extends FlowrSearchLike>(search: Search): Promise<GetSearchElements<SearchOutput<Search>>>;
|
|
121
131
|
/**
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FlowrAnalyzer = void 0;
|
|
4
4
|
const query_1 = require("../queries/query");
|
|
5
5
|
const flowr_search_executor_1 = require("../search/flowr-search-executor");
|
|
6
|
+
const cfg_kind_1 = require("./cfg-kind");
|
|
6
7
|
/**
|
|
7
8
|
* Central class for conducting analyses with FlowR.
|
|
8
9
|
* Use the {@link FlowrAnalyzerBuilder} to create a new instance.
|
|
@@ -18,10 +19,10 @@ class FlowrAnalyzer {
|
|
|
18
19
|
/** The cache used for storing analysis results */
|
|
19
20
|
cache;
|
|
20
21
|
ctx;
|
|
22
|
+
parserInfo;
|
|
21
23
|
/**
|
|
22
24
|
* Create a new analyzer instance.
|
|
23
25
|
* **Prefer the use of the {@link FlowrAnalyzerBuilder} instead of calling this constructor directly.**
|
|
24
|
-
*
|
|
25
26
|
* @param config - The FlowR config to use for the analyses
|
|
26
27
|
* @param parser - The parser to use for parsing the given request.
|
|
27
28
|
* @param ctx - The context to use for the analyses.
|
|
@@ -36,14 +37,22 @@ class FlowrAnalyzer {
|
|
|
36
37
|
context() {
|
|
37
38
|
return this.ctx;
|
|
38
39
|
}
|
|
40
|
+
parserInformation() {
|
|
41
|
+
this.parserInfo ??= this.parser.information(this);
|
|
42
|
+
return this.parserInfo;
|
|
43
|
+
}
|
|
39
44
|
inspectContext() {
|
|
40
45
|
return this.ctx.inspect();
|
|
41
46
|
}
|
|
42
47
|
reset() {
|
|
48
|
+
this.ctx.reset();
|
|
43
49
|
this.cache.reset();
|
|
44
50
|
}
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
addRequests(requests) {
|
|
52
|
+
this.ctx.addRequests(requests);
|
|
53
|
+
}
|
|
54
|
+
addRequest(request) {
|
|
55
|
+
this.ctx.addRequest(request);
|
|
47
56
|
}
|
|
48
57
|
async parse(force) {
|
|
49
58
|
return this.cache.parse(force);
|
|
@@ -58,11 +67,8 @@ class FlowrAnalyzer {
|
|
|
58
67
|
await this.dataflow(force);
|
|
59
68
|
return;
|
|
60
69
|
}
|
|
61
|
-
async controlflow(simplifications,
|
|
62
|
-
return this.cache.controlflow(force,
|
|
63
|
-
}
|
|
64
|
-
async controlflowQuick(force) {
|
|
65
|
-
return this.controlflow(undefined, false, force);
|
|
70
|
+
async controlflow(simplifications, kind, force) {
|
|
71
|
+
return this.cache.controlflow(force, kind ?? cfg_kind_1.CfgKind.NoDataflow, simplifications);
|
|
66
72
|
}
|
|
67
73
|
async query(query) {
|
|
68
74
|
return (0, query_1.executeQueries)({ analyzer: this }, query);
|
|
@@ -3,7 +3,7 @@ import { SemVer } from 'semver';
|
|
|
3
3
|
import type { PathLike } from 'fs';
|
|
4
4
|
import type { FlowrAnalyzerContext } from '../../context/flowr-analyzer-context';
|
|
5
5
|
import { FlowrDescriptionFile } from './flowr-description-file';
|
|
6
|
-
import type
|
|
6
|
+
import { type FlowrFileProvider } from '../../context/flowr-file';
|
|
7
7
|
export declare const descriptionFileLog: import("tslog").Logger<import("tslog").ILogObj>;
|
|
8
8
|
/**
|
|
9
9
|
* This plugin provides support for R `DESCRIPTION` files.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { FlowrFile } from '../../context/flowr-file';
|
|
1
|
+
import { type FlowrFileProvider, type SpecialFileRole, FlowrFile } from '../../context/flowr-file';
|
|
3
2
|
export type DCF = Map<string, string[]>;
|
|
4
3
|
/**
|
|
5
4
|
* This decorates a text file and provides access to its content as a DCF (Debian Control File)-like structure.
|
|
@@ -13,7 +12,6 @@ export declare class FlowrDescriptionFile extends FlowrFile<DCF> {
|
|
|
13
12
|
constructor(file: FlowrFileProvider<string>);
|
|
14
13
|
/**
|
|
15
14
|
* Loads and parses the content of the wrapped file as a DCF structure.
|
|
16
|
-
*
|
|
17
15
|
* @see {@link parseDCF} for details on the parsing logic.
|
|
18
16
|
*/
|
|
19
17
|
protected loadContent(): DCF;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FlowrAnalyzerPlugin, PluginType } from '../flowr-analyzer-plugin';
|
|
2
2
|
import type { RParseRequest } from '../../../r-bridge/retriever';
|
|
3
3
|
import type { RProjectAnalysisRequest } from '../../context/flowr-analyzer-files-context';
|
|
4
|
-
import type
|
|
4
|
+
import { type FlowrFile } from '../../context/flowr-file';
|
|
5
5
|
/**
|
|
6
6
|
* This is the base class for all plugins that discover files in a project for analysis.
|
|
7
7
|
* These plugins interplay with the {@link FlowrAnalyzerFilesContext} to gather information about the files in the project.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../project/flowr-analyzer';
|
|
2
2
|
export interface BaseQueryFormat {
|
|
3
3
|
/** used to select the query type :) */
|
|
4
4
|
readonly type: string;
|
|
@@ -11,5 +11,5 @@ export interface BaseQueryResult {
|
|
|
11
11
|
readonly '.meta': BaseQueryMeta;
|
|
12
12
|
}
|
|
13
13
|
export interface BasicQueryData {
|
|
14
|
-
readonly analyzer:
|
|
14
|
+
readonly analyzer: ReadonlyFlowrAnalysisProvider;
|
|
15
15
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { CallContextQuery, CallContextQueryResult, CallNameTypes, LinkTo } from './call-context-query-format';
|
|
2
2
|
import type { BasicQueryData } from '../../base-query-format';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
3
6
|
export declare function promoteCallName(callName: CallNameTypes, exact?: boolean): RegExp | Set<string>;
|
|
4
7
|
export type PromotedLinkTo = Omit<LinkTo, 'callName'> & {
|
|
5
8
|
callName: RegExp | Set<string>;
|
|
@@ -8,6 +8,7 @@ const edge_1 = require("../../../dataflow/graph/edge");
|
|
|
8
8
|
const two_layer_collector_1 = require("../../two-layer-collector");
|
|
9
9
|
const objects_1 = require("../../../util/objects");
|
|
10
10
|
const identify_link_to_last_call_relation_1 = require("./identify-link-to-last-call-relation");
|
|
11
|
+
const cfg_kind_1 = require("../../../project/cfg-kind");
|
|
11
12
|
/* if the node is effected by nse, we have an ingoing nse edge */
|
|
12
13
|
function isQuoted(node, graph) {
|
|
13
14
|
const vertex = graph.ingoingEdges(node);
|
|
@@ -42,6 +43,9 @@ function isSubCallQuery(query) {
|
|
|
42
43
|
function exactCallNameRegex(name) {
|
|
43
44
|
return new RegExp(`^(${name})$`);
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
45
49
|
function promoteCallName(callName, exact = false) {
|
|
46
50
|
return Array.isArray(callName) ? new Set(callName) : exact ? exactCallNameRegex(callName) : new RegExp(callName);
|
|
47
51
|
}
|
|
@@ -184,7 +188,7 @@ async function executeCallContextQueries({ analyzer }, queries) {
|
|
|
184
188
|
const { promotedQueries, requiresCfg } = promoteQueryCallNames(queries);
|
|
185
189
|
let cfg = undefined;
|
|
186
190
|
if (requiresCfg) {
|
|
187
|
-
cfg = await analyzer.controlflow([],
|
|
191
|
+
cfg = await analyzer.controlflow([], cfg_kind_1.CfgKind.WithDataflow);
|
|
188
192
|
}
|
|
189
193
|
const queriesWhichWantAliases = promotedQueries.filter(q => q.includeAliases);
|
|
190
194
|
for (const [nodeId, info] of dataflow.graph.vertices(true)) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format';
|
|
2
2
|
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
3
3
|
import { executeCallContextQueries } from './call-context-query-executor';
|
|
4
|
-
import type
|
|
4
|
+
import { type OutputFormatter } from '../../../util/text/ansi';
|
|
5
5
|
import Joi from 'joi';
|
|
6
6
|
import { CallTargets } from './identify-link-to-last-call-relation';
|
|
7
7
|
import type { DataflowGraph } from '../../../dataflow/graph/graph';
|
|
8
8
|
import type { DataflowGraphVertexInfo } from '../../../dataflow/graph/vertex';
|
|
9
9
|
import type { CascadeAction } from './cascade-action';
|
|
10
10
|
import type { NoInfo } from '../../../r-bridge/lang-4.x/ast/model/model';
|
|
11
|
-
import type {
|
|
11
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../../../project/flowr-analyzer';
|
|
12
12
|
export interface FileFilter<FilterType> {
|
|
13
13
|
/**
|
|
14
14
|
* Regex that a node's file attribute must match to be considered
|
|
@@ -108,7 +108,7 @@ export interface CallContextQueryResult extends BaseQueryResult {
|
|
|
108
108
|
export type CallContextQuery<CallName extends CallNameTypes = CallNameTypes, AttachLinkInfo = NoInfo> = DefaultCallContextQueryFormat<CallName> | SubCallContextQueryFormat<CallName, AttachLinkInfo>;
|
|
109
109
|
export declare const CallContextQueryDefinition: {
|
|
110
110
|
readonly executor: typeof executeCallContextQueries;
|
|
111
|
-
readonly asciiSummarizer: (formatter: OutputFormatter, analyzer:
|
|
111
|
+
readonly asciiSummarizer: (formatter: OutputFormatter, analyzer: ReadonlyFlowrAnalysisProvider, queryResults: BaseQueryResult, result: string[]) => Promise<boolean>;
|
|
112
112
|
readonly schema: Joi.ObjectSchema<any>;
|
|
113
113
|
readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
|
|
114
114
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
2
|
-
import type
|
|
3
|
-
import type
|
|
2
|
+
import { type DataflowGraph } from '../../../dataflow/graph/graph';
|
|
3
|
+
import { type DataflowGraphVertexFunctionCall } from '../../../dataflow/graph/vertex';
|
|
4
4
|
import { RType } from '../../../r-bridge/lang-4.x/ast/model/type';
|
|
5
5
|
import type { RNodeWithParent } from '../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
6
|
import type { LinkTo } from './call-context-query-format';
|
|
@@ -18,11 +18,20 @@ export declare enum CallTargets {
|
|
|
18
18
|
/** call targets a function that is defined locally or globally */
|
|
19
19
|
Any = "any"
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Determines whether the given function call node satisfies the specified call target condition.
|
|
23
|
+
*/
|
|
21
24
|
export declare function satisfiesCallTargets(id: NodeId, graph: DataflowGraph, callTarget: CallTargets): NodeId[] | 'no';
|
|
25
|
+
/**
|
|
26
|
+
* Gets the value node of the specified argument in the given function call, if it exists and matches the allowed types.
|
|
27
|
+
*/
|
|
22
28
|
export declare function getValueOfArgument<Types extends readonly RType[] = readonly RType[]>(graph: DataflowGraph, call: DataflowGraphVertexFunctionCall | undefined, argument: {
|
|
23
29
|
name?: string;
|
|
24
30
|
index: number;
|
|
25
31
|
}, additionalAllowedTypes?: Types): (RNodeWithParent & {
|
|
26
32
|
type: Types[number];
|
|
27
33
|
}) | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Identifies nodes that link to the last call of a specified function from a given starting node in the control flow graph.
|
|
36
|
+
*/
|
|
28
37
|
export declare function identifyLinkToLastCallRelation(from: NodeId, cfg: ControlFlowGraph, graph: DataflowGraph, { callName, ignoreIf, cascadeIf }: LinkTo<RegExp> | PromotedLinkTo): NodeId[];
|
|
@@ -28,6 +28,9 @@ var CallTargets;
|
|
|
28
28
|
/** call targets a function that is defined locally or globally */
|
|
29
29
|
CallTargets["Any"] = "any";
|
|
30
30
|
})(CallTargets || (exports.CallTargets = CallTargets = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether the given function call node satisfies the specified call target condition.
|
|
33
|
+
*/
|
|
31
34
|
function satisfiesCallTargets(id, graph, callTarget) {
|
|
32
35
|
const callVertex = graph.getVertex(id, true);
|
|
33
36
|
if (callVertex === undefined || callVertex.tag !== vertex_1.VertexType.FunctionCall) {
|
|
@@ -82,6 +85,9 @@ function satisfiesCallTargets(id, graph, callTarget) {
|
|
|
82
85
|
(0, assert_1.assertUnreachable)(callTarget);
|
|
83
86
|
}
|
|
84
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Gets the value node of the specified argument in the given function call, if it exists and matches the allowed types.
|
|
90
|
+
*/
|
|
85
91
|
function getValueOfArgument(graph, call, argument, additionalAllowedTypes) {
|
|
86
92
|
if (!call) {
|
|
87
93
|
return undefined;
|
|
@@ -107,6 +113,9 @@ function getValueOfArgument(graph, call, argument, additionalAllowedTypes) {
|
|
|
107
113
|
return !additionalAllowedTypes || additionalAllowedTypes.includes(valueNode.type) ? valueNode : undefined;
|
|
108
114
|
}
|
|
109
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Identifies nodes that link to the last call of a specified function from a given starting node in the control flow graph.
|
|
118
|
+
*/
|
|
110
119
|
function identifyLinkToLastCallRelation(from, cfg, graph, { callName, ignoreIf, cascadeIf }) {
|
|
111
120
|
if (ignoreIf?.(from, graph)) {
|
|
112
121
|
return [];
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { DataflowClusterQuery, DataflowClusterQueryResult } from './cluster-query-format';
|
|
2
2
|
import type { BasicQueryData } from '../../base-query-format';
|
|
3
|
+
/**
|
|
4
|
+
* Executes the given dataflow cluster queries using the provided analyzer.
|
|
5
|
+
*/
|
|
3
6
|
export declare function executeDataflowClusterQuery({ analyzer }: BasicQueryData, queries: readonly DataflowClusterQuery[]): Promise<DataflowClusterQueryResult>;
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.executeDataflowClusterQuery = executeDataflowClusterQuery;
|
|
4
4
|
const log_1 = require("../../../util/log");
|
|
5
5
|
const cluster_1 = require("../../../dataflow/cluster");
|
|
6
|
+
/**
|
|
7
|
+
* Executes the given dataflow cluster queries using the provided analyzer.
|
|
8
|
+
*/
|
|
6
9
|
async function executeDataflowClusterQuery({ analyzer }, queries) {
|
|
7
10
|
if (queries.length !== 1) {
|
|
8
11
|
log_1.log.warn('The dataflow cluster query expects only up to one query, but got', queries.length);
|
|
@@ -15,7 +15,7 @@ export interface DataflowClusterQueryResult extends BaseQueryResult {
|
|
|
15
15
|
}
|
|
16
16
|
export declare const ClusterQueryDefinition: {
|
|
17
17
|
readonly executor: typeof executeDataflowClusterQuery;
|
|
18
|
-
readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, analyzer: import("../../../project/flowr-analyzer").
|
|
18
|
+
readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, analyzer: import("../../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider, queryResults: BaseQueryResult, result: string[]) => Promise<boolean>;
|
|
19
19
|
readonly schema: Joi.ObjectSchema<any>;
|
|
20
20
|
readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
|
|
21
21
|
};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { ConfigQuery, ConfigQueryResult } from './config-query-format';
|
|
2
2
|
import type { BasicQueryData } from '../../base-query-format';
|
|
3
|
+
/**
|
|
4
|
+
* Executes the given configuration queries using the provided analyzer.
|
|
5
|
+
*/
|
|
3
6
|
export declare function executeConfigQuery({ analyzer }: BasicQueryData, queries: readonly ConfigQuery[]): Promise<ConfigQueryResult>;
|
|
@@ -4,6 +4,9 @@ exports.executeConfigQuery = executeConfigQuery;
|
|
|
4
4
|
const log_1 = require("../../../util/log");
|
|
5
5
|
const assert_1 = require("../../../util/assert");
|
|
6
6
|
const objects_1 = require("../../../util/objects");
|
|
7
|
+
/**
|
|
8
|
+
* Executes the given configuration queries using the provided analyzer.
|
|
9
|
+
*/
|
|
7
10
|
function executeConfigQuery({ analyzer }, queries) {
|
|
8
11
|
if (queries.length !== 1) {
|
|
9
12
|
log_1.log.warn('Config query usually expects only up to one query, but got', queries.length);
|
|
@@ -4,6 +4,9 @@ import { type OutputFormatter } from '../../../util/text/ansi';
|
|
|
4
4
|
import Joi from 'joi';
|
|
5
5
|
import type { FlowrConfigOptions } from '../../../config';
|
|
6
6
|
import type { DeepPartial } from 'ts-essentials';
|
|
7
|
+
import type { ParsedQueryLine } from '../../query';
|
|
8
|
+
import type { ReplOutput } from '../../../cli/repl/commands/repl-main';
|
|
9
|
+
import type { CommandCompletions } from '../../../cli/repl/core';
|
|
7
10
|
export interface ConfigQuery extends BaseQueryFormat {
|
|
8
11
|
readonly type: 'config';
|
|
9
12
|
readonly update?: DeepPartial<FlowrConfigOptions>;
|
|
@@ -11,11 +14,11 @@ export interface ConfigQuery extends BaseQueryFormat {
|
|
|
11
14
|
export interface ConfigQueryResult extends BaseQueryResult {
|
|
12
15
|
readonly config: FlowrConfigOptions;
|
|
13
16
|
}
|
|
14
|
-
declare function configReplCompleter(partialLine: readonly string[], config: FlowrConfigOptions):
|
|
15
|
-
declare function configQueryLineParser(line: readonly string[], _config: FlowrConfigOptions):
|
|
17
|
+
declare function configReplCompleter(partialLine: readonly string[], _startingNewArg: boolean, config: FlowrConfigOptions): CommandCompletions;
|
|
18
|
+
declare function configQueryLineParser(output: ReplOutput, line: readonly string[], _config: FlowrConfigOptions): ParsedQueryLine<'config'>;
|
|
16
19
|
export declare const ConfigQueryDefinition: {
|
|
17
20
|
readonly executor: typeof executeConfigQuery;
|
|
18
|
-
readonly asciiSummarizer: (formatter: OutputFormatter, _analyzer: unknown, queryResults: BaseQueryResult, result: string[]) =>
|
|
21
|
+
readonly asciiSummarizer: (formatter: OutputFormatter, _analyzer: unknown, queryResults: BaseQueryResult, result: string[]) => true;
|
|
19
22
|
readonly completer: typeof configReplCompleter;
|
|
20
23
|
readonly fromLine: typeof configQueryLineParser;
|
|
21
24
|
readonly schema: Joi.ObjectSchema<any>;
|
|
@@ -9,17 +9,17 @@ const ansi_1 = require("../../../util/text/ansi");
|
|
|
9
9
|
const time_1 = require("../../../util/text/time");
|
|
10
10
|
const joi_1 = __importDefault(require("joi"));
|
|
11
11
|
const json_1 = require("../../../util/json");
|
|
12
|
-
function configReplCompleter(partialLine, config) {
|
|
12
|
+
function configReplCompleter(partialLine, _startingNewArg, config) {
|
|
13
13
|
if (partialLine.length === 0) {
|
|
14
14
|
// update specific fields
|
|
15
|
-
return ['+'];
|
|
15
|
+
return { completions: ['+'] };
|
|
16
16
|
}
|
|
17
17
|
else if (partialLine.length === 1 && partialLine[0].startsWith('+')) {
|
|
18
18
|
const path = partialLine[0].slice(1).split('.').filter(p => p.length > 0);
|
|
19
19
|
const fullPath = path.slice();
|
|
20
20
|
const lastPath = partialLine[0].endsWith('.') ? '' : path.pop() ?? '';
|
|
21
21
|
if (lastPath.endsWith('=')) {
|
|
22
|
-
return [];
|
|
22
|
+
return { completions: [] };
|
|
23
23
|
}
|
|
24
24
|
const subConfig = path.reduce((obj, key) => (obj && obj[key] !== undefined && typeof obj[key] === 'object') ? obj[key] : obj, config);
|
|
25
25
|
if (subConfig && !(subConfig[lastPath] !== undefined && typeof subConfig[lastPath] !== 'object')) {
|
|
@@ -27,23 +27,23 @@ function configReplCompleter(partialLine, config) {
|
|
|
27
27
|
.filter(k => k.startsWith(lastPath) && k !== lastPath)
|
|
28
28
|
.map(k => `${partialLine[0].slice(0, 1)}${[...path, k].join('.')}`);
|
|
29
29
|
if (have.length > 0) {
|
|
30
|
-
return have;
|
|
30
|
+
return { completions: have };
|
|
31
31
|
}
|
|
32
32
|
else if (lastPath.length > 0) {
|
|
33
|
-
return [`${partialLine[0].slice(0, 1)}${fullPath.join('.')}.`];
|
|
33
|
+
return { completions: [`${partialLine[0].slice(0, 1)}${fullPath.join('.')}.`] };
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
return [`${partialLine[0].slice(0, 1)}${fullPath.join('.')}=`];
|
|
36
|
+
return { completions: [`${partialLine[0].slice(0, 1)}${fullPath.join('.')}=`] };
|
|
37
37
|
}
|
|
38
|
-
return [];
|
|
38
|
+
return { completions: [] };
|
|
39
39
|
}
|
|
40
|
-
function configQueryLineParser(line, _config) {
|
|
40
|
+
function configQueryLineParser(output, line, _config) {
|
|
41
41
|
if (line.length > 0 && line[0].startsWith('+')) {
|
|
42
42
|
const [pathPart, ...valueParts] = line[0].slice(1).split('=');
|
|
43
43
|
// build the update object
|
|
44
44
|
const path = pathPart.split('.').filter(p => p.length > 0);
|
|
45
45
|
if (path.length === 0 || valueParts.length !== 1) {
|
|
46
|
-
|
|
46
|
+
output.stdout(`Invalid config update syntax, must be of the form ${(0, ansi_1.bold)('+path.to.field=value', output.formatter)}`);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
const update = {};
|
|
@@ -67,15 +67,12 @@ function configQueryLineParser(line, _config) {
|
|
|
67
67
|
current = current[key];
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
return [{
|
|
71
|
-
|
|
72
|
-
update
|
|
73
|
-
}];
|
|
70
|
+
return { query: [{ type: 'config', update }]
|
|
71
|
+
};
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
|
-
return [{
|
|
77
|
-
|
|
78
|
-
}];
|
|
74
|
+
return { query: [{ type: 'config' }]
|
|
75
|
+
};
|
|
79
76
|
}
|
|
80
77
|
exports.ConfigQueryDefinition = {
|
|
81
78
|
executor: config_query_executor_1.executeConfigQuery,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { ControlFlowQuery, ControlFlowQueryResult } from './control-flow-query-format';
|
|
2
2
|
import type { BasicQueryData } from '../../base-query-format';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
3
6
|
export declare function executeControlFlowQuery({ analyzer }: BasicQueryData, queries: readonly ControlFlowQuery[]): Promise<ControlFlowQueryResult>;
|