@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
|
@@ -4,6 +4,7 @@ exports.parseCommand = void 0;
|
|
|
4
4
|
const format_1 = require("../../../r-bridge/lang-4.x/ast/parser/json/format");
|
|
5
5
|
const normalize_meta_1 = require("../../../r-bridge/lang-4.x/ast/parser/main/normalize-meta");
|
|
6
6
|
const retriever_1 = require("../../../r-bridge/retriever");
|
|
7
|
+
const flowr_file_1 = require("../../../project/context/flowr-file");
|
|
7
8
|
function toDepthMap(entry) {
|
|
8
9
|
const visit = [{ depth: 0, node: entry }];
|
|
9
10
|
const result = [];
|
|
@@ -133,20 +134,31 @@ exports.parseCommand = {
|
|
|
133
134
|
argsParser: (line) => {
|
|
134
135
|
return {
|
|
135
136
|
// Threat the whole input line as R code
|
|
136
|
-
|
|
137
|
+
rCode: (0, retriever_1.removeRQuotes)(line.trim()),
|
|
137
138
|
remaining: []
|
|
138
139
|
};
|
|
139
140
|
},
|
|
140
141
|
fn: async ({ output, analyzer }) => {
|
|
141
|
-
const result = await analyzer.parse();
|
|
142
|
-
const parserInfo =
|
|
142
|
+
const result = (await analyzer.parse()).files;
|
|
143
|
+
const parserInfo = analyzer.parserInformation();
|
|
143
144
|
if (parserInfo.name === 'r-shell') {
|
|
144
|
-
const
|
|
145
|
-
|
|
145
|
+
for (const { parsed, filePath } of result) {
|
|
146
|
+
if (filePath && filePath !== flowr_file_1.FlowrFile.INLINE_PATH) {
|
|
147
|
+
output.stdout(output.formatter.format(`File: ${filePath}\n`, { style: 4 /* FontStyles.Underline */ }));
|
|
148
|
+
}
|
|
149
|
+
const object = toDepthMap((0, format_1.convertPreparedParsedData)((0, format_1.prepareParsedData)(parsed)));
|
|
150
|
+
output.stdout(depthListToTextTree(object, output.formatter));
|
|
151
|
+
}
|
|
146
152
|
}
|
|
147
153
|
else {
|
|
148
154
|
// print the tree-sitter ast
|
|
149
|
-
|
|
155
|
+
for (const { parsed, filePath } of result) {
|
|
156
|
+
if (filePath && filePath !== flowr_file_1.FlowrFile.INLINE_PATH) {
|
|
157
|
+
output.stdout(output.formatter.format(`File: ${filePath}\n`, { style: 4 /* FontStyles.Underline */ }));
|
|
158
|
+
}
|
|
159
|
+
const object = treeSitterToDepthList(parsed.rootNode);
|
|
160
|
+
output.stdout(depthListToTextTree(object, output.formatter));
|
|
161
|
+
}
|
|
150
162
|
}
|
|
151
163
|
}
|
|
152
164
|
};
|
|
@@ -29,15 +29,19 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
|
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
let parsedQuery;
|
|
32
|
+
let input;
|
|
32
33
|
if (query.startsWith('@')) {
|
|
33
34
|
const queryName = query.slice(1);
|
|
34
35
|
const queryObj = query_1.SupportedQueries[queryName];
|
|
35
36
|
if (queryObj?.fromLine) {
|
|
36
|
-
const
|
|
37
|
+
const parseResult = queryObj.fromLine(output, remainingArgs, analyzer.flowrConfig);
|
|
38
|
+
const q = parseResult.query;
|
|
37
39
|
parsedQuery = q ? (Array.isArray(q) ? q : [q]) : [];
|
|
40
|
+
input = parseResult.rCode;
|
|
38
41
|
}
|
|
39
42
|
else {
|
|
40
43
|
parsedQuery = [{ type: query.slice(1) }];
|
|
44
|
+
input = remainingArgs.join(' ').trim();
|
|
41
45
|
}
|
|
42
46
|
const validationResult = (0, query_1.QueriesSchema)().validate(parsedQuery);
|
|
43
47
|
if (validationResult.error) {
|
|
@@ -54,10 +58,15 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
|
|
|
54
58
|
printHelp(output);
|
|
55
59
|
return;
|
|
56
60
|
}
|
|
61
|
+
input = remainingArgs.join(' ').trim();
|
|
57
62
|
}
|
|
58
63
|
else {
|
|
59
64
|
parsedQuery = [{ type: 'call-context', callName: query }];
|
|
60
65
|
}
|
|
66
|
+
if (input) {
|
|
67
|
+
analyzer.reset();
|
|
68
|
+
analyzer.addRequest(input);
|
|
69
|
+
}
|
|
61
70
|
return {
|
|
62
71
|
query: await (0, query_1.executeQueries)({
|
|
63
72
|
analyzer,
|
|
@@ -68,13 +77,13 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
|
|
|
68
77
|
}
|
|
69
78
|
/**
|
|
70
79
|
* Function for splitting the input line.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
80
|
+
* All input is treated as arguments, no R code is separated so that the individual queries can handle it.
|
|
81
|
+
* @param line - The input line
|
|
73
82
|
*/
|
|
74
83
|
function parseArgs(line) {
|
|
75
84
|
const args = (0, args_1.splitAtEscapeSensitive)(line);
|
|
76
85
|
return {
|
|
77
|
-
|
|
86
|
+
rCode: undefined,
|
|
78
87
|
remaining: args
|
|
79
88
|
};
|
|
80
89
|
}
|
|
@@ -104,7 +113,9 @@ exports.queryStarCommand = {
|
|
|
104
113
|
fn: async ({ output, analyzer, remainingArgs }) => {
|
|
105
114
|
const results = await processQueryArgs(output, analyzer, remainingArgs);
|
|
106
115
|
if (results) {
|
|
107
|
-
|
|
116
|
+
const json = Object.fromEntries(Object.entries(results.query)
|
|
117
|
+
.map(([query, queryResults]) => [query, query_1.SupportedQueries[query]?.jsonFormatter?.(queryResults) ?? queryResults]));
|
|
118
|
+
output.stdout(JSON.stringify(json, json_1.jsonReplacer));
|
|
108
119
|
}
|
|
109
120
|
}
|
|
110
121
|
};
|
package/cli/repl/core.d.ts
CHANGED
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
import * as readline from 'readline';
|
|
2
|
-
import type
|
|
2
|
+
import { type ReplOutput } from './commands/repl-main';
|
|
3
3
|
import type { MergeableRecord } from '../../util/objects';
|
|
4
4
|
import type { FlowrConfigOptions } from '../../config';
|
|
5
5
|
import type { FlowrAnalyzer } from '../../project/flowr-analyzer';
|
|
6
|
+
/**
|
|
7
|
+
* Completion suggestions for a specific REPL command
|
|
8
|
+
*/
|
|
9
|
+
export interface CommandCompletions {
|
|
10
|
+
/** The possible completions for the current argument */
|
|
11
|
+
readonly completions: string[];
|
|
12
|
+
/**
|
|
13
|
+
* The current argument fragment being completed, if any.
|
|
14
|
+
* This is relevant if an argument is composed of multiple parts (e.g. comma-separated lists).
|
|
15
|
+
*/
|
|
16
|
+
readonly argumentPart?: string;
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* Used by the repl to provide automatic completions for a given (partial) input line
|
|
8
20
|
*/
|
|
9
21
|
export declare function replCompleter(line: string, config: FlowrConfigOptions): [string[], string];
|
|
22
|
+
/**
|
|
23
|
+
* Produces default readline options for the flowR REPL
|
|
24
|
+
*/
|
|
10
25
|
export declare function makeDefaultReplReadline(config: FlowrConfigOptions): readline.ReadLineOptions;
|
|
26
|
+
/**
|
|
27
|
+
* Handles a string input for the REPL, returning the parsed string and any remaining input.
|
|
28
|
+
*/
|
|
11
29
|
export declare function handleString(code: string): {
|
|
12
|
-
|
|
30
|
+
rCode: string | undefined;
|
|
13
31
|
remaining: never[];
|
|
14
32
|
};
|
|
15
33
|
/**
|
|
16
34
|
* This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
|
|
17
|
-
*
|
|
18
35
|
* @param analyzer - The flowR analyzer to use.
|
|
19
36
|
* @param output - Defines two methods that every function in the repl uses to output its data.
|
|
20
37
|
* @param expr - The expression to process.
|
|
@@ -31,7 +48,7 @@ export interface FlowrReplOptions extends MergeableRecord {
|
|
|
31
48
|
readonly analyzer: FlowrAnalyzer;
|
|
32
49
|
/**
|
|
33
50
|
* A potentially customized readline interface to be used for the repl to *read* from the user, we write the output with the {@link ReplOutput | `output` } interface.
|
|
34
|
-
|
|
51
|
+
* If you want to provide a custom one but use the same `completer`, refer to {@link replCompleter}.
|
|
35
52
|
*/
|
|
36
53
|
readonly rl?: readline.Interface;
|
|
37
54
|
/** Defines two methods that every function in the repl uses to output its data. */
|
|
@@ -47,11 +64,12 @@ export interface FlowrReplOptions extends MergeableRecord {
|
|
|
47
64
|
* The repl allows for two kinds of inputs:
|
|
48
65
|
* - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
|
|
49
66
|
* - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
|
|
50
|
-
*
|
|
51
67
|
* @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
|
|
52
68
|
*
|
|
53
69
|
* For the execution, this function makes use of {@link replProcessAnswer}.
|
|
54
|
-
*
|
|
55
70
|
*/
|
|
56
71
|
export declare function repl({ analyzer, rl, output, historyFile, allowRSessionAccess }: FlowrReplOptions): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Loads the REPL history from the given file.
|
|
74
|
+
*/
|
|
57
75
|
export declare function loadReplHistory(historyFile: string): string[] | undefined;
|
package/cli/repl/core.js
CHANGED
|
@@ -44,7 +44,6 @@ exports.repl = repl;
|
|
|
44
44
|
exports.loadReplHistory = loadReplHistory;
|
|
45
45
|
/**
|
|
46
46
|
* Basically a helper file to allow the main 'flowr' script (located in the source root) to provide its repl
|
|
47
|
-
*
|
|
48
47
|
* @module
|
|
49
48
|
*/
|
|
50
49
|
const prompt_1 = require("./prompt");
|
|
@@ -60,6 +59,7 @@ const retriever_1 = require("../../r-bridge/retriever");
|
|
|
60
59
|
const repl_main_1 = require("./commands/repl-main");
|
|
61
60
|
const log_1 = require("../../util/log");
|
|
62
61
|
const query_1 = require("../../queries/query");
|
|
62
|
+
const strings_1 = require("../../util/text/strings");
|
|
63
63
|
let _replCompleterKeywords = undefined;
|
|
64
64
|
function replCompleterKeywords() {
|
|
65
65
|
if (_replCompleterKeywords === undefined) {
|
|
@@ -79,44 +79,50 @@ function replCompleter(line, config) {
|
|
|
79
79
|
if (splitLine.length > 1 || startingNewArg) {
|
|
80
80
|
const commandNameColon = replCompleterKeywords().find(k => splitLine[0] === k);
|
|
81
81
|
if (commandNameColon) {
|
|
82
|
-
|
|
82
|
+
let completions = [];
|
|
83
|
+
let currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
|
|
83
84
|
const commandName = commandNameColon.slice(1);
|
|
84
85
|
const cmd = (0, repl_commands_1.getCommand)(commandName);
|
|
85
86
|
if (cmd?.script === true) {
|
|
86
87
|
// autocomplete script arguments
|
|
87
88
|
const options = scripts_info_1.scripts[commandName].options;
|
|
88
|
-
completions.
|
|
89
|
+
completions = completions.concat((0, scripts_info_1.getValidOptionsForCompletion)(options, splitLine).map(o => `${o} `));
|
|
89
90
|
}
|
|
90
91
|
else if (commandName.startsWith('query')) {
|
|
91
|
-
completions
|
|
92
|
+
const { completions: queryCompletions, argumentPart: splitArg } = replQueryCompleter(splitLine, startingNewArg, config);
|
|
93
|
+
if (splitArg !== undefined) {
|
|
94
|
+
currentArg = splitArg;
|
|
95
|
+
}
|
|
96
|
+
completions = completions.concat(queryCompletions);
|
|
92
97
|
}
|
|
93
98
|
else {
|
|
94
99
|
// autocomplete command arguments (specifically, autocomplete the file:// protocol)
|
|
95
100
|
completions.push(retriever_1.fileProtocol);
|
|
96
101
|
}
|
|
97
|
-
const currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
|
|
98
102
|
return [completions.filter(a => a.startsWith(currentArg)), currentArg];
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
105
|
// if no command is already typed, just return all commands that match
|
|
102
106
|
return [replCompleterKeywords().filter(k => k.startsWith(line)).map(k => `${k} `), line];
|
|
103
107
|
}
|
|
104
|
-
function replQueryCompleter(splitLine, config) {
|
|
108
|
+
function replQueryCompleter(splitLine, startingNewArg, config) {
|
|
105
109
|
const nonEmpty = splitLine.slice(1).map(s => s.trim()).filter(s => s.length > 0);
|
|
106
110
|
const queryShorts = Object.keys(query_1.SupportedQueries).map(q => `@${q}`).concat(['help']);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
candidates = candidates.concat(queryShorts.map(q => `${q} `));
|
|
111
|
+
if (nonEmpty.length == 0 || (nonEmpty.length == 1 && queryShorts.some(q => q.startsWith(nonEmpty[0]) && nonEmpty[0] !== q && !startingNewArg))) {
|
|
112
|
+
return { completions: queryShorts.map(q => `${q} `) };
|
|
110
113
|
}
|
|
111
114
|
else {
|
|
112
115
|
const q = nonEmpty[0].slice(1);
|
|
113
116
|
const queryElement = query_1.SupportedQueries[q];
|
|
114
117
|
if (queryElement?.completer) {
|
|
115
|
-
|
|
118
|
+
return queryElement.completer(nonEmpty.slice(1), startingNewArg, config);
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
|
-
return
|
|
121
|
+
return { completions: [] };
|
|
119
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Produces default readline options for the flowR REPL
|
|
125
|
+
*/
|
|
120
126
|
function makeDefaultReplReadline(config) {
|
|
121
127
|
return {
|
|
122
128
|
input: process.stdin,
|
|
@@ -128,9 +134,12 @@ function makeDefaultReplReadline(config) {
|
|
|
128
134
|
completer: (c) => replCompleter(c, config)
|
|
129
135
|
};
|
|
130
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Handles a string input for the REPL, returning the parsed string and any remaining input.
|
|
139
|
+
*/
|
|
131
140
|
function handleString(code) {
|
|
132
141
|
return {
|
|
133
|
-
|
|
142
|
+
rCode: code.length == 0 ? undefined : (0, strings_1.startAndEndsWith)(code, '"') ? JSON.parse(code) : code,
|
|
134
143
|
remaining: []
|
|
135
144
|
};
|
|
136
145
|
}
|
|
@@ -141,28 +150,30 @@ async function replProcessStatement(output, statement, analyzer, allowRSessionAc
|
|
|
141
150
|
const bold = (s) => output.formatter.format(s, { style: 1 /* FontStyles.Bold */ });
|
|
142
151
|
if (processor) {
|
|
143
152
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
153
|
+
await (0, query_1.genericWrapReplFailIfNoRequest)(async () => {
|
|
154
|
+
const remainingLine = statement.slice(command.length + 2).trim();
|
|
155
|
+
if (processor.isCodeCommand) {
|
|
156
|
+
const args = processor.argsParser(remainingLine);
|
|
157
|
+
if (args.rCode) {
|
|
158
|
+
analyzer.reset();
|
|
159
|
+
analyzer.addRequest(args.rCode);
|
|
160
|
+
}
|
|
161
|
+
await processor.fn({ output, analyzer, remainingArgs: args.remaining });
|
|
150
162
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
163
|
+
else {
|
|
164
|
+
await processor.fn({ output, analyzer, remainingLine, allowRSessionAccess });
|
|
165
|
+
}
|
|
166
|
+
}, output, analyzer);
|
|
156
167
|
}
|
|
157
168
|
catch (e) {
|
|
158
|
-
output.
|
|
169
|
+
output.stderr(`${bold(`Failed to execute command ${command}`)}: ${e?.message}. Using the ${bold('--verbose')} flag on startup may provide additional information.\n`);
|
|
159
170
|
if (log_1.log.settings.minLevel < 6 /* LogLevel.Fatal */) {
|
|
160
171
|
console.error(e);
|
|
161
172
|
}
|
|
162
173
|
}
|
|
163
174
|
}
|
|
164
175
|
else {
|
|
165
|
-
output.
|
|
176
|
+
output.stderr(`the command '${command}' is unknown, try ${bold(':help')} for more information\n`);
|
|
166
177
|
}
|
|
167
178
|
}
|
|
168
179
|
else {
|
|
@@ -171,16 +182,15 @@ async function replProcessStatement(output, statement, analyzer, allowRSessionAc
|
|
|
171
182
|
}
|
|
172
183
|
/**
|
|
173
184
|
* This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
|
|
174
|
-
*
|
|
175
185
|
* @param analyzer - The flowR analyzer to use.
|
|
176
186
|
* @param output - Defines two methods that every function in the repl uses to output its data.
|
|
177
187
|
* @param expr - The expression to process.
|
|
178
188
|
* @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
|
|
179
189
|
*/
|
|
180
190
|
async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
|
|
181
|
-
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false,
|
|
191
|
+
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false, /^;\s*:/);
|
|
182
192
|
for (const statement of statements) {
|
|
183
|
-
await replProcessStatement(output, statement, analyzer, allowRSessionAccess);
|
|
193
|
+
await replProcessStatement(output, statement.trim(), analyzer, allowRSessionAccess);
|
|
184
194
|
}
|
|
185
195
|
}
|
|
186
196
|
/**
|
|
@@ -189,17 +199,16 @@ async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
|
|
|
189
199
|
* The repl allows for two kinds of inputs:
|
|
190
200
|
* - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
|
|
191
201
|
* - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
|
|
192
|
-
*
|
|
193
202
|
* @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
|
|
194
203
|
*
|
|
195
204
|
* For the execution, this function makes use of {@link replProcessAnswer}.
|
|
196
|
-
*
|
|
197
205
|
*/
|
|
198
206
|
async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplReadline(analyzer.flowrConfig)), output = repl_main_1.standardReplOutput, historyFile = defaultHistoryFile, allowRSessionAccess = false }) {
|
|
199
207
|
if (historyFile) {
|
|
200
208
|
rl.on('history', h => fs_1.default.writeFileSync(historyFile, h.join('\n'), { encoding: 'utf-8' }));
|
|
201
209
|
}
|
|
202
210
|
// the incredible repl :D, we kill it with ':quit'
|
|
211
|
+
// noinspection InfiniteLoopJS
|
|
203
212
|
while (true) {
|
|
204
213
|
await new Promise((resolve, reject) => {
|
|
205
214
|
rl.question((0, prompt_1.prompt)(), answer => {
|
|
@@ -212,6 +221,9 @@ async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplRea
|
|
|
212
221
|
});
|
|
213
222
|
}
|
|
214
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Loads the REPL history from the given file.
|
|
226
|
+
*/
|
|
215
227
|
function loadReplHistory(historyFile) {
|
|
216
228
|
try {
|
|
217
229
|
if (!fs_1.default.existsSync(historyFile)) {
|
package/cli/repl/execute.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ type Stdio = [stdin: Writable | null, stdout: Readable | null, stderr: Readable
|
|
|
3
3
|
export type StdioProcessor = (stdio: Stdio) => void;
|
|
4
4
|
/**
|
|
5
5
|
* Simply captures the output of the script executed by {@link waitOnScript}.
|
|
6
|
-
*
|
|
7
6
|
* @param stdio - The standard io tuple provided by {@link waitOnScript}
|
|
8
7
|
* @param onStdOutLine - The callback is executed each time we receive a new line from the standard output channel.
|
|
9
8
|
* @param onStdErrLine - The callback is executed each time we receive a new line from the standard error channel.
|
|
@@ -11,7 +10,6 @@ export type StdioProcessor = (stdio: Stdio) => void;
|
|
|
11
10
|
export declare function stdioCaptureProcessor(stdio: Stdio, onStdOutLine: (msg: string) => void, onStdErrLine: (msg: string) => void): void;
|
|
12
11
|
/**
|
|
13
12
|
* Run the given module with the presented arguments, and wait for it to exit.
|
|
14
|
-
*
|
|
15
13
|
* @param module - The (flowR) module that you want to use for the fork.
|
|
16
14
|
* It is probably best to use {@link __dirname} so you can specify the module relative to your
|
|
17
15
|
* current one.
|
package/cli/repl/execute.js
CHANGED
|
@@ -11,7 +11,6 @@ const assert_1 = require("../../util/assert");
|
|
|
11
11
|
const log_1 = require("../../util/log");
|
|
12
12
|
/**
|
|
13
13
|
* Simply captures the output of the script executed by {@link waitOnScript}.
|
|
14
|
-
*
|
|
15
14
|
* @param stdio - The standard io tuple provided by {@link waitOnScript}
|
|
16
15
|
* @param onStdOutLine - The callback is executed each time we receive a new line from the standard output channel.
|
|
17
16
|
* @param onStdErrLine - The callback is executed each time we receive a new line from the standard error channel.
|
|
@@ -32,7 +31,6 @@ function stdioCaptureProcessor(stdio, onStdOutLine, onStdErrLine) {
|
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
33
|
* Run the given module with the presented arguments, and wait for it to exit.
|
|
35
|
-
*
|
|
36
34
|
* @param module - The (flowR) module that you want to use for the fork.
|
|
37
35
|
* It is probably best to use {@link __dirname} so you can specify the module relative to your
|
|
38
36
|
* current one.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SliceDirection } from '../../../core/steps/all/static-slicing/00-slice';
|
|
2
|
+
import type { SingleSlicingCriterion, SlicingCriteria } from '../../../slicing/criterion/parse';
|
|
3
|
+
/**
|
|
4
|
+
* Checks whether the given argument represents a slicing direction with an `f` suffix.
|
|
5
|
+
*/
|
|
6
|
+
export declare function sliceDirectionParser(argument: string): SliceDirection;
|
|
7
|
+
/**
|
|
8
|
+
* Parses a single slicing criterion from the given argument.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sliceCriterionParser(argument: string | undefined): SingleSlicingCriterion | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Parses multiple slicing criteria from the given argument.
|
|
13
|
+
*/
|
|
14
|
+
export declare function sliceCriteriaParser(argument: string | undefined): SlicingCriteria | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sliceDirectionParser = sliceDirectionParser;
|
|
4
|
+
exports.sliceCriterionParser = sliceCriterionParser;
|
|
5
|
+
exports.sliceCriteriaParser = sliceCriteriaParser;
|
|
6
|
+
const _00_slice_1 = require("../../../core/steps/all/static-slicing/00-slice");
|
|
7
|
+
/**
|
|
8
|
+
* Checks whether the given argument represents a slicing direction with an `f` suffix.
|
|
9
|
+
*/
|
|
10
|
+
function sliceDirectionParser(argument) {
|
|
11
|
+
const endBracket = argument.indexOf(')');
|
|
12
|
+
return argument[endBracket + 1] === 'f' ? _00_slice_1.SliceDirection.Forward : _00_slice_1.SliceDirection.Backward;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parses a single slicing criterion from the given argument.
|
|
16
|
+
*/
|
|
17
|
+
function sliceCriterionParser(argument) {
|
|
18
|
+
if (argument?.startsWith('(') && argument.includes(')')) {
|
|
19
|
+
const endBracket = argument.indexOf(')');
|
|
20
|
+
return argument.slice(1, endBracket);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parses multiple slicing criteria from the given argument.
|
|
25
|
+
*/
|
|
26
|
+
function sliceCriteriaParser(argument) {
|
|
27
|
+
if (argument?.startsWith('(') && argument.includes(')')) {
|
|
28
|
+
const endBracket = argument.indexOf(')');
|
|
29
|
+
const criteriaPart = argument.slice(1, endBracket);
|
|
30
|
+
const criteria = criteriaPart.split(';');
|
|
31
|
+
return criteria;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=slice-query-parser.js.map
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import type { KnownParser } from '../../r-bridge/parser';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a version string for the REPL including flowR and R version.
|
|
4
|
+
*/
|
|
2
5
|
export declare function versionReplString(parser: KnownParser): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Prints the version information for the REPL including flowR and R version.
|
|
8
|
+
*/
|
|
3
9
|
export declare function printVersionRepl(parser: KnownParser): Promise<void>;
|
|
@@ -3,12 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.versionReplString = versionReplString;
|
|
4
4
|
exports.printVersionRepl = printVersionRepl;
|
|
5
5
|
const version_1 = require("../../util/version");
|
|
6
|
+
/**
|
|
7
|
+
* Returns a version string for the REPL including flowR and R version.
|
|
8
|
+
*/
|
|
6
9
|
async function versionReplString(parser) {
|
|
7
10
|
const version = await (0, version_1.retrieveVersionInformation)(parser);
|
|
8
11
|
const rVersion = version.r === 'none' ? '' : version.r === 'unknown' ? ', R version unknown' : `, R v${version.r}`;
|
|
9
12
|
const treeSitterVer = parser.name === 'tree-sitter' ? `, R grammar v${parser.treeSitterVersion()}` : '';
|
|
10
13
|
return `flowR repl using flowR v${version.flowr}${rVersion}${treeSitterVer} (${version.engine} engine)`;
|
|
11
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Prints the version information for the REPL including flowR and R version.
|
|
17
|
+
*/
|
|
12
18
|
async function printVersionRepl(parser) {
|
|
13
19
|
console.log(await versionReplString(parser));
|
|
14
20
|
}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compacts an object into a UTF-16 compressed string.
|
|
3
|
+
* @see {@link uncompact}
|
|
4
|
+
*/
|
|
1
5
|
export declare function compact(obj: unknown): string;
|
|
6
|
+
/**
|
|
7
|
+
* Uncompacts a UTF-16 compressed string into an object.
|
|
8
|
+
* @see {@link compact}
|
|
9
|
+
*/
|
|
2
10
|
export declare function uncompact(buf: string): unknown;
|
|
@@ -4,9 +4,17 @@ exports.compact = compact;
|
|
|
4
4
|
exports.uncompact = uncompact;
|
|
5
5
|
const json_1 = require("../../../util/json");
|
|
6
6
|
const lz_string_1 = require("lz-string");
|
|
7
|
+
/**
|
|
8
|
+
* Compacts an object into a UTF-16 compressed string.
|
|
9
|
+
* @see {@link uncompact}
|
|
10
|
+
*/
|
|
7
11
|
function compact(obj) {
|
|
8
12
|
return (0, lz_string_1.compressToUTF16)(JSON.stringify(obj, json_1.jsonReplacer));
|
|
9
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Uncompacts a UTF-16 compressed string into an object.
|
|
16
|
+
* @see {@link compact}
|
|
17
|
+
*/
|
|
10
18
|
function uncompact(buf) {
|
|
11
19
|
return JSON.parse((0, lz_string_1.decompressFromUTF16)(buf));
|
|
12
20
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Socket } from './net';
|
|
2
|
-
import type
|
|
3
|
-
import { DEFAULT_SLICING_PIPELINE } from '../../../core/steps/pipeline/default-pipelines';
|
|
2
|
+
import { type TREE_SITTER_DATAFLOW_PIPELINE, DEFAULT_SLICING_PIPELINE } from '../../../core/steps/pipeline/default-pipelines';
|
|
4
3
|
import type { PipelineOutput } from '../../../core/steps/pipeline/pipeline';
|
|
5
4
|
import type { DeepPartial } from 'ts-essentials';
|
|
6
5
|
import type { KnownParser, ParseStepOutput } from '../../../r-bridge/parser';
|
|
@@ -28,7 +27,9 @@ export declare class FlowRServerConnection {
|
|
|
28
27
|
private createAnalyzerForRequest;
|
|
29
28
|
private handleSliceRequest;
|
|
30
29
|
private handleRepl;
|
|
31
|
-
private handleLineageRequest;
|
|
32
30
|
private handleQueryRequest;
|
|
33
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Sanitizes analysis results by removing any potentially sensitive information like id maps.
|
|
34
|
+
*/
|
|
34
35
|
export declare function sanitizeAnalysisResults(parse: ParseStepOutput<string | Tree>, normalize: NormalizedAst, dataflow: DataflowInformation): DeepPartial<PipelineOutput<typeof DEFAULT_SLICING_PIPELINE | typeof TREE_SITTER_DATAFLOW_PIPELINE>>;
|
|
@@ -56,8 +56,6 @@ const default_pipelines_1 = require("../../../core/steps/pipeline/default-pipeli
|
|
|
56
56
|
const graph_1 = require("../../../dataflow/graph/graph");
|
|
57
57
|
const tmp = __importStar(require("tmp"));
|
|
58
58
|
const fs_1 = __importDefault(require("fs"));
|
|
59
|
-
const message_lineage_1 = require("./messages/message-lineage");
|
|
60
|
-
const repl_lineage_1 = require("../commands/repl-lineage");
|
|
61
59
|
const message_query_1 = require("./messages/message-query");
|
|
62
60
|
const compact_1 = require("./compact");
|
|
63
61
|
const _00_slice_1 = require("../../../core/steps/all/static-slicing/00-slice");
|
|
@@ -116,9 +114,6 @@ class FlowRServerConnection {
|
|
|
116
114
|
case 'request-repl-execution':
|
|
117
115
|
this.handleRepl(request.message);
|
|
118
116
|
break;
|
|
119
|
-
case 'request-lineage':
|
|
120
|
-
void this.handleLineageRequest(request.message);
|
|
121
|
-
break;
|
|
122
117
|
case 'request-query':
|
|
123
118
|
this.handleQueryRequest(request.message);
|
|
124
119
|
break;
|
|
@@ -219,10 +214,11 @@ class FlowRServerConnection {
|
|
|
219
214
|
else {
|
|
220
215
|
throw new Error('Either content or filepath must be defined.');
|
|
221
216
|
}
|
|
222
|
-
const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder(
|
|
217
|
+
const analyzer = await new flowr_analyzer_builder_1.FlowrAnalyzerBuilder()
|
|
223
218
|
.setConfig(this.config)
|
|
224
219
|
.setParser(this.parser)
|
|
225
220
|
.build();
|
|
221
|
+
analyzer.addRequest(request);
|
|
226
222
|
if (message.filetoken) {
|
|
227
223
|
this.logger.info(`Storing file token ${message.filetoken}`);
|
|
228
224
|
this.fileMap.set(message.filetoken, {
|
|
@@ -302,32 +298,6 @@ class FlowRServerConnection {
|
|
|
302
298
|
});
|
|
303
299
|
});
|
|
304
300
|
}
|
|
305
|
-
async handleLineageRequest(base) {
|
|
306
|
-
const requestResult = (0, validate_1.validateMessage)(base, message_lineage_1.requestLineageMessage);
|
|
307
|
-
if (requestResult.type === 'error') {
|
|
308
|
-
(0, validate_1.answerForValidationError)(this.socket, requestResult, base.id);
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
const request = requestResult.message;
|
|
312
|
-
this.logger.info(`[${this.name}] Received lineage request for criterion ${request.criterion}`);
|
|
313
|
-
const fileInformation = this.fileMap.get(request.filetoken);
|
|
314
|
-
if (!fileInformation) {
|
|
315
|
-
(0, send_1.sendMessage)(this.socket, {
|
|
316
|
-
id: request.id,
|
|
317
|
-
type: 'error',
|
|
318
|
-
fatal: false,
|
|
319
|
-
reason: `The file token ${request.filetoken} has never been analyzed.`
|
|
320
|
-
});
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
const analyzer = fileInformation.analyzer;
|
|
324
|
-
const lineageIds = (0, repl_lineage_1.getLineage)(request.criterion, (await analyzer.dataflow()).graph, (await analyzer.normalize()).idMap);
|
|
325
|
-
(0, send_1.sendMessage)(this.socket, {
|
|
326
|
-
type: 'response-lineage',
|
|
327
|
-
id: request.id,
|
|
328
|
-
lineage: [...lineageIds]
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
301
|
handleQueryRequest(base) {
|
|
332
302
|
const requestResult = (0, validate_1.validateMessage)(base, message_query_1.requestQueryMessage);
|
|
333
303
|
if (requestResult.type === 'error') {
|
|
@@ -364,6 +334,9 @@ class FlowRServerConnection {
|
|
|
364
334
|
}
|
|
365
335
|
}
|
|
366
336
|
exports.FlowRServerConnection = FlowRServerConnection;
|
|
337
|
+
/**
|
|
338
|
+
* Sanitizes analysis results by removing any potentially sensitive information like id maps.
|
|
339
|
+
*/
|
|
367
340
|
function sanitizeAnalysisResults(parse, normalize, dataflow) {
|
|
368
341
|
return {
|
|
369
342
|
parse: parse,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides the capability of connecting to the repl of flowr via messages.
|
|
3
|
-
*
|
|
4
3
|
* @module
|
|
5
4
|
*/
|
|
6
5
|
import * as Joi from 'joi';
|
|
@@ -9,7 +8,6 @@ import type { FileAnalysisRequestMessage, FileAnalysisResponseMessageJson } from
|
|
|
9
8
|
import type { ExecuteEndMessage, ExecuteIntermediateResponseMessage, ExecuteRequestMessage } from './message-repl';
|
|
10
9
|
import type { SliceRequestMessage, SliceResponseMessage } from './message-slice';
|
|
11
10
|
import type { FlowrErrorMessage } from './message-error';
|
|
12
|
-
import type { LineageRequestMessage, LineageResponseMessage } from './message-lineage';
|
|
13
11
|
import type { QueryRequestMessage, QueryResponseMessage } from './message-query';
|
|
14
12
|
/**
|
|
15
13
|
* If you send a message it must *not* contain a newline but the message must be terminated by a newline.
|
|
@@ -34,4 +32,4 @@ export declare const baseMessage: MessageDefinition<IdMessageBase>;
|
|
|
34
32
|
/**
|
|
35
33
|
* This is the main message type that should be used to represent a message in *flowR*
|
|
36
34
|
*/
|
|
37
|
-
export type FlowrMessage = FlowrHelloResponseMessage | FileAnalysisRequestMessage | FileAnalysisResponseMessageJson | ExecuteRequestMessage | ExecuteIntermediateResponseMessage | ExecuteEndMessage | SliceRequestMessage | SliceResponseMessage |
|
|
35
|
+
export type FlowrMessage = FlowrHelloResponseMessage | FileAnalysisRequestMessage | FileAnalysisResponseMessageJson | ExecuteRequestMessage | ExecuteIntermediateResponseMessage | ExecuteEndMessage | SliceRequestMessage | SliceResponseMessage | QueryRequestMessage | QueryResponseMessage | FlowrErrorMessage;
|
|
@@ -42,9 +42,7 @@ export declare const requestAnalysisMessage: MessageDefinition<FileAnalysisReque
|
|
|
42
42
|
*
|
|
43
43
|
* The `idMap` of the normalization step (see {@link NormalizedAst}) is not serialized as it would essentially
|
|
44
44
|
* repeat the complete normalized AST, you have to re-create it yourself if you require it.
|
|
45
|
-
*
|
|
46
45
|
* @note The serialization of maps and sets is controlled by the {@link jsonReplacer} as part of {@link sendMessage}.
|
|
47
|
-
*
|
|
48
46
|
* @see {@link FileAnalysisResponseMessageNQuads}
|
|
49
47
|
* @see {@link FileAnalysisResponseMessageCompact}
|
|
50
48
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IdMessageBase, MessageDefinition } from './all-messages';
|
|
2
|
-
import type
|
|
2
|
+
import { type Queries, type QueryResults, type SupportedQueryTypes } from '../../../../queries/query';
|
|
3
3
|
export interface QueryRequestMessage extends IdMessageBase {
|
|
4
4
|
type: 'request-query';
|
|
5
5
|
/** The {@link FileAnalysisRequestMessage#filetoken} of the file/data */
|