@eagleoutice/flowr 2.6.1 → 2.6.3
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 -39
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
- package/abstract-interpretation/data-frame/absint-visitor.js +17 -12
- 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 +9 -10
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +21 -18
- 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 +179 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +4 -7
- package/abstract-interpretation/data-frame/shape-inference.js +10 -12
- 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 +2 -8
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +4 -7
- package/benchmark/slicer.js +27 -31
- 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 +13 -1
- package/benchmark/summarizer/second-phase/graph.d.ts +5 -0
- package/benchmark/summarizer/second-phase/graph.js +5 -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/export-quads-app.js +1 -1
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +13 -2
- package/cli/repl/commands/repl-dataflow.js +2 -1
- package/cli/repl/commands/repl-execute.d.ts +4 -0
- package/cli/repl/commands/repl-execute.js +6 -2
- package/cli/repl/commands/repl-main.d.ts +15 -9
- package/cli/repl/commands/repl-parse.js +18 -6
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +42 -30
- 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 +6 -0
- 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 +5 -32
- 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-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/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 +5 -1
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/slicer-app.js +3 -4
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/cli/wiki.d.ts +4 -0
- package/cli/wiki.js +165 -0
- package/config.d.ts +21 -3
- package/config.js +21 -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-dead-code.js +13 -3
- package/control-flow/cfg-simplification.d.ts +5 -2
- package/control-flow/cfg-simplification.js +3 -0
- 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 +12 -9
- package/control-flow/extract-cfg.js +44 -7
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +4 -33
- 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 +2 -4
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +3 -6
- package/control-flow/useless-loop.js +16 -10
- package/core/pipeline-executor.d.ts +11 -22
- package/core/pipeline-executor.js +13 -25
- 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 +21 -1
- 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 +2 -2
- package/core/steps/all/core/00-parse.js +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 -6
- package/core/steps/all/core/10-normalize.js +1 -13
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +5 -5
- package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -4
- package/core/steps/all/core/20-dataflow.js +2 -2
- package/core/steps/all/static-slicing/00-slice.d.ts +1 -2
- package/core/steps/all/static-slicing/00-slice.js +1 -1
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +94 -95
- package/core/steps/pipeline/default-pipelines.js +8 -12
- 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 -2
- package/dataflow/environments/clone.js +12 -2
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +4 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +11 -2
- 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 +1 -2
- package/dataflow/environments/overwrite.js +3 -16
- 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 +9 -2
- package/dataflow/environments/scoping.js +8 -1
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +11 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve-argument.js +2 -2
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +0 -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 +12 -0
- package/dataflow/eval/values/r-value.js +12 -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 +16 -1
- package/dataflow/eval/values/string/string-constants.js +15 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +3 -4
- package/dataflow/extractor.js +25 -22
- 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 +9 -28
- package/dataflow/graph/graph.js +4 -28
- 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 +8 -0
- package/dataflow/graph/unknown-replacement.js +8 -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 +16 -10
- package/dataflow/info.js +27 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +30 -11
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -1
- 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 +6 -4
- 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 +4 -1
- 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-assignment.js +4 -4
- 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 +9 -6
- 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 +4 -1
- 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 +4 -1
- 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 +7 -1
- 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 +5 -1
- 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-list.js +2 -2
- 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 +6 -3
- 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 +10 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +8 -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 +5 -3
- 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 +34 -12
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +90 -68
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +5 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +5 -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-vector.js +2 -2
- 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 +4 -1
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +9 -3
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +5 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +10 -3
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +10 -4
- 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 +7 -4
- 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 +6 -8
- package/dataflow/origin/dfg-get-symbol-refs.js +7 -9
- package/dataflow/processor.d.ts +6 -12
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -2
- 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 +87 -0
- package/documentation/data/faq/recommended-configs.d.ts +36 -0
- package/documentation/data/faq/recommended-configs.js +40 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +19 -0
- package/documentation/data/faq/wiki-faq-store.js +83 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +5 -64
- package/documentation/doc-capabilities.d.ts +9 -0
- package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
- package/documentation/doc-readme.d.ts +9 -0
- package/documentation/{print-readme.js → doc-readme.js} +136 -35
- 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 +14 -0
- package/documentation/doc-util/doc-benchmarks.js +14 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +14 -8
- 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 +12 -6
- package/documentation/doc-util/doc-dfg.js +19 -10
- 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 +6 -1
- package/documentation/doc-util/doc-escape.js +11 -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 +26 -0
- package/documentation/doc-util/doc-general.js +26 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +14 -3
- package/documentation/doc-util/doc-normalized-ast.js +16 -7
- package/documentation/doc-util/doc-query.d.ts +26 -3
- package/documentation/doc-util/doc-query.js +34 -12
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +6 -0
- package/documentation/doc-util/doc-search.d.ts +3 -18
- package/documentation/doc-util/doc-search.js +6 -62
- package/documentation/doc-util/doc-server-message.d.ts +18 -6
- package/documentation/doc-util/doc-server-message.js +17 -5
- 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 +90 -11
- package/documentation/doc-util/doc-types.js +128 -39
- package/documentation/index.d.ts +9 -9
- package/documentation/index.js +9 -9
- package/documentation/issue-linting-rule.d.ts +9 -0
- package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
- package/documentation/wiki-analyzer.d.ts +9 -0
- package/documentation/wiki-analyzer.js +412 -0
- package/documentation/wiki-cfg.d.ts +9 -0
- package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
- package/documentation/wiki-core.d.ts +14 -0
- package/documentation/{print-core-wiki.js → wiki-core.js} +167 -175
- package/documentation/wiki-dataflow-graph.d.ts +9 -0
- package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +145 -175
- package/documentation/wiki-engine.d.ts +9 -0
- package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
- package/documentation/wiki-faq.d.ts +8 -0
- package/documentation/wiki-faq.js +22 -0
- package/documentation/wiki-interface.d.ts +9 -0
- package/documentation/{print-interface-wiki.js → wiki-interface.js} +60 -57
- package/documentation/wiki-linter.d.ts +9 -0
- package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
- package/documentation/wiki-linting-and-testing.d.ts +9 -0
- package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
- package/documentation/wiki-mk/doc-context.d.ts +186 -0
- package/documentation/wiki-mk/doc-context.js +84 -0
- package/documentation/wiki-mk/doc-maker.d.ts +95 -0
- package/documentation/wiki-mk/doc-maker.js +133 -0
- package/documentation/wiki-normalized-ast.d.ts +9 -0
- package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
- package/documentation/wiki-onboarding.d.ts +8 -0
- package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
- package/documentation/wiki-query.d.ts +9 -0
- package/documentation/{print-query-wiki.js → wiki-query.js} +65 -80
- package/documentation/wiki-search.d.ts +9 -0
- package/documentation/wiki-search.js +61 -0
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +6 -2
- package/linter/linter-format.d.ts +10 -2
- package/linter/linter-format.js +8 -0
- package/linter/linter-rules.d.ts +13 -17
- package/linter/rules/absolute-path.d.ts +4 -6
- package/linter/rules/absolute-path.js +2 -2
- package/linter/rules/dataframe-access-validation.d.ts +4 -5
- package/linter/rules/dataframe-access-validation.js +21 -19
- package/linter/rules/dead-code.d.ts +2 -2
- package/linter/rules/deprecated-functions.d.ts +2 -6
- package/linter/rules/file-path-validity.d.ts +2 -3
- package/linter/rules/file-path-validity.js +4 -4
- package/linter/rules/function-finder-util.d.ts +2 -7
- package/linter/rules/naming-convention.d.ts +15 -4
- package/linter/rules/naming-convention.js +14 -2
- package/linter/rules/network-functions.d.ts +2 -2
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +4 -4
- package/linter/rules/seeded-randomness.js +33 -13
- package/linter/rules/unused-definition.d.ts +3 -4
- package/linter/rules/useless-loop.d.ts +3 -4
- package/linter/rules/useless-loop.js +2 -2
- package/package.json +7 -18
- package/project/cache/flowr-analyzer-cache.d.ts +9 -19
- package/project/cache/flowr-analyzer-cache.js +17 -44
- package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
- package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
- package/project/context/flowr-analyzer-context.d.ts +31 -9
- package/project/context/flowr-analyzer-context.js +48 -4
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +63 -15
- package/project/context/flowr-analyzer-files-context.js +110 -39
- package/project/context/flowr-file.d.ts +32 -11
- package/project/context/flowr-file.js +30 -9
- package/project/flowr-analyzer-builder.d.ts +23 -31
- package/project/flowr-analyzer-builder.js +35 -74
- package/project/flowr-analyzer.d.ts +79 -29
- package/project/flowr-analyzer.js +59 -15
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +8 -2
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
- package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -5
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
- package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
- package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
- package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
- package/project/plugins/flowr-analyzer-plugin.js +2 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
- package/project/plugins/plugin-registry.d.ts +34 -0
- package/project/plugins/plugin-registry.js +62 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -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 +7 -2
- 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 +16 -4
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +34 -18
- 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 +5 -2
- 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 +3 -0
- 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 +5 -2
- 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 +25 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +4 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +4 -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 +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
- 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 +80 -2
- 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 +7 -2
- 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 +6 -1
- 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 +10 -1
- 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 +30 -1
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +93 -55
- package/queries/query.js +55 -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 +2 -2
- package/r-bridge/lang-4.x/ast/model/collect.js +4 -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-project.d.ts +29 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -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 +11 -14
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +30 -17
- 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 +6 -5
- package/r-bridge/lang-4.x/ast/model/type.js +6 -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/format.js +1 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +12 -12
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -11
- 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-root.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
- 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 +18 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +15 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +62 -24
- package/r-bridge/parser.d.ts +43 -12
- package/r-bridge/parser.js +27 -13
- package/r-bridge/retriever.d.ts +25 -16
- package/r-bridge/retriever.js +29 -5
- 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 -2
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +2 -3
- package/reconstruct/reconstruct.d.ts +18 -12
- package/reconstruct/reconstruct.js +19 -10
- 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 +15 -3
- package/search/search-executor/search-enrichers.d.ts +16 -6
- package/search/search-executor/search-enrichers.js +4 -3
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +57 -5
- 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 +13 -12
- package/slicing/criterion/collect-all.js +1 -1
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +8 -6
- 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/assignments.js +1 -1
- 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/control-flow.js +1 -1
- 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/data-access.js +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/defined-functions/defined-functions.js +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/expression-list/statistics-expression-list.js +1 -1
- package/statistics/features/supported/loops/loops.js +1 -1
- 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-functions/used-functions.js +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/features/supported/variables/variables.js +1 -1
- 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 +4 -4
- 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 +56 -2
- package/util/assert.js +56 -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 +12 -12
- package/util/files.js +11 -11
- 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 +7 -3
- package/util/mermaid/ast.js +39 -8
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/cfg.js +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 +10 -1
- package/util/r-value.js +21 -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 +12 -3
- package/util/version.js +12 -3
- 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 -66
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/documentation/print-analyzer-wiki.d.ts +0 -1
- package/documentation/print-analyzer-wiki.js +0 -137
- package/documentation/print-capabilities-markdown.d.ts +0 -1
- package/documentation/print-cfg-wiki.d.ts +0 -1
- package/documentation/print-core-wiki.d.ts +0 -2
- package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
- package/documentation/print-engines-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.js +0 -90
- package/documentation/print-interface-wiki.d.ts +0 -1
- package/documentation/print-linter-issue.d.ts +0 -1
- package/documentation/print-linter-wiki.d.ts +0 -1
- package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
- package/documentation/print-normalized-ast-wiki.d.ts +0 -1
- package/documentation/print-onboarding-wiki.d.ts +0 -1
- package/documentation/print-query-wiki.d.ts +0 -1
- package/documentation/print-readme.d.ts +0 -1
- package/documentation/print-search-wiki.d.ts +0 -1
- package/documentation/print-search-wiki.js +0 -74
- 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
- package/util/formats/adapter-format.d.ts +0 -6
- package/util/formats/adapter-format.js +0 -3
- package/util/formats/adapter.d.ts +0 -18
- package/util/formats/adapter.js +0 -49
- package/util/formats/adapters/r-adapter.d.ts +0 -4
- package/util/formats/adapters/r-adapter.js +0 -7
- package/util/formats/adapters/rmd-adapter.d.ts +0 -26
- package/util/formats/adapters/rmd-adapter.js +0 -91
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DataflowGraphEdge, EdgeType } from './edge';
|
|
2
2
|
import type { DataflowInformation } from '../info';
|
|
3
|
-
import type
|
|
3
|
+
import { type DataflowGraphVertexArgument, type DataflowGraphVertexFunctionCall, type DataflowGraphVertexInfo } from './vertex';
|
|
4
4
|
import { EmptyArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
5
5
|
import type { Identifier, IdentifierDefinition, IdentifierReference } from '../environments/identifier';
|
|
6
|
-
import type
|
|
6
|
+
import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
7
7
|
import type { AstIdMap } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
8
8
|
import type { LinkTo } from '../../queries/catalog/call-context-query/call-context-query-format';
|
|
9
9
|
/**
|
|
@@ -19,7 +19,6 @@ export type DataflowFunctionFlowInformation = Omit<DataflowInformation, 'graph'
|
|
|
19
19
|
* ```r
|
|
20
20
|
* foo(a = 3, b = 2)
|
|
21
21
|
* ```
|
|
22
|
-
*
|
|
23
22
|
* @see #isNamedArgument
|
|
24
23
|
* @see PositionalFunctionArgument
|
|
25
24
|
*/
|
|
@@ -32,7 +31,6 @@ export interface NamedFunctionArgument extends IdentifierReference {
|
|
|
32
31
|
* ```r
|
|
33
32
|
* foo(3, 2)
|
|
34
33
|
* ```
|
|
35
|
-
*
|
|
36
34
|
* @see #isPositionalArgument
|
|
37
35
|
* @see NamedFunctionArgument
|
|
38
36
|
*/
|
|
@@ -73,15 +71,14 @@ export interface DataflowGraphJson {
|
|
|
73
71
|
readonly rootVertices: NodeId[];
|
|
74
72
|
readonly vertexInformation: [NodeId, DataflowGraphVertexInfo][];
|
|
75
73
|
readonly edgeInformation: [NodeId, [NodeId, DataflowGraphEdge][]][];
|
|
76
|
-
readonly sourced?: (string | '<inline>')[];
|
|
77
74
|
}
|
|
78
75
|
/**
|
|
79
76
|
* An unknown side effect describes something that we cannot handle correctly (in all cases).
|
|
80
|
-
* For example, `
|
|
77
|
+
* For example, `load` will be marked as an unknown side effect as we have no idea of how it will affect the program.
|
|
81
78
|
* Linked side effects are used whenever we know that a call may be affected by another one in a way that we cannot
|
|
82
79
|
* grasp from the dataflow perspective (e.g., an indirect dependency based on the currently active graphic device).
|
|
83
80
|
*/
|
|
84
|
-
export type
|
|
81
|
+
export type UnknownSideEffect = NodeId | {
|
|
85
82
|
id: NodeId;
|
|
86
83
|
linkTo: LinkTo<RegExp>;
|
|
87
84
|
};
|
|
@@ -95,7 +92,6 @@ export type UnknownSidEffect = NodeId | {
|
|
|
95
92
|
* However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
|
|
96
93
|
*
|
|
97
94
|
* All methods return the modified graph to allow for chaining.
|
|
98
|
-
*
|
|
99
95
|
* @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
|
|
100
96
|
* @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
|
|
101
97
|
* @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
|
|
@@ -104,8 +100,6 @@ export type UnknownSidEffect = NodeId | {
|
|
|
104
100
|
export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = DataflowGraphVertexInfo, Edge extends DataflowGraphEdge = DataflowGraphEdge> {
|
|
105
101
|
private static DEFAULT_ENVIRONMENT;
|
|
106
102
|
private _idMap;
|
|
107
|
-
/** all file paths included in this dfg */
|
|
108
|
-
private _sourced;
|
|
109
103
|
private readonly _unknownSideEffects;
|
|
110
104
|
constructor(idMap: AstIdMap | undefined);
|
|
111
105
|
/** Contains the vertices of the root level graph (i.e., included those vertices from the complete graph, that are nested within function definitions) */
|
|
@@ -116,21 +110,17 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
116
110
|
private edgeInformation;
|
|
117
111
|
/**
|
|
118
112
|
* Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
|
|
119
|
-
*
|
|
120
113
|
* @param id - The id of the node to get
|
|
121
114
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
122
115
|
* @returns the node info for the given id (if it exists)
|
|
123
|
-
*
|
|
124
116
|
* @see #getVertex
|
|
125
117
|
*/
|
|
126
118
|
get(id: NodeId, includeDefinedFunctions?: boolean): [Vertex, OutgoingEdges] | undefined;
|
|
127
119
|
/**
|
|
128
120
|
* Get the {@link DataflowGraphVertexInfo} attached to a vertex.
|
|
129
|
-
*
|
|
130
121
|
* @param id - The id of the node to get
|
|
131
122
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
132
123
|
* @returns the node info for the given id (if it exists)
|
|
133
|
-
*
|
|
134
124
|
* @see #get
|
|
135
125
|
*/
|
|
136
126
|
getVertex(id: NodeId, includeDefinedFunctions?: boolean): Vertex | undefined;
|
|
@@ -138,38 +128,32 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
138
128
|
ingoingEdges(id: NodeId): IngoingEdges | undefined;
|
|
139
129
|
/**
|
|
140
130
|
* Given a node in the normalized AST this either:
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
131
|
+
* returns the id if the node directly exists in the DFG
|
|
132
|
+
* returns the ids of all vertices in the DFG that are linked to this
|
|
133
|
+
* returns undefined if the node is not part of the DFG and not linked to any node
|
|
144
134
|
*/
|
|
145
135
|
getLinked(nodeId: NodeId): NodeId[] | undefined;
|
|
146
136
|
/** Retrieves the id-map to the normalized AST attached to the dataflow graph */
|
|
147
137
|
get idMap(): AstIdMap | undefined;
|
|
148
|
-
get sourced(): (string | '<inline>')[];
|
|
149
|
-
/** Mark this file as being part of the dfg */
|
|
150
|
-
addFile(source: string | '<inline>'): void;
|
|
151
138
|
/**
|
|
152
139
|
* Retrieves the set of vertices which have side effects that we do not know anything about.
|
|
153
140
|
*/
|
|
154
|
-
get unknownSideEffects(): Set<
|
|
141
|
+
get unknownSideEffects(): Set<UnknownSideEffect>;
|
|
155
142
|
/** Allows setting the id-map explicitly (which should only be used when, e.g., you plan to compare two dataflow graphs on the same AST-basis) */
|
|
156
143
|
setIdMap(idMap: AstIdMap): void;
|
|
157
144
|
/**
|
|
158
145
|
* @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
|
|
159
146
|
* @returns the ids of all toplevel vertices in the graph together with their vertex information
|
|
160
|
-
*
|
|
161
147
|
* @see #edges
|
|
162
148
|
*/
|
|
163
149
|
vertices(includeDefinedFunctions: boolean): MapIterator<[NodeId, Vertex]>;
|
|
164
150
|
/**
|
|
165
151
|
* @returns the ids of all edges in the graph together with their edge information
|
|
166
|
-
*
|
|
167
152
|
* @see #vertices
|
|
168
153
|
*/
|
|
169
154
|
edges(): MapIterator<[NodeId, OutgoingEdges]>;
|
|
170
155
|
/**
|
|
171
156
|
* Returns true if the graph contains a node with the given id.
|
|
172
|
-
*
|
|
173
157
|
* @param id - The id to check for
|
|
174
158
|
* @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
|
|
175
159
|
*/
|
|
@@ -181,12 +165,10 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
181
165
|
rootIds(): ReadonlySet<NodeId>;
|
|
182
166
|
/**
|
|
183
167
|
* Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
|
|
184
|
-
*
|
|
185
168
|
* @param vertex - The vertex to add
|
|
186
169
|
* @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
|
|
187
170
|
* This is probably only of use, when you construct dataflow graphs for tests.
|
|
188
171
|
* @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
|
|
189
|
-
*
|
|
190
172
|
* @see DataflowGraphVertexInfo
|
|
191
173
|
* @see DataflowGraphVertexArgument
|
|
192
174
|
*/
|
|
@@ -199,10 +181,9 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
199
181
|
addEdge(from: NodeId | ReferenceForEdge, to: NodeId | ReferenceForEdge, type: EdgeType | number): this;
|
|
200
182
|
/**
|
|
201
183
|
* Merges the other graph into *this* one (in-place). The return value is only for convenience.
|
|
202
|
-
*
|
|
203
184
|
* @param otherGraph - The graph to merge into this one
|
|
204
185
|
* @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
|
|
205
|
-
*
|
|
186
|
+
* in the context of function definitions
|
|
206
187
|
*/
|
|
207
188
|
mergeWith(otherGraph: DataflowGraph<Vertex, Edge> | undefined, mergeRootVertices?: boolean): this;
|
|
208
189
|
private mergeEdges;
|
package/dataflow/graph/graph.js
CHANGED
|
@@ -45,7 +45,6 @@ function getReferenceOfArgument(arg) {
|
|
|
45
45
|
* However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
|
|
46
46
|
*
|
|
47
47
|
* All methods return the modified graph to allow for chaining.
|
|
48
|
-
*
|
|
49
48
|
* @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
|
|
50
49
|
* @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
|
|
51
50
|
* @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
|
|
@@ -54,8 +53,6 @@ function getReferenceOfArgument(arg) {
|
|
|
54
53
|
class DataflowGraph {
|
|
55
54
|
static DEFAULT_ENVIRONMENT = undefined;
|
|
56
55
|
_idMap;
|
|
57
|
-
/** all file paths included in this dfg */
|
|
58
|
-
_sourced = [];
|
|
59
56
|
/*
|
|
60
57
|
* Set of vertices which have sideEffects that we do not know anything about.
|
|
61
58
|
* As a (temporary) solution until we have FD edges, a side effect may also store known target links
|
|
@@ -74,11 +71,9 @@ class DataflowGraph {
|
|
|
74
71
|
edgeInformation = new Map();
|
|
75
72
|
/**
|
|
76
73
|
* Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
|
|
77
|
-
*
|
|
78
74
|
* @param id - The id of the node to get
|
|
79
75
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
80
76
|
* @returns the node info for the given id (if it exists)
|
|
81
|
-
*
|
|
82
77
|
* @see #getVertex
|
|
83
78
|
*/
|
|
84
79
|
get(id, includeDefinedFunctions = true) {
|
|
@@ -88,11 +83,9 @@ class DataflowGraph {
|
|
|
88
83
|
}
|
|
89
84
|
/**
|
|
90
85
|
* Get the {@link DataflowGraphVertexInfo} attached to a vertex.
|
|
91
|
-
*
|
|
92
86
|
* @param id - The id of the node to get
|
|
93
87
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
94
88
|
* @returns the node info for the given id (if it exists)
|
|
95
|
-
*
|
|
96
89
|
* @see #get
|
|
97
90
|
*/
|
|
98
91
|
getVertex(id, includeDefinedFunctions = true) {
|
|
@@ -112,9 +105,9 @@ class DataflowGraph {
|
|
|
112
105
|
}
|
|
113
106
|
/**
|
|
114
107
|
* Given a node in the normalized AST this either:
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
108
|
+
* returns the id if the node directly exists in the DFG
|
|
109
|
+
* returns the ids of all vertices in the DFG that are linked to this
|
|
110
|
+
* returns undefined if the node is not part of the DFG and not linked to any node
|
|
118
111
|
*/
|
|
119
112
|
getLinked(nodeId) {
|
|
120
113
|
if (this.vertexInformation.has(nodeId)) {
|
|
@@ -132,13 +125,6 @@ class DataflowGraph {
|
|
|
132
125
|
get idMap() {
|
|
133
126
|
return this._idMap;
|
|
134
127
|
}
|
|
135
|
-
get sourced() {
|
|
136
|
-
return this._sourced;
|
|
137
|
-
}
|
|
138
|
-
/** Mark this file as being part of the dfg */
|
|
139
|
-
addFile(source) {
|
|
140
|
-
this._sourced.push(source);
|
|
141
|
-
}
|
|
142
128
|
/**
|
|
143
129
|
* Retrieves the set of vertices which have side effects that we do not know anything about.
|
|
144
130
|
*/
|
|
@@ -152,7 +138,6 @@ class DataflowGraph {
|
|
|
152
138
|
/**
|
|
153
139
|
* @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
|
|
154
140
|
* @returns the ids of all toplevel vertices in the graph together with their vertex information
|
|
155
|
-
*
|
|
156
141
|
* @see #edges
|
|
157
142
|
*/
|
|
158
143
|
*vertices(includeDefinedFunctions) {
|
|
@@ -167,7 +152,6 @@ class DataflowGraph {
|
|
|
167
152
|
}
|
|
168
153
|
/**
|
|
169
154
|
* @returns the ids of all edges in the graph together with their edge information
|
|
170
|
-
*
|
|
171
155
|
* @see #vertices
|
|
172
156
|
*/
|
|
173
157
|
*edges() {
|
|
@@ -175,7 +159,6 @@ class DataflowGraph {
|
|
|
175
159
|
}
|
|
176
160
|
/**
|
|
177
161
|
* Returns true if the graph contains a node with the given id.
|
|
178
|
-
*
|
|
179
162
|
* @param id - The id to check for
|
|
180
163
|
* @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
|
|
181
164
|
*/
|
|
@@ -193,12 +176,10 @@ class DataflowGraph {
|
|
|
193
176
|
}
|
|
194
177
|
/**
|
|
195
178
|
* Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
|
|
196
|
-
*
|
|
197
179
|
* @param vertex - The vertex to add
|
|
198
180
|
* @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
|
|
199
181
|
* This is probably only of use, when you construct dataflow graphs for tests.
|
|
200
182
|
* @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
|
|
201
|
-
*
|
|
202
183
|
* @see DataflowGraphVertexInfo
|
|
203
184
|
* @see DataflowGraphVertexArgument
|
|
204
185
|
*/
|
|
@@ -244,10 +225,9 @@ class DataflowGraph {
|
|
|
244
225
|
}
|
|
245
226
|
/**
|
|
246
227
|
* Merges the other graph into *this* one (in-place). The return value is only for convenience.
|
|
247
|
-
*
|
|
248
228
|
* @param otherGraph - The graph to merge into this one
|
|
249
229
|
* @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
|
|
250
|
-
*
|
|
230
|
+
* in the context of function definitions
|
|
251
231
|
*/
|
|
252
232
|
mergeWith(otherGraph, mergeRootVertices = true) {
|
|
253
233
|
if (otherGraph === undefined) {
|
|
@@ -259,7 +239,6 @@ class DataflowGraph {
|
|
|
259
239
|
this.rootVertices.add(root);
|
|
260
240
|
}
|
|
261
241
|
}
|
|
262
|
-
this._sourced = this._sourced.concat(otherGraph.sourced);
|
|
263
242
|
for (const unknown of otherGraph.unknownSideEffects) {
|
|
264
243
|
this._unknownSideEffects.add(unknown);
|
|
265
244
|
}
|
|
@@ -359,9 +338,6 @@ class DataflowGraph {
|
|
|
359
338
|
}
|
|
360
339
|
}
|
|
361
340
|
graph.edgeInformation = new Map(data.edgeInformation.map(([id, edges]) => [id, new Map(edges)]));
|
|
362
|
-
if (data.sourced) {
|
|
363
|
-
graph._sourced = data.sourced;
|
|
364
|
-
}
|
|
365
341
|
return graph;
|
|
366
342
|
}
|
|
367
343
|
}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.invertDfg = invertDfg;
|
|
4
4
|
const graph_1 = require("./graph");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
5
8
|
function invertDfg(graph) {
|
|
6
9
|
const invertedGraph = new graph_1.DataflowGraph(graph.idMap);
|
|
7
10
|
for (const [, v] of graph.vertices(true)) {
|
|
@@ -7,5 +7,13 @@ export type ReplacementOperatorHandlerArgs = {
|
|
|
7
7
|
id: NodeId;
|
|
8
8
|
};
|
|
9
9
|
export type ReplacementOperatorHandler = (args: ReplacementOperatorHandlerArgs) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Register a new (global) handler for replacement operators.
|
|
12
|
+
* @see {@link handleReplacementOperator}
|
|
13
|
+
*/
|
|
10
14
|
export declare function onReplacementOperator(handler: ReplacementOperatorHandler): void;
|
|
15
|
+
/**
|
|
16
|
+
* Handle a replacement operator by calling all registered handlers.
|
|
17
|
+
* @see {@link onReplacementOperator}
|
|
18
|
+
*/
|
|
11
19
|
export declare function handleReplacementOperator(args: ReplacementOperatorHandlerArgs): void;
|
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.onReplacementOperator = onReplacementOperator;
|
|
4
4
|
exports.handleReplacementOperator = handleReplacementOperator;
|
|
5
5
|
const handlers = [];
|
|
6
|
+
/**
|
|
7
|
+
* Register a new (global) handler for replacement operators.
|
|
8
|
+
* @see {@link handleReplacementOperator}
|
|
9
|
+
*/
|
|
6
10
|
function onReplacementOperator(handler) {
|
|
7
11
|
handlers.push(handler);
|
|
8
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Handle a replacement operator by calling all registered handlers.
|
|
15
|
+
* @see {@link onReplacementOperator}
|
|
16
|
+
*/
|
|
9
17
|
function handleReplacementOperator(args) {
|
|
10
18
|
handlers.forEach(handler => handler(args));
|
|
11
19
|
}
|
|
@@ -3,5 +3,13 @@ import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-i
|
|
|
3
3
|
import type { REnvironmentInformation } from '../environments/environment';
|
|
4
4
|
import type { DataflowGraph } from './graph';
|
|
5
5
|
export type UnknownSideEffectHandler = (graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Globally registers a handler for unknown side effects.
|
|
8
|
+
* @see {@link handleUnknownSideEffect} for triggering the handlers.
|
|
9
|
+
*/
|
|
6
10
|
export declare function onUnknownSideEffect(handler: UnknownSideEffectHandler): void;
|
|
11
|
+
/**
|
|
12
|
+
* Handles an unknown side effect occurring at the given node in the dataflow graph.
|
|
13
|
+
* @see {@link onUnknownSideEffect} for registering handlers.
|
|
14
|
+
*/
|
|
7
15
|
export declare function handleUnknownSideEffect(graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>): void;
|
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.onUnknownSideEffect = onUnknownSideEffect;
|
|
4
4
|
exports.handleUnknownSideEffect = handleUnknownSideEffect;
|
|
5
5
|
const handlers = [];
|
|
6
|
+
/**
|
|
7
|
+
* Globally registers a handler for unknown side effects.
|
|
8
|
+
* @see {@link handleUnknownSideEffect} for triggering the handlers.
|
|
9
|
+
*/
|
|
6
10
|
function onUnknownSideEffect(handler) {
|
|
7
11
|
handlers.push(handler);
|
|
8
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Handles an unknown side effect occurring at the given node in the dataflow graph.
|
|
15
|
+
* @see {@link onUnknownSideEffect} for registering handlers.
|
|
16
|
+
*/
|
|
9
17
|
function handleUnknownSideEffect(graph, env, id, target) {
|
|
10
18
|
graph.markIdForUnknownSideEffects(id, target);
|
|
11
19
|
handlers.forEach(handler => handler(graph, env, id, target));
|
|
@@ -43,6 +43,9 @@ export interface NamedArgumentId {
|
|
|
43
43
|
readonly index: number | undefined;
|
|
44
44
|
readonly lexeme: string;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
|
|
48
|
+
*/
|
|
46
49
|
export declare function isNamedArgumentId(identifier: IndexIdentifier): identifier is NamedArgumentId;
|
|
47
50
|
export type IndexIdentifier = UnnamedArgumentId | NamedArgumentId;
|
|
48
51
|
/**
|
|
@@ -64,7 +67,6 @@ export interface ContainerLeafIndex {
|
|
|
64
67
|
* A single index of a container, which is a container itself.
|
|
65
68
|
*
|
|
66
69
|
* This can be, e.g., a list, vector, or data frame.
|
|
67
|
-
*
|
|
68
70
|
* @see {@link ContainerLeafIndex} - for a single index of a container which is not a container itself
|
|
69
71
|
* @see {@link isParentContainerIndex} - to check if an index is a parent container index
|
|
70
72
|
*/
|
|
@@ -74,6 +76,9 @@ export interface ContainerParentIndex extends ContainerLeafIndex {
|
|
|
74
76
|
*/
|
|
75
77
|
readonly subIndices: ContainerIndices[];
|
|
76
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
|
|
81
|
+
*/
|
|
77
82
|
export declare function isParentContainerIndex(index: ContainerIndex): index is ContainerParentIndex;
|
|
78
83
|
/**
|
|
79
84
|
* A single index of a container.
|
|
@@ -81,13 +86,15 @@ export declare function isParentContainerIndex(index: ContainerIndex): index is
|
|
|
81
86
|
export type ContainerIndex = ContainerLeafIndex | ContainerParentIndex;
|
|
82
87
|
/**
|
|
83
88
|
* Checks whether {@link index} is accessed by {@link accessLexeme}.
|
|
84
|
-
*
|
|
85
89
|
* @param index - The {@link ContainerIndex}, which is accessed
|
|
86
90
|
* @param accessLexeme - The access lexeme
|
|
87
91
|
* @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
|
|
88
92
|
* @returns true, when {@link accessLexeme} accesses the {@link index}, false otherwise
|
|
89
93
|
*/
|
|
90
94
|
export declare function isAccessed(index: ContainerIndex, accessLexeme: string, isIndexBasedAccess: boolean): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Checks whether two {@link ContainerIndex|container indices} are the same.
|
|
97
|
+
*/
|
|
91
98
|
export declare function isSameIndex(a: ContainerIndex, b: ContainerIndex): boolean;
|
|
92
99
|
/**
|
|
93
100
|
* List of indices of a single statement like `list(a=3, b=2)`
|
|
@@ -108,7 +115,6 @@ export interface ContainerIndices {
|
|
|
108
115
|
export type ContainerIndicesCollection = ContainerIndices[] | undefined;
|
|
109
116
|
/**
|
|
110
117
|
* Arguments required to construct a vertex in the {@link DataflowGraph|dataflow graph}.
|
|
111
|
-
*
|
|
112
118
|
* @see DataflowGraphVertexUse
|
|
113
119
|
* @see DataflowGraphVertexVariableDefinition
|
|
114
120
|
* @see DataflowGraphVertexFunctionDefinition
|
|
@@ -153,7 +159,6 @@ export interface DataflowGraphVertexAstLink {
|
|
|
153
159
|
*
|
|
154
160
|
* If you have a {@link DataflowGraph|dataflow graph} named `graph`
|
|
155
161
|
* with an {@link AstIdMap} and a value vertex object with name `value` the following Code should work:
|
|
156
|
-
*
|
|
157
162
|
* @example
|
|
158
163
|
* ```ts
|
|
159
164
|
* const node = graph.idMap.get(value.id)
|
|
@@ -164,7 +169,6 @@ export interface DataflowGraphVertexAstLink {
|
|
|
164
169
|
*
|
|
165
170
|
* This works similarly for {@link IdentifierReference|identifier references}
|
|
166
171
|
* for which you can use the {@link IdentifierReference#nodeId|`nodeId`}.
|
|
167
|
-
*
|
|
168
172
|
* @see {@link isValueVertex} - to check if a vertex is a value vertex
|
|
169
173
|
*/
|
|
170
174
|
export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
|
|
@@ -173,7 +177,6 @@ export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
|
|
|
173
177
|
}
|
|
174
178
|
/**
|
|
175
179
|
* Arguments required to construct a vertex which represents the usage of a variable in the {@link DataflowGraph|dataflow graph}.
|
|
176
|
-
*
|
|
177
180
|
* @see {@link isUseVertex} - to check if a vertex is a use vertex
|
|
178
181
|
*/
|
|
179
182
|
export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
|
|
@@ -185,7 +188,6 @@ export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
|
|
|
185
188
|
* Arguments required to construct a vertex which represents the call to a function in the {@link DataflowGraph|dataflow graph}.
|
|
186
189
|
* This describes all kinds of function calls, including calls to built-ins and control-flow structures such as `if` or `for` (they are
|
|
187
190
|
* treated as function calls in R).
|
|
188
|
-
*
|
|
189
191
|
* @see {@link isFunctionCallVertex} - to check if a vertex is a function call vertex
|
|
190
192
|
*/
|
|
191
193
|
export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase {
|
|
@@ -210,7 +212,6 @@ export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase
|
|
|
210
212
|
export type FunctionOriginInformation = BuiltInMappingName | string;
|
|
211
213
|
/**
|
|
212
214
|
* Arguments required to construct a vertex which represents the definition of a variable in the {@link DataflowGraph|dataflow graph}.
|
|
213
|
-
*
|
|
214
215
|
* @see {@link isVariableDefinitionVertex} - to check if a vertex is a variable definition vertex
|
|
215
216
|
*/
|
|
216
217
|
export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVertexBase {
|
|
@@ -220,7 +221,6 @@ export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVert
|
|
|
220
221
|
}
|
|
221
222
|
/**
|
|
222
223
|
* Arguments required to construct a vertex which represents the definition of a function in the {@link DataflowGraph|dataflow graph}.
|
|
223
|
-
*
|
|
224
224
|
* @see {@link isFunctionDefinitionVertex} - to check if a vertex is a function definition vertex
|
|
225
225
|
*/
|
|
226
226
|
export interface DataflowGraphVertexFunctionDefinition extends DataflowGraphVertexBase {
|
package/dataflow/graph/vertex.js
CHANGED
|
@@ -20,15 +20,20 @@ var VertexType;
|
|
|
20
20
|
})(VertexType || (exports.VertexType = VertexType = {}));
|
|
21
21
|
exports.ValidVertexTypes = new Set(Object.values(VertexType));
|
|
22
22
|
exports.ValidVertexTypeReverse = Object.fromEntries(Object.entries(VertexType).map(([k, v]) => [v, k]));
|
|
23
|
+
/**
|
|
24
|
+
* Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
|
|
25
|
+
*/
|
|
23
26
|
function isNamedArgumentId(identifier) {
|
|
24
27
|
return 'lexeme' in identifier;
|
|
25
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
|
|
31
|
+
*/
|
|
26
32
|
function isParentContainerIndex(index) {
|
|
27
33
|
return 'subIndices' in index;
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
36
|
* Checks whether {@link index} is accessed by {@link accessLexeme}.
|
|
31
|
-
*
|
|
32
37
|
* @param index - The {@link ContainerIndex}, which is accessed
|
|
33
38
|
* @param accessLexeme - The access lexeme
|
|
34
39
|
* @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
|
|
@@ -43,6 +48,9 @@ function isAccessed(index, accessLexeme, isIndexBasedAccess) {
|
|
|
43
48
|
}
|
|
44
49
|
return false;
|
|
45
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Checks whether two {@link ContainerIndex|container indices} are the same.
|
|
53
|
+
*/
|
|
46
54
|
function isSameIndex(a, b) {
|
|
47
55
|
if (isNamedArgumentId(a.identifier) && isNamedArgumentId(b.identifier)) {
|
|
48
56
|
return a.identifier.lexeme === b.identifier.lexeme;
|
package/dataflow/info.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ import type { GenericDifferenceInformation, WriteableDifferenceReport } from '..
|
|
|
8
8
|
* A control dependency links a vertex to the control flow element which
|
|
9
9
|
* may have an influence on its execution.
|
|
10
10
|
* Within `if(p) a else b`, `a` and `b` have a control dependency on the `if` (which in turn decides based on `p`).
|
|
11
|
-
*
|
|
12
11
|
* @see {@link happensInEveryBranch} - to check whether a list of control dependencies is exhaustive
|
|
13
12
|
*/
|
|
14
13
|
export interface ControlDependency {
|
|
@@ -16,10 +15,11 @@ export interface ControlDependency {
|
|
|
16
15
|
readonly id: NodeId;
|
|
17
16
|
/** when does this control dependency trigger (if the condition is true or false)? */
|
|
18
17
|
readonly when?: boolean;
|
|
18
|
+
/** whether this control dependency was created due to iteration (e.g., a loop) */
|
|
19
|
+
readonly byIteration?: boolean;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Classifies the type of exit point encountered.
|
|
22
|
-
*
|
|
23
23
|
* @see {@link ExitPoint}
|
|
24
24
|
*/
|
|
25
25
|
export declare const enum ExitPointType {
|
|
@@ -35,7 +35,6 @@ export declare const enum ExitPointType {
|
|
|
35
35
|
/**
|
|
36
36
|
* An exit point describes the position which ends the current control flow structure.
|
|
37
37
|
* This may be as innocent as the last expression or explicit with a `return`/`break`/`next`.
|
|
38
|
-
*
|
|
39
38
|
* @see {@link ExitPointType} - for the different types of exit points
|
|
40
39
|
* @see {@link addNonDefaultExitPoints} - to easily modify lists of exit points
|
|
41
40
|
* @see {@link alwaysExits} - to check whether a list of control dependencies always triggers an exit
|
|
@@ -49,7 +48,6 @@ export interface ExitPoint {
|
|
|
49
48
|
/**
|
|
50
49
|
* Control dependencies which influence if the exit point triggers
|
|
51
50
|
* (e.g., if the `return` is contained within an `if` statement).
|
|
52
|
-
*
|
|
53
51
|
* @see {@link happensInEveryBranch} - to check whether control dependencies are exhaustive
|
|
54
52
|
*/
|
|
55
53
|
readonly controlDependencies: ControlDependency[] | undefined;
|
|
@@ -73,7 +71,6 @@ export interface DataflowCfgInformation {
|
|
|
73
71
|
* to produce a new state of the dataflow information.
|
|
74
72
|
*
|
|
75
73
|
* You may initialize a new dataflow information with {@link initializeCleanDataflowInformation}.
|
|
76
|
-
*
|
|
77
74
|
* @see {@link DataflowCfgInformation} - the control flow aspects
|
|
78
75
|
*/
|
|
79
76
|
export interface DataflowInformation extends DataflowCfgInformation {
|
|
@@ -82,19 +79,16 @@ export interface DataflowInformation extends DataflowCfgInformation {
|
|
|
82
79
|
*
|
|
83
80
|
* For example, when we analyze the `x` vertex in `x <- 3`, we will first create an unknown reference for `x`
|
|
84
81
|
* as we have not yet seen the assignment!
|
|
85
|
-
*
|
|
86
82
|
* @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
|
|
87
83
|
*/
|
|
88
84
|
unknownReferences: readonly IdentifierReference[];
|
|
89
85
|
/**
|
|
90
86
|
* References which are read within the current subtree.
|
|
91
|
-
*
|
|
92
87
|
* @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
|
|
93
|
-
|
|
88
|
+
*/
|
|
94
89
|
in: readonly IdentifierReference[];
|
|
95
90
|
/**
|
|
96
91
|
* References which are written to within the current subtree
|
|
97
|
-
*
|
|
98
92
|
* @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
|
|
99
93
|
*/
|
|
100
94
|
out: readonly IdentifierReference[];
|
|
@@ -106,15 +100,21 @@ export interface DataflowInformation extends DataflowCfgInformation {
|
|
|
106
100
|
/**
|
|
107
101
|
* Initializes an empty {@link DataflowInformation} object with the given entry point and data.
|
|
108
102
|
* This is to be used as a "starting point" when processing leaf nodes during the dataflow extraction.
|
|
109
|
-
*
|
|
110
103
|
* @see {@link DataflowInformation}
|
|
111
104
|
*/
|
|
112
105
|
export declare function initializeCleanDataflowInformation<T>(entryPoint: NodeId, data: Pick<DataflowProcessorInformation<T>, 'environment' | 'builtInEnvironment' | 'completeAst'>): DataflowInformation;
|
|
113
106
|
/**
|
|
114
107
|
* Checks whether the given control dependencies are exhaustive (i.e. if for every control dependency on a boolean,
|
|
115
108
|
* the list contains a dependency on the `true` and on the `false` case).
|
|
109
|
+
* @see {@link happensInEveryBranchSet} - for the set-based version
|
|
116
110
|
*/
|
|
117
111
|
export declare function happensInEveryBranch(controlDependencies: readonly ControlDependency[] | undefined): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Checks whether the given control dependencies are exhaustive (i.e. if for every control dependency on a boolean,
|
|
114
|
+
* the list contains a dependency on the `true` and on the `false` case).
|
|
115
|
+
* @see {@link happensInEveryBranch} - for the array-based version
|
|
116
|
+
*/
|
|
117
|
+
export declare function happensInEveryBranchSet(controlDependencies: ReadonlySet<ControlDependency> | undefined): boolean;
|
|
118
118
|
/**
|
|
119
119
|
* Checks whether the given dataflow information always exits (i.e., if there is a non-default exit point in every branch).
|
|
120
120
|
* @see {@link ExitPoint} - for the different types of exit points
|
|
@@ -124,5 +124,11 @@ export declare function alwaysExits(data: DataflowInformation): boolean;
|
|
|
124
124
|
* Filters out exit points which end their cascade within a loop.
|
|
125
125
|
*/
|
|
126
126
|
export declare function filterOutLoopExitPoints(exitPoints: readonly ExitPoint[]): readonly ExitPoint[];
|
|
127
|
+
/**
|
|
128
|
+
* Calculates the difference between two control dependencies.
|
|
129
|
+
*/
|
|
127
130
|
export declare function diffControlDependency<Report extends WriteableDifferenceReport>(a: ControlDependency | undefined, b: ControlDependency | undefined, info: GenericDifferenceInformation<Report>): void;
|
|
131
|
+
/**
|
|
132
|
+
* Calculates the difference between two lists of control dependencies.
|
|
133
|
+
*/
|
|
128
134
|
export declare function diffControlDependencies<Report extends WriteableDifferenceReport>(a: ControlDependency[] | undefined, b: ControlDependency[] | undefined, info: GenericDifferenceInformation<Report>): void;
|