@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
|
@@ -5,22 +5,28 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NormalizedAst } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
7
7
|
import type { NodeId } from '../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
8
|
-
import type
|
|
9
|
-
|
|
8
|
+
import { type AutoSelectPredicate } from './auto-select/auto-select-defaults';
|
|
9
|
+
interface Selection {
|
|
10
|
+
/**
|
|
11
|
+
* The set of node ids to be reconstructed.
|
|
12
|
+
*/
|
|
13
|
+
nodes: ReadonlySet<NodeId>;
|
|
14
|
+
/**
|
|
15
|
+
* @see {@link ReconstructRequiredInput#reconstructFiles}
|
|
16
|
+
*/
|
|
17
|
+
reconstructFiles?: 'all' | number[];
|
|
18
|
+
}
|
|
10
19
|
export declare const reconstructLogger: import("tslog").Logger<import("tslog").ILogObj>;
|
|
11
20
|
export interface ReconstructionResult {
|
|
12
|
-
code
|
|
21
|
+
/** Returns the reconstructed code as string or array of code reconstructions (corresponding to the desired file indices in the {@link Selection}) */
|
|
22
|
+
code: string | string[];
|
|
13
23
|
/** number of lines that contain nodes that triggered the `autoSelectIf` predicate {@link reconstructToCode} */
|
|
14
24
|
linesWithAutoSelected: number;
|
|
15
25
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* @param autoSelectIf - A predicate that can be used to force the reconstruction of a node (for example to reconstruct library call statements, see {@link autoSelectLibrary}, {@link doNotAutoSelect})
|
|
22
|
-
*
|
|
23
|
-
* @returns The number of lines for which `autoSelectIf` triggered, as well as the reconstructed code itself.
|
|
24
|
-
*/
|
|
26
|
+
export declare function reconstructToCode(ast: NormalizedAst, selection: Selection & {
|
|
27
|
+
reconstructFiles?: [number] | undefined;
|
|
28
|
+
}, autoSelectIf?: AutoSelectPredicate): ReconstructionResult & {
|
|
29
|
+
code: string;
|
|
30
|
+
};
|
|
25
31
|
export declare function reconstructToCode(ast: NormalizedAst, selection: Selection, autoSelectIf?: AutoSelectPredicate): ReconstructionResult;
|
|
26
32
|
export {};
|
|
@@ -408,27 +408,25 @@ function getIndentString(indent) {
|
|
|
408
408
|
function prettyPrintCodeToString(code, lf = '\n') {
|
|
409
409
|
return code.map(({ line, indent }) => `${getIndentString(indent)}${line}`).join(lf);
|
|
410
410
|
}
|
|
411
|
-
function removeOuterExpressionListIfApplicable(result
|
|
411
|
+
function removeOuterExpressionListIfApplicable(result) {
|
|
412
412
|
if (result.length > 1 && result[0].line === '{' && result[result.length - 1].line === '}') {
|
|
413
413
|
// remove outer block
|
|
414
|
-
return
|
|
414
|
+
return prettyPrintCodeToString(indentBy(result.slice(1, result.length - 1), -1));
|
|
415
415
|
}
|
|
416
416
|
else {
|
|
417
|
-
return
|
|
417
|
+
return prettyPrintCodeToString(result);
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
420
|
/**
|
|
421
421
|
* Reconstructs parts of a normalized R ast into R code on an expression basis.
|
|
422
|
-
*
|
|
423
422
|
* @param ast - The {@link NormalizedAst|normalized ast} to be used as a basis for reconstruction
|
|
424
423
|
* @param selection - The selection of nodes to be reconstructed (probably the {@link NodeId|NodeIds} identified by the slicer)
|
|
425
|
-
* @param autoSelectIf - A predicate that can be used to force the reconstruction of a node
|
|
426
|
-
*
|
|
424
|
+
* @param autoSelectIf - A predicate that can be used to force the reconstruction of a node
|
|
427
425
|
* @returns The number of lines for which `autoSelectIf` triggered, as well as the reconstructed code itself.
|
|
428
426
|
*/
|
|
429
427
|
function reconstructToCode(ast, selection, autoSelectIf = auto_select_defaults_1.doNotAutoSelect) {
|
|
430
428
|
if (exports.reconstructLogger.settings.minLevel <= 1 /* LogLevel.Trace */) {
|
|
431
|
-
exports.reconstructLogger.trace(`reconstruct ast with ids: ${JSON.stringify([...selection])}`);
|
|
429
|
+
exports.reconstructLogger.trace(`reconstruct ast with ids: ${JSON.stringify([...selection.nodes])} for files: ${JSON.stringify(selection.reconstructFiles)}`);
|
|
432
430
|
}
|
|
433
431
|
// we use a wrapper to count the number of lines for which the autoSelectIf predicate triggered
|
|
434
432
|
const linesWithAutoSelected = new Set();
|
|
@@ -441,9 +439,20 @@ function reconstructToCode(ast, selection, autoSelectIf = auto_select_defaults_1
|
|
|
441
439
|
}
|
|
442
440
|
return result;
|
|
443
441
|
};
|
|
442
|
+
const indices = selection.reconstructFiles === 'all' ? ast.ast.files.map((_, i) => i) : (selection.reconstructFiles ?? [0]);
|
|
443
|
+
(0, assert_1.guard)(indices.every(i => i >= 0 && i < ast.ast.files.length), `reconstructToCode: reconstructFiles contains invalid file indices: ${JSON.stringify(indices)} for ast with ${ast.ast.files.length} files`);
|
|
444
|
+
const results = [];
|
|
444
445
|
// fold of the normalized ast
|
|
445
|
-
const
|
|
446
|
-
|
|
447
|
-
|
|
446
|
+
for (const i of indices) {
|
|
447
|
+
if (exports.reconstructLogger.settings.minLevel <= 1 /* LogLevel.Trace */) {
|
|
448
|
+
exports.reconstructLogger.trace(`reconstructing file index ${i} with root id ${ast.ast.files[i].root.info.id}`);
|
|
449
|
+
}
|
|
450
|
+
results.push(removeOuterExpressionListIfApplicable((0, stateful_fold_1.foldAstStateful)(ast.ast.files[i].root, { selection: selection.nodes, autoSelectIf: autoSelectIfWrapper, fullAst: ast }, reconstructAstFolds)));
|
|
451
|
+
}
|
|
452
|
+
(0, log_1.expensiveTrace)(exports.reconstructLogger, () => `reconstructed ast before string conversion: ${JSON.stringify(results)}`);
|
|
453
|
+
return {
|
|
454
|
+
code: indices.length === 1 ? results[0] : results,
|
|
455
|
+
linesWithAutoSelected: linesWithAutoSelected.size
|
|
456
|
+
};
|
|
448
457
|
}
|
|
449
458
|
//# sourceMappingURL=reconstruct.js.map
|
|
@@ -6,9 +6,9 @@ import type { FlowrSearchTransformerNode, GetOutputOfTransformer, TransformerNam
|
|
|
6
6
|
import type { SlicingCriteria } from '../slicing/criterion/parse';
|
|
7
7
|
import type { ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
8
8
|
import type { Enrichment, EnrichmentElementArguments } from './search-executor/search-enrichers';
|
|
9
|
-
import type
|
|
10
|
-
import { Mapper } from './search-executor/search-mappers';
|
|
9
|
+
import { type MapperArguments, Mapper } from './search-executor/search-mappers';
|
|
11
10
|
import type { Query } from '../queries/query';
|
|
11
|
+
import type TreeSitter from 'web-tree-sitter';
|
|
12
12
|
type FlowrCriteriaReturn<C extends SlicingCriteria> = FlowrSearchElements<ParentInformation, C extends [] ? never : C extends [infer _] ? [
|
|
13
13
|
FlowrSearchElement<ParentInformation>
|
|
14
14
|
] : FlowrSearchElement<ParentInformation>[]>;
|
|
@@ -29,6 +29,11 @@ export declare const FlowrSearchGenerator: {
|
|
|
29
29
|
* Please note that, due to the fact that not every query involves dataflow nodes, the search may not contain any elements at all for certain queries.
|
|
30
30
|
*/
|
|
31
31
|
readonly fromQuery: (...from: readonly Query[]) => FlowrSearchBuilder<"from-query", [], ParentInformation, FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
32
|
+
/**
|
|
33
|
+
* Initializes a new search query based on the results of the given tree-sitter syntax query.
|
|
34
|
+
* Please note that this search generator is incompatible with the {@link RShell} parser and only works when using flowR with the {@link TreeSitterExecutor}.
|
|
35
|
+
*/
|
|
36
|
+
readonly syntax: (source: TreeSitter.Query | string, ...captures: readonly string[]) => FlowrSearchBuilder<"from-query", [], ParentInformation, FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
32
37
|
/**
|
|
33
38
|
* Returns all elements (nodes/dataflow vertices) from the given data.
|
|
34
39
|
*/
|
|
@@ -87,6 +92,11 @@ export declare const Q: {
|
|
|
87
92
|
* Please note that, due to the fact that not every query involves dataflow nodes, the search may not contain any elements at all for certain queries.
|
|
88
93
|
*/
|
|
89
94
|
readonly fromQuery: (...from: readonly Query[]) => FlowrSearchBuilder<"from-query", [], ParentInformation, FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
95
|
+
/**
|
|
96
|
+
* Initializes a new search query based on the results of the given tree-sitter syntax query.
|
|
97
|
+
* Please note that this search generator is incompatible with the {@link RShell} parser and only works when using flowR with the {@link TreeSitterExecutor}.
|
|
98
|
+
*/
|
|
99
|
+
readonly syntax: (source: TreeSitter.Query | string, ...captures: readonly string[]) => FlowrSearchBuilder<"from-query", [], ParentInformation, FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
90
100
|
/**
|
|
91
101
|
* Returns all elements (nodes/dataflow vertices) from the given data.
|
|
92
102
|
*/
|
|
@@ -130,7 +140,6 @@ export type FlowrSearchBuilderType<Generator extends GeneratorNames = GeneratorN
|
|
|
130
140
|
/**
|
|
131
141
|
* The search query is a combination of a generator and a list of transformers
|
|
132
142
|
* and allows this view to pass such queries in a serialized form.
|
|
133
|
-
*
|
|
134
143
|
* @typeParam Transformers - The list of transformers that are applied to the generator's output.
|
|
135
144
|
*/
|
|
136
145
|
export interface FlowrSearch<Info = ParentInformation, _Generator extends GeneratorNames = GeneratorNames, _Transformers extends readonly TransformerNames[] = readonly TransformerNames[], _ElementType = FlowrSearchElements<Info, FlowrSearchElement<Info>[]>> {
|
|
@@ -143,7 +152,6 @@ type FlowrSearchBuilderOut<Generator extends GeneratorNames, Transformers extend
|
|
|
143
152
|
* Please use the {@link Q} object to create an object of this class!
|
|
144
153
|
* In the end, you _can_ freeze the search by calling {@link FlowrSearchBuilder#build},
|
|
145
154
|
* however, the search executors may do that for you.
|
|
146
|
-
*
|
|
147
155
|
* @see {@link FlowrSearchGenerator}
|
|
148
156
|
* @see {@link FlowrSearch}
|
|
149
157
|
* @see {@link FlowrSearchLike}
|
|
@@ -207,7 +215,6 @@ export declare class FlowrSearchBuilder<Generator extends GeneratorNames, Transf
|
|
|
207
215
|
unique(): FlowrSearchBuilderOut<Generator, Transformers, Info, 'unique'>;
|
|
208
216
|
/**
|
|
209
217
|
* Construct the final search (this may happen automatically with most search handlers).
|
|
210
|
-
*
|
|
211
218
|
* @param shouldOptimize - This may optimize the search.
|
|
212
219
|
*/
|
|
213
220
|
build(shouldOptimize?: boolean): FlowrSearch<Info, Generator, Transformers, ElementType>;
|
|
@@ -26,6 +26,13 @@ exports.FlowrSearchGenerator = {
|
|
|
26
26
|
fromQuery(...from) {
|
|
27
27
|
return new FlowrSearchBuilder({ type: 'generator', name: 'from-query', args: { from } });
|
|
28
28
|
},
|
|
29
|
+
/**
|
|
30
|
+
* Initializes a new search query based on the results of the given tree-sitter syntax query.
|
|
31
|
+
* Please note that this search generator is incompatible with the {@link RShell} parser and only works when using flowR with the {@link TreeSitterExecutor}.
|
|
32
|
+
*/
|
|
33
|
+
syntax(source, ...captures) {
|
|
34
|
+
return new FlowrSearchBuilder({ type: 'generator', name: 'syntax', args: { source, captures } });
|
|
35
|
+
},
|
|
29
36
|
/**
|
|
30
37
|
* Returns all elements (nodes/dataflow vertices) from the given data.
|
|
31
38
|
*/
|
|
@@ -95,7 +102,6 @@ exports.Q = exports.FlowrSearchGenerator;
|
|
|
95
102
|
* Please use the {@link Q} object to create an object of this class!
|
|
96
103
|
* In the end, you _can_ freeze the search by calling {@link FlowrSearchBuilder#build},
|
|
97
104
|
* however, the search executors may do that for you.
|
|
98
|
-
*
|
|
99
105
|
* @see {@link FlowrSearchGenerator}
|
|
100
106
|
* @see {@link FlowrSearch}
|
|
101
107
|
* @see {@link FlowrSearchLike}
|
|
@@ -204,7 +210,6 @@ class FlowrSearchBuilder {
|
|
|
204
210
|
}
|
|
205
211
|
/**
|
|
206
212
|
* Construct the final search (this may happen automatically with most search handlers).
|
|
207
|
-
*
|
|
208
213
|
* @param shouldOptimize - This may optimize the search.
|
|
209
214
|
*/
|
|
210
215
|
build(shouldOptimize = true) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
1
|
+
import { type FlowrSearch, type FlowrSearchLike, type SearchOutput } from './flowr-search-builder';
|
|
2
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../project/flowr-analyzer';
|
|
3
3
|
export type GetSearchElements<S> = S extends FlowrSearch<infer _, infer _, infer _, infer Elements> ? Elements : never;
|
|
4
4
|
/**
|
|
5
5
|
* Run a search with the given search query and data.
|
|
6
6
|
*/
|
|
7
|
-
export declare function runSearch<S extends FlowrSearchLike>(search: S, input:
|
|
7
|
+
export declare function runSearch<S extends FlowrSearchLike>(search: S, input: ReadonlyFlowrAnalysisProvider): Promise<GetSearchElements<SearchOutput<S>>>;
|
|
@@ -2,7 +2,7 @@ import { RType } from '../r-bridge/lang-4.x/ast/model/type';
|
|
|
2
2
|
import { VertexType } from '../dataflow/graph/vertex';
|
|
3
3
|
import type { ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
4
4
|
import type { FlowrSearchElement } from './flowr-search';
|
|
5
|
-
import type
|
|
5
|
+
import { type Enrichment } from './search-executor/search-enrichers';
|
|
6
6
|
import type { BuiltInMappingName } from '../dataflow/environments/built-in';
|
|
7
7
|
import type { DataflowInformation } from '../dataflow/info';
|
|
8
8
|
export type FlowrFilterName = keyof typeof FlowrFilters;
|
|
@@ -52,6 +52,9 @@ export interface OriginKindArgs {
|
|
|
52
52
|
matchType?: 'some' | 'every';
|
|
53
53
|
keepNonFunctionCalls?: boolean;
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Helper to create a regular expression that matches function names, ignoring their package.
|
|
57
|
+
*/
|
|
55
58
|
export declare function testFunctionsIgnoringPackage(functions: readonly string[]): RegExp;
|
|
56
59
|
type ValidFilterTypes<F extends FlowrFilter = FlowrFilter> = FlowrFilterName | FlowrFilterWithArgs<F, FlowrFilterArgs<F>> | RType | VertexType;
|
|
57
60
|
/**
|
|
@@ -100,7 +103,14 @@ export declare class FlowrFilterCombinator {
|
|
|
100
103
|
private unpack;
|
|
101
104
|
get(): BooleanNode;
|
|
102
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Converts the given binary tree to a string representation.
|
|
108
|
+
*/
|
|
103
109
|
export declare function binaryTreeToString(tree: BooleanNode): string;
|
|
110
|
+
/**
|
|
111
|
+
* Checks whether the given value is a binary tree combinator.
|
|
112
|
+
* @see {@link FlowrFilterCombinator}
|
|
113
|
+
*/
|
|
104
114
|
export declare function isBinaryTree(tree: unknown): tree is {
|
|
105
115
|
tree: BooleanNode;
|
|
106
116
|
};
|
|
@@ -110,5 +120,8 @@ interface FilterData {
|
|
|
110
120
|
dataflow: DataflowInformation;
|
|
111
121
|
};
|
|
112
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Evaluates the given filter expression against the provided data.
|
|
125
|
+
*/
|
|
113
126
|
export declare function evalFilter<Filter extends FlowrFilter>(filter: FlowrFilterExpression<Filter>, data: FilterData): boolean;
|
|
114
127
|
export {};
|
|
@@ -49,6 +49,9 @@ exports.FlowrFilters = {
|
|
|
49
49
|
return args.matchType === 'every' ? origins.every(match) : origins.some(match);
|
|
50
50
|
})
|
|
51
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Helper to create a regular expression that matches function names, ignoring their package.
|
|
54
|
+
*/
|
|
52
55
|
function testFunctionsIgnoringPackage(functions) {
|
|
53
56
|
return new RegExp(`"(.+:::?)?(${functions.join('|')})"`);
|
|
54
57
|
}
|
|
@@ -120,6 +123,9 @@ class FlowrFilterCombinator {
|
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
exports.FlowrFilterCombinator = FlowrFilterCombinator;
|
|
126
|
+
/**
|
|
127
|
+
* Converts the given binary tree to a string representation.
|
|
128
|
+
*/
|
|
123
129
|
function binaryTreeToString(tree) {
|
|
124
130
|
const res = treeToStringImpl(tree, 0);
|
|
125
131
|
// drop outer parens
|
|
@@ -147,6 +153,10 @@ function treeToStringImpl(tree, depth) {
|
|
|
147
153
|
const right = treeToStringImpl(tree.right, depth + 1);
|
|
148
154
|
return `(${left} ${typeToSymbol[tree.type]} ${right})`;
|
|
149
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Checks whether the given value is a binary tree combinator.
|
|
158
|
+
* @see {@link FlowrFilterCombinator}
|
|
159
|
+
*/
|
|
150
160
|
function isBinaryTree(tree) {
|
|
151
161
|
return typeof tree === 'object' && tree !== null && 'tree' in tree;
|
|
152
162
|
}
|
|
@@ -171,6 +181,9 @@ function evalTree(tree, data) {
|
|
|
171
181
|
/* we ensure that the types fit */
|
|
172
182
|
return evalVisit[tree.type](tree, data);
|
|
173
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Evaluates the given filter expression against the provided data.
|
|
186
|
+
*/
|
|
174
187
|
function evalFilter(filter, data) {
|
|
175
188
|
/* common lift, this can be improved easily :D */
|
|
176
189
|
const tree = FlowrFilterCombinator.is(filter);
|
|
@@ -6,5 +6,11 @@ export interface FlowrSearchMermaidBuilderOptions {
|
|
|
6
6
|
* Converts a {@link FlowrSearchLike} object to a mermaid flowchart.
|
|
7
7
|
*/
|
|
8
8
|
export declare function flowrSearchToMermaid(search: FlowrSearchLike, conf?: FlowrSearchMermaidBuilderOptions): string;
|
|
9
|
+
/**
|
|
10
|
+
* Converts a {@link FlowrSearchLike} object to an ASCII representation.
|
|
11
|
+
*/
|
|
9
12
|
export declare function flowrSearchToAscii(search: FlowrSearchLike): string;
|
|
13
|
+
/**
|
|
14
|
+
* Converts a {@link FlowrSearchLike} object to code that can be used to recreate it.
|
|
15
|
+
*/
|
|
10
16
|
export declare function flowrSearchToCode(search: FlowrSearchLike): string;
|
|
@@ -37,6 +37,9 @@ function argsToAsciiString(args) {
|
|
|
37
37
|
return Object.entries(args).map(([key, value]) => `${key}: ${(0, flowr_search_filters_1.isBinaryTree)(value) ? '_' + (0, flowr_search_filters_1.binaryTreeToString)(value.tree) + '_' : JSON.stringify(value)}`)
|
|
38
38
|
.join(', ');
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Converts a {@link FlowrSearchLike} object to an ASCII representation.
|
|
42
|
+
*/
|
|
40
43
|
function flowrSearchToAscii(search) {
|
|
41
44
|
return (0, flowr_search_traverse_1.traverseFlowrSearchBuilderType)(search, ({ name, args }) => `${name}(${argsToAsciiString(args)})`, (acc, { name, args }) => `${acc} --> ${name}(${argsToAsciiString(args)})`);
|
|
42
45
|
}
|
|
@@ -47,6 +50,9 @@ function argsToCodeString(args) {
|
|
|
47
50
|
return Object.entries(args).map(([, value]) => `${JSON.stringify(value)}`)
|
|
48
51
|
.join(', ');
|
|
49
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Converts a {@link FlowrSearchLike} object to code that can be used to recreate it.
|
|
55
|
+
*/
|
|
50
56
|
function flowrSearchToCode(search) {
|
|
51
57
|
return (0, flowr_search_traverse_1.traverseFlowrSearchBuilderType)(search, (node) => `Q.${flowrGeneratorToCode(node)}`, (acc, node) => `${acc}.${flowrTransformerToCode(node)}`);
|
|
52
58
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FlowrSearchLike } from './flowr-search-builder';
|
|
2
2
|
import type { FlowrSearchGeneratorNode } from './search-executor/search-generators';
|
|
3
3
|
import type { FlowrSearchTransformerNode } from './search-executor/search-transformer';
|
|
4
4
|
/**
|
package/search/flowr-search.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NoInfo, RNode } from '../r-bridge/lang-4.x/ast/model/model';
|
|
2
2
|
import type { NodeId } from '../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
3
|
-
import type
|
|
4
|
-
import type {
|
|
3
|
+
import { type Enrichment, type EnrichmentElementContent, type EnrichmentSearchArguments, type EnrichmentSearchContent } from './search-executor/search-enrichers';
|
|
4
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../project/flowr-analyzer';
|
|
5
5
|
/**
|
|
6
6
|
* Yes, for now we do technically not need a wrapper around the RNode, but this allows us to attach caches etc.
|
|
7
7
|
* just for the respective search.
|
|
@@ -41,6 +41,18 @@ export interface FlowrSearchGetFilter extends Record<string, unknown> {
|
|
|
41
41
|
* The node must have the given id.
|
|
42
42
|
*/
|
|
43
43
|
readonly id?: NodeId;
|
|
44
|
+
/**
|
|
45
|
+
* The node must stem form a file with the given path matching the regex
|
|
46
|
+
* Please note that you can address the full path!
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* // matches all files in any 'tests' folder
|
|
50
|
+
* filePath: '.*\\tests\\.*'
|
|
51
|
+
* // matches all files named 'myfile.R' in any folder
|
|
52
|
+
* filePath: '.*\\/myfile\\.R$'
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
readonly filePathRegex?: string;
|
|
44
56
|
}
|
|
45
57
|
/** Intentionally, we abstract away from an array to avoid the use of conventional typescript operations */
|
|
46
58
|
export declare class FlowrSearchElements<Info = NoInfo, Elements extends FlowrSearchElement<Info>[] = FlowrSearchElement<Info>[]> {
|
|
@@ -57,6 +69,6 @@ export declare class FlowrSearchElements<Info = NoInfo, Elements extends FlowrSe
|
|
|
57
69
|
*
|
|
58
70
|
* Please note that this function does not also enrich individual elements, which is done through {@link enrichElement}. Both functions are called in a concise manner in {@link FlowrSearchBuilder.with}, which is the preferred way to add enrichments to a search.
|
|
59
71
|
*/
|
|
60
|
-
enrich<E extends Enrichment>(data:
|
|
72
|
+
enrich<E extends Enrichment>(data: ReadonlyFlowrAnalysisProvider, enrichment: E, args?: EnrichmentSearchArguments<E>): Promise<this>;
|
|
61
73
|
enrichmentContent<E extends Enrichment>(enrichment: E): EnrichmentSearchContent<E>;
|
|
62
74
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { FlowrSearchElement, FlowrSearchElements } from '../flowr-search';
|
|
2
2
|
import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
3
|
-
import type
|
|
3
|
+
import { type MergeableRecord } from '../../util/objects';
|
|
4
4
|
import type { Identifier } from '../../dataflow/environments/identifier';
|
|
5
5
|
import type { LinkToLastCall } from '../../queries/catalog/call-context-query/call-context-query-format';
|
|
6
6
|
import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
7
7
|
import type { ControlFlowInformation } from '../../control-flow/control-flow-graph';
|
|
8
8
|
import type { Query, QueryResult } from '../../queries/query';
|
|
9
|
-
import type
|
|
9
|
+
import { type CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
|
|
10
10
|
import type { AsyncOrSync } from 'ts-essentials';
|
|
11
|
-
import type {
|
|
11
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../../project/flowr-analyzer';
|
|
12
12
|
import type { DataflowInformation } from '../../dataflow/info';
|
|
13
|
+
import type { FlowrConfigOptions } from '../../config';
|
|
13
14
|
export interface EnrichmentData<ElementContent extends MergeableRecord, ElementArguments = undefined, SearchContent extends MergeableRecord = never, SearchArguments = ElementArguments> {
|
|
14
15
|
/**
|
|
15
16
|
* A function that is applied to each element of the search to enrich it with additional data.
|
|
@@ -18,8 +19,9 @@ export interface EnrichmentData<ElementContent extends MergeableRecord, ElementA
|
|
|
18
19
|
dataflow: DataflowInformation;
|
|
19
20
|
normalize: NormalizedAst;
|
|
20
21
|
cfg: ControlFlowInformation;
|
|
22
|
+
config: FlowrConfigOptions;
|
|
21
23
|
}, args: ElementArguments | undefined, previousValue: ElementContent | undefined) => AsyncOrSync<ElementContent>;
|
|
22
|
-
readonly enrichSearch?: (search: FlowrSearchElements<ParentInformation>, data:
|
|
24
|
+
readonly enrichSearch?: (search: FlowrSearchElements<ParentInformation>, data: ReadonlyFlowrAnalysisProvider, args: SearchArguments | undefined, previousValue: SearchContent | undefined) => AsyncOrSync<SearchContent>;
|
|
23
25
|
/**
|
|
24
26
|
* The mapping function used by the {@link Mapper.Enrichment} mapper.
|
|
25
27
|
*/
|
|
@@ -98,6 +100,7 @@ export declare const Enrichments: {
|
|
|
98
100
|
dataflow: DataflowInformation;
|
|
99
101
|
normalize: NormalizedAst;
|
|
100
102
|
cfg: ControlFlowInformation;
|
|
103
|
+
config: FlowrConfigOptions;
|
|
101
104
|
}, args: {
|
|
102
105
|
onlyBuiltin?: boolean;
|
|
103
106
|
} | undefined, prev: CallTargetsContent | undefined) => CallTargetsContent;
|
|
@@ -108,6 +111,7 @@ export declare const Enrichments: {
|
|
|
108
111
|
dataflow: DataflowInformation;
|
|
109
112
|
normalize: NormalizedAst;
|
|
110
113
|
cfg: ControlFlowInformation;
|
|
114
|
+
config: FlowrConfigOptions;
|
|
111
115
|
}, args: Omit<LinkToLastCall<import("../../queries/catalog/call-context-query/call-context-query-format").CallNameTypes>, "type">[] | undefined, prev: LastCallContent | undefined) => LastCallContent;
|
|
112
116
|
mapper: ({ linkedIds }: LastCallContent) => FlowrSearchElement<ParentInformation>[];
|
|
113
117
|
};
|
|
@@ -116,19 +120,21 @@ export declare const Enrichments: {
|
|
|
116
120
|
dataflow: DataflowInformation;
|
|
117
121
|
normalize: NormalizedAst;
|
|
118
122
|
cfg: ControlFlowInformation;
|
|
123
|
+
config: FlowrConfigOptions;
|
|
119
124
|
}, _args: CfgInformationArguments | undefined, prev: CfgInformationElementContent | undefined) => {
|
|
120
125
|
isRoot: boolean;
|
|
121
126
|
isReachable: boolean | undefined;
|
|
122
127
|
};
|
|
123
|
-
enrichSearch: (_search: FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>, data:
|
|
128
|
+
enrichSearch: (_search: FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>, data: ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>, args: CfgInformationArguments | undefined, prev: CfgInformationSearchContent | undefined) => Promise<CfgInformationSearchContent>;
|
|
124
129
|
};
|
|
125
130
|
readonly "query-data": {
|
|
126
131
|
enrichElement: (_e: FlowrSearchElement<ParentInformation>, _search: FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>, _data: {
|
|
127
132
|
dataflow: DataflowInformation;
|
|
128
133
|
normalize: NormalizedAst;
|
|
129
134
|
cfg: ControlFlowInformation;
|
|
135
|
+
config: FlowrConfigOptions;
|
|
130
136
|
}, args: QueryDataElementContent | undefined, prev: QueryDataElementContent | undefined) => QueryDataElementContent;
|
|
131
|
-
enrichSearch: (_search: FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>, _data:
|
|
137
|
+
enrichSearch: (_search: FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>, _data: ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>, args: QueryDataSearchContent | undefined, prev: QueryDataSearchContent | undefined) => Required<QueryDataSearchContent>;
|
|
132
138
|
};
|
|
133
139
|
};
|
|
134
140
|
/**
|
|
@@ -138,8 +144,12 @@ export declare const Enrichments: {
|
|
|
138
144
|
* @param enrichment - The enrichment content, if present, else `undefined`.
|
|
139
145
|
*/
|
|
140
146
|
export declare function enrichmentContent<E extends Enrichment>(e: FlowrSearchElement<ParentInformation>, enrichment: E): EnrichmentElementContent<E>;
|
|
147
|
+
/**
|
|
148
|
+
* Enriches the given search element with the given enrichment type, using the provided analysis data.
|
|
149
|
+
*/
|
|
141
150
|
export declare function enrichElement<Element extends FlowrSearchElement<ParentInformation>, E extends Enrichment>(e: Element, s: FlowrSearchElements<ParentInformation>, data: {
|
|
142
151
|
dataflow: DataflowInformation;
|
|
143
152
|
normalize: NormalizedAst;
|
|
144
153
|
cfg: ControlFlowInformation;
|
|
154
|
+
config: FlowrConfigOptions;
|
|
145
155
|
}, enrichment: E, args?: EnrichmentElementArguments<E>): Promise<Element>;
|
|
@@ -7,7 +7,6 @@ const objects_1 = require("../../util/objects");
|
|
|
7
7
|
const vertex_1 = require("../../dataflow/graph/vertex");
|
|
8
8
|
const identify_link_to_last_call_relation_1 = require("../../queries/catalog/call-context-query/identify-link-to-last-call-relation");
|
|
9
9
|
const assert_1 = require("../../util/assert");
|
|
10
|
-
const extract_cfg_1 = require("../../control-flow/extract-cfg");
|
|
11
10
|
const dfg_get_origin_1 = require("../../dataflow/origin/dfg-get-origin");
|
|
12
11
|
const node_id_1 = require("../../r-bridge/lang-4.x/ast/model/processing/node-id");
|
|
13
12
|
const cfg_simplification_1 = require("../../control-flow/cfg-simplification");
|
|
@@ -76,9 +75,8 @@ exports.Enrichments = {
|
|
|
76
75
|
const content = prev ?? { linkedIds: [] };
|
|
77
76
|
const vertex = data.dataflow.graph.get(e.node.info.id);
|
|
78
77
|
if (vertex !== undefined && vertex[0].tag === vertex_1.VertexType.FunctionCall) {
|
|
79
|
-
const cfg = (0, extract_cfg_1.extractCfgQuick)(data.normalize);
|
|
80
78
|
for (const arg of args) {
|
|
81
|
-
const lastCalls = (0, identify_link_to_last_call_relation_1.identifyLinkToLastCallRelation)(vertex[0].id, cfg.graph, data.dataflow.graph, {
|
|
79
|
+
const lastCalls = (0, identify_link_to_last_call_relation_1.identifyLinkToLastCallRelation)(vertex[0].id, data.cfg.graph, data.dataflow.graph, {
|
|
82
80
|
...arg,
|
|
83
81
|
callName: (0, call_context_query_executor_1.promoteCallName)(arg.callName),
|
|
84
82
|
type: 'link-to-last-call',
|
|
@@ -137,6 +135,9 @@ exports.Enrichments = {
|
|
|
137
135
|
function enrichmentContent(e, enrichment) {
|
|
138
136
|
return e?.enrichments?.[enrichment];
|
|
139
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Enriches the given search element with the given enrichment type, using the provided analysis data.
|
|
140
|
+
*/
|
|
140
141
|
async function enrichElement(e, s, data, enrichment, args) {
|
|
141
142
|
const enrichmentData = exports.Enrichments[enrichment];
|
|
142
143
|
const prev = e?.enrichments;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { FlowrSearchElements } from '../flowr-search';
|
|
1
|
+
import { type FlowrSearchElement, type FlowrSearchGeneratorNodeBase, type FlowrSearchGetFilter, FlowrSearchElements } from '../flowr-search';
|
|
3
2
|
import type { TailTypesOrUndefined } from '../../util/collections/arrays';
|
|
4
3
|
import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
|
-
import type
|
|
6
|
-
import type
|
|
7
|
-
import type {
|
|
4
|
+
import { type SlicingCriteria } from '../../slicing/criterion/parse';
|
|
5
|
+
import { type Query } from '../../queries/query';
|
|
6
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../../project/flowr-analyzer';
|
|
7
|
+
import type TreeSitter from 'web-tree-sitter';
|
|
8
|
+
export declare const searchLogger: import("tslog").Logger<import("tslog").ILogObj>;
|
|
8
9
|
/**
|
|
9
10
|
* This is a union of all possible generator node types
|
|
10
11
|
*/
|
|
@@ -24,19 +25,27 @@ export declare const generators: {
|
|
|
24
25
|
readonly criterion: typeof generateCriterion;
|
|
25
26
|
readonly from: typeof generateFrom;
|
|
26
27
|
readonly 'from-query': typeof generateFromQuery;
|
|
28
|
+
readonly syntax: typeof generateSyntax;
|
|
27
29
|
};
|
|
28
|
-
declare function generateAll(data:
|
|
29
|
-
declare function generateGet(input:
|
|
30
|
+
declare function generateAll(data: ReadonlyFlowrAnalysisProvider): Promise<FlowrSearchElements<ParentInformation>>;
|
|
31
|
+
declare function generateGet(input: ReadonlyFlowrAnalysisProvider, { filter: { line, column, id, name, nameIsRegex, filePathRegex } }: {
|
|
30
32
|
filter: FlowrSearchGetFilter;
|
|
31
33
|
}): Promise<FlowrSearchElements<ParentInformation>>;
|
|
32
|
-
declare function generateFrom(_input:
|
|
34
|
+
declare function generateFrom(_input: ReadonlyFlowrAnalysisProvider, args: {
|
|
33
35
|
from: FlowrSearchElement<ParentInformation> | FlowrSearchElement<ParentInformation>[];
|
|
34
36
|
}): FlowrSearchElements<ParentInformation>;
|
|
35
|
-
declare function generateFromQuery(input:
|
|
37
|
+
declare function generateFromQuery(input: ReadonlyFlowrAnalysisProvider, args: {
|
|
36
38
|
from: readonly Query[];
|
|
37
39
|
}): Promise<FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
38
|
-
declare function
|
|
40
|
+
declare function generateSyntax(input: ReadonlyFlowrAnalysisProvider, args: {
|
|
41
|
+
source: TreeSitter.Query | string;
|
|
42
|
+
captures: readonly string[];
|
|
43
|
+
}): Promise<FlowrSearchElements<ParentInformation, FlowrSearchElement<ParentInformation>[]>>;
|
|
44
|
+
declare function generateCriterion(input: ReadonlyFlowrAnalysisProvider, args: {
|
|
39
45
|
criterion: SlicingCriteria;
|
|
40
46
|
}): Promise<FlowrSearchElements<ParentInformation>>;
|
|
47
|
+
/**
|
|
48
|
+
* Gets the search generator function for the given name
|
|
49
|
+
*/
|
|
41
50
|
export declare function getGenerator<Name extends GeneratorNames>(name: Name): typeof generators[Name];
|
|
42
51
|
export {};
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generators = void 0;
|
|
3
|
+
exports.generators = exports.searchLogger = void 0;
|
|
4
4
|
exports.getGenerator = getGenerator;
|
|
5
5
|
const flowr_search_1 = require("../flowr-search");
|
|
6
6
|
const parse_1 = require("../../slicing/criterion/parse");
|
|
7
7
|
const assert_1 = require("../../util/assert");
|
|
8
8
|
const query_1 = require("../../queries/query");
|
|
9
9
|
const search_enrichers_1 = require("./search-enrichers");
|
|
10
|
+
const visitor_1 = require("../../r-bridge/lang-4.x/ast/model/processing/visitor");
|
|
11
|
+
const log_1 = require("../../util/log");
|
|
12
|
+
exports.searchLogger = log_1.log.getSubLogger({ name: 'search' });
|
|
10
13
|
/**
|
|
11
14
|
* All supported generators!
|
|
12
15
|
*/
|
|
@@ -15,7 +18,8 @@ exports.generators = {
|
|
|
15
18
|
get: generateGet,
|
|
16
19
|
criterion: generateCriterion,
|
|
17
20
|
from: generateFrom,
|
|
18
|
-
'from-query': generateFromQuery
|
|
21
|
+
'from-query': generateFromQuery,
|
|
22
|
+
syntax: generateSyntax
|
|
19
23
|
};
|
|
20
24
|
async function generateAll(data) {
|
|
21
25
|
return new flowr_search_1.FlowrSearchElements((await getAllNodes(data))
|
|
@@ -26,13 +30,18 @@ async function getAllNodes(data) {
|
|
|
26
30
|
return [...new Map([...normalize.idMap.values()].map(n => [n.info.id, n]))
|
|
27
31
|
.values()];
|
|
28
32
|
}
|
|
29
|
-
async function generateGet(input, { filter: { line, column, id, name, nameIsRegex } }) {
|
|
33
|
+
async function generateGet(input, { filter: { line, column, id, name, nameIsRegex, filePathRegex } }) {
|
|
30
34
|
const normalize = await input.normalize();
|
|
31
35
|
let potentials = (id ?
|
|
32
36
|
[normalize.idMap.get(id)].filter(assert_1.isNotUndefined) :
|
|
33
37
|
await getAllNodes(input));
|
|
38
|
+
if (filePathRegex) {
|
|
39
|
+
const filePathFilter = new RegExp(filePathRegex);
|
|
40
|
+
potentials = potentials.filter(({ info }) => info.file && filePathFilter.test(info.file));
|
|
41
|
+
}
|
|
34
42
|
if (line && line < 0) {
|
|
35
|
-
|
|
43
|
+
(0, assert_1.guard)(normalize.ast.files.length === 1, 'Currently, negative line numbers are only supported for single-file inputs');
|
|
44
|
+
const maxLines = normalize.ast.files[0].root.info.fullRange?.[2] ??
|
|
36
45
|
(id ? (await getAllNodes(input)) : potentials).reduce((maxLine, { location }) => location && location[2] > maxLine ? location[2] : maxLine, 0);
|
|
37
46
|
line = maxLines + line + 1;
|
|
38
47
|
}
|
|
@@ -81,13 +90,56 @@ async function generateFromQuery(input, args) {
|
|
|
81
90
|
.enrich(input, search_enrichers_1.Enrichment.QueryData, { queries: result });
|
|
82
91
|
return elements.mutate(s => Promise.all(s.map(async (e) => {
|
|
83
92
|
const [query, _] = [...nodesByQuery].find(([_, nodes]) => nodes.has(e));
|
|
84
|
-
return await (0, search_enrichers_1.enrichElement)(e, elements, { normalize, dataflow, cfg }, search_enrichers_1.Enrichment.QueryData, { query });
|
|
93
|
+
return await (0, search_enrichers_1.enrichElement)(e, elements, { normalize, dataflow, cfg, config: input.flowrConfig }, search_enrichers_1.Enrichment.QueryData, { query });
|
|
85
94
|
})));
|
|
86
95
|
}
|
|
96
|
+
async function generateSyntax(input, args) {
|
|
97
|
+
// if the user didn't specify a specific capture, we want to capture the outermost item
|
|
98
|
+
if (!args.captures?.length) {
|
|
99
|
+
(0, assert_1.guard)(typeof args.source === 'string', `Cannot use default capture name for pre-compiled query ${JSON.stringify(args.source)}, specify captures explicitly`);
|
|
100
|
+
const defaultCaptureName = 'defaultCapture';
|
|
101
|
+
args.source += ` @${defaultCaptureName}`;
|
|
102
|
+
args.captures = [defaultCaptureName];
|
|
103
|
+
}
|
|
104
|
+
// allow specifying capture names with or without the @ in front :)
|
|
105
|
+
const captures = new Set(args.captures.map(c => c.startsWith('@') ? c.substring(1) : c));
|
|
106
|
+
const info = input.parserInformation();
|
|
107
|
+
(0, assert_1.guard)(info.name === 'tree-sitter', 'treeSitterQuery can only be used with TreeSitterExecutor parsers!');
|
|
108
|
+
const result = await info.treeSitterQuery(args.source);
|
|
109
|
+
const relevant = result.filter(c => captures.has(c.name));
|
|
110
|
+
if (!relevant.length) {
|
|
111
|
+
exports.searchLogger.debug(`empty tree-sitter query result for query ${JSON.stringify(args)}`);
|
|
112
|
+
return new flowr_search_1.FlowrSearchElements([]);
|
|
113
|
+
}
|
|
114
|
+
const nodesByTreeSitterId = new Map();
|
|
115
|
+
(0, visitor_1.visitAst)((await input.normalize()).ast.files.map(f => f.root), node => {
|
|
116
|
+
const treeSitterInfo = node.info;
|
|
117
|
+
if (treeSitterInfo.treeSitterId) {
|
|
118
|
+
nodesByTreeSitterId.set(treeSitterInfo.treeSitterId, node);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
exports.searchLogger.debug(`normalized ast node ${node.lexeme} with type ${node.type} does not have a tree-sitter id`);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
const ret = [];
|
|
125
|
+
for (const capture of relevant) {
|
|
126
|
+
const node = nodesByTreeSitterId.get(capture.node.id);
|
|
127
|
+
if (node) {
|
|
128
|
+
ret.push({ node });
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
exports.searchLogger.debug(`tree-sitter node ${capture.node.id} with type ${capture.node.type} does not have a corresponding normalized ast node`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return new flowr_search_1.FlowrSearchElements(ret);
|
|
135
|
+
}
|
|
87
136
|
async function generateCriterion(input, args) {
|
|
88
137
|
const idMap = (await input.normalize()).idMap;
|
|
89
138
|
return new flowr_search_1.FlowrSearchElements(args.criterion.map(c => ({ node: idMap.get((0, parse_1.slicingCriterionToId)(c, idMap)) })));
|
|
90
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Gets the search generator function for the given name
|
|
142
|
+
*/
|
|
91
143
|
function getGenerator(name) {
|
|
92
144
|
if (!exports.generators[name]) {
|
|
93
145
|
throw new Error(`Unknown generator: ${name}`);
|