@eagleoutice/flowr 2.6.0 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -45
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
- package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +171 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
- package/abstract-interpretation/data-frame/shape-inference.js +7 -9
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +3 -7
- package/benchmark/slicer.js +14 -19
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +12 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
- package/benchmark/summarizer/second-phase/graph.js +3 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/flowr.js +8 -4
- package/cli/repl/commands/repl-cfg.js +4 -4
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +15 -4
- package/cli/repl/commands/repl-dataflow.js +4 -4
- package/cli/repl/commands/repl-execute.d.ts +5 -1
- package/cli/repl/commands/repl-execute.js +12 -8
- package/cli/repl/commands/repl-main.d.ts +17 -14
- package/cli/repl/commands/repl-normalize.js +2 -2
- package/cli/repl/commands/repl-parse.js +4 -3
- package/cli/repl/commands/repl-query.js +18 -7
- package/cli/repl/commands/repl-quit.js +1 -1
- package/cli/repl/commands/repl-version.d.ts +1 -16
- package/cli/repl/commands/repl-version.js +2 -19
- package/cli/repl/core.d.ts +32 -14
- package/cli/repl/core.js +38 -35
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +8 -2
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +9 -33
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-hello.d.ts +1 -1
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/server.js +2 -2
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +3 -0
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/config.d.ts +17 -3
- package/config.js +15 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +3 -6
- package/control-flow/extract-cfg.js +0 -3
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +0 -2
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +0 -3
- package/control-flow/useless-loop.js +2 -5
- package/core/pipeline-executor.d.ts +8 -16
- package/core/pipeline-executor.js +9 -18
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +20 -0
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -0
- package/core/steps/all/core/10-normalize.js +3 -0
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +29 -13
- package/core/steps/pipeline/default-pipelines.js +0 -4
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +12 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +9 -0
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +4 -1
- package/dataflow/environments/overwrite.js +3 -0
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +4 -1
- package/dataflow/environments/scoping.js +3 -0
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +13 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +3 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +16 -1
- package/dataflow/eval/values/r-value.js +14 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +10 -1
- package/dataflow/eval/values/string/string-constants.js +9 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +5 -2
- package/dataflow/extractor.js +7 -5
- package/dataflow/fn/higher-order-function.d.ts +9 -0
- package/dataflow/fn/higher-order-function.js +75 -0
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +6 -19
- package/dataflow/graph/graph.js +4 -15
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +6 -0
- package/dataflow/graph/unknown-replacement.js +6 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +9 -10
- package/dataflow/info.js +6 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +23 -7
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +6 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +3 -0
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
- package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
- package/dataflow/processor.d.ts +0 -1
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +78 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
- package/documentation/data/faq/wiki-faq-store.js +75 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +4 -63
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
- package/documentation/doc-util/doc-benchmarks.js +12 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +9 -0
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +7 -1
- package/documentation/doc-util/doc-dfg.js +9 -0
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +0 -1
- package/documentation/doc-util/doc-escape.js +0 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +6 -0
- package/documentation/doc-util/doc-general.js +6 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
- package/documentation/doc-util/doc-normalized-ast.js +6 -0
- package/documentation/doc-util/doc-query.d.ts +15 -0
- package/documentation/doc-util/doc-query.js +17 -2
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +11 -2
- package/documentation/doc-util/doc-search.d.ts +15 -0
- package/documentation/doc-util/doc-search.js +17 -2
- package/documentation/doc-util/doc-server-message.d.ts +13 -1
- package/documentation/doc-util/doc-server-message.js +13 -1
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +42 -0
- package/documentation/doc-util/doc-types.js +42 -0
- package/documentation/print-analyzer-wiki.js +4 -0
- package/documentation/print-core-wiki.d.ts +3 -0
- package/documentation/print-core-wiki.js +5 -2
- package/documentation/print-dataflow-graph-wiki.js +7 -7
- package/documentation/print-faq-wiki.js +3 -75
- package/documentation/print-interface-wiki.js +1 -1
- package/documentation/print-onboarding-wiki.js +1 -1
- package/documentation/print-query-wiki.js +24 -34
- package/documentation/print-readme.js +106 -1
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +3 -0
- package/linter/linter-format.d.ts +8 -0
- package/linter/linter-format.js +8 -0
- package/linter/rules/absolute-path.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -1
- package/linter/rules/file-path-validity.d.ts +1 -2
- package/linter/rules/function-finder-util.d.ts +1 -2
- package/linter/rules/naming-convention.d.ts +13 -2
- package/linter/rules/naming-convention.js +13 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -2
- package/linter/rules/unused-definition.d.ts +2 -3
- package/linter/rules/useless-loop.d.ts +1 -2
- package/package.json +2 -2
- package/project/cache/flowr-analyzer-cache.d.ts +8 -14
- package/project/cache/flowr-analyzer-cache.js +21 -19
- package/project/cfg-kind.d.ts +17 -0
- package/project/cfg-kind.js +22 -0
- package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
- package/project/context/flowr-analyzer-context.d.ts +9 -6
- package/project/context/flowr-analyzer-context.js +11 -0
- package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
- package/project/context/flowr-analyzer-dependencies-context.js +4 -0
- package/project/context/flowr-analyzer-files-context.d.ts +3 -4
- package/project/context/flowr-analyzer-files-context.js +4 -0
- package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
- package/project/context/flowr-analyzer-loading-order-context.js +6 -0
- package/project/context/flowr-file.d.ts +0 -1
- package/project/flowr-analyzer-builder.d.ts +1 -3
- package/project/flowr-analyzer-builder.js +5 -6
- package/project/flowr-analyzer.d.ts +42 -32
- package/project/flowr-analyzer.js +14 -8
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +5 -1
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +6 -3
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +5 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +6 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +67 -0
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +3 -0
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +91 -53
- package/queries/query.js +37 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/model/type.js +4 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
- package/r-bridge/parser.d.ts +30 -2
- package/r-bridge/retriever.d.ts +16 -1
- package/r-bridge/retriever.js +15 -0
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +1 -2
- package/reconstruct/reconstruct.d.ts +1 -3
- package/reconstruct/reconstruct.js +0 -2
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +3 -3
- package/search/search-executor/search-enrichers.d.ts +9 -6
- package/search/search-executor/search-enrichers.js +5 -1
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +49 -2
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +10 -10
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +4 -2
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +1 -2
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +52 -2
- package/util/assert.js +52 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +11 -11
- package/util/files.js +10 -10
- package/util/formats/adapter.d.ts +9 -0
- package/util/formats/adapter.js +9 -0
- package/util/formats/adapters/rmd-adapter.d.ts +10 -1
- package/util/formats/adapters/rmd-adapter.js +10 -1
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +3 -0
- package/util/mermaid/ast.js +3 -0
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +11 -2
- package/util/r-value.js +23 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +26 -0
- package/util/version.js +37 -1
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -67
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
3
|
-
import type { FlowrConfigOptions } from '../../../config';
|
|
4
|
-
import type { FlowrAnalysisProvider } from '../../../project/flowr-analyzer';
|
|
1
|
+
import { type OutputFormatter } from '../../../util/text/ansi';
|
|
2
|
+
import type { FlowrAnalysisProvider, ReadonlyFlowrAnalysisProvider } from '../../../project/flowr-analyzer';
|
|
5
3
|
/**
|
|
6
4
|
* Defines the main interface for output of the repl.
|
|
7
5
|
* This allows us to redirect it (e.g., in the case of a server connection or tests).
|
|
8
6
|
*
|
|
9
7
|
* The formatter allows to dynamically change the use of ansi escape sequences (see {@link OutputFormatter})
|
|
10
|
-
*
|
|
11
8
|
* @see standardReplOutput
|
|
12
9
|
*/
|
|
13
10
|
export interface ReplOutput {
|
|
@@ -26,9 +23,8 @@ export declare const standardReplOutput: ReplOutput;
|
|
|
26
23
|
export interface ReplCommandInformation {
|
|
27
24
|
output: ReplOutput;
|
|
28
25
|
allowRSessionAccess: boolean;
|
|
29
|
-
|
|
26
|
+
analyzer: ReadonlyFlowrAnalysisProvider;
|
|
30
27
|
remainingLine: string;
|
|
31
|
-
config: FlowrConfigOptions;
|
|
32
28
|
}
|
|
33
29
|
/**
|
|
34
30
|
* Information passed to each {@link ReplCodeCommand#fn}.
|
|
@@ -54,28 +50,35 @@ export interface ReplBaseCommand {
|
|
|
54
50
|
usageExample: string;
|
|
55
51
|
}
|
|
56
52
|
export interface ReplCommand extends ReplBaseCommand {
|
|
57
|
-
|
|
53
|
+
isCodeCommand: false;
|
|
58
54
|
/**
|
|
59
55
|
* Function to execute when the command is invoked, it must not write to the command line but instead use the output handler.
|
|
60
56
|
* Furthermore, it has to obey the formatter defined in the {@link ReplOutput}.
|
|
61
57
|
*/
|
|
62
58
|
fn: (info: ReplCommandInformation) => Promise<void> | void;
|
|
63
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Result of parsing a REPL code command line.
|
|
62
|
+
* `rCode` may be undefined, in which case the R code of a previous REPL command will be re-used.
|
|
63
|
+
*/
|
|
64
|
+
interface ParsedReplLine {
|
|
65
|
+
rCode: string | undefined;
|
|
66
|
+
remaining: string[];
|
|
67
|
+
}
|
|
64
68
|
/**
|
|
65
69
|
* Repl command that uses the {@link FlowrAnalyzer}
|
|
66
70
|
*/
|
|
67
71
|
export interface ReplCodeCommand extends ReplBaseCommand {
|
|
68
|
-
|
|
72
|
+
isCodeCommand: true;
|
|
69
73
|
/**
|
|
70
74
|
* Function to execute when the command is invoked, it must not write to the command line but instead use the output handler.
|
|
71
75
|
* Furthermore, it has to obey the formatter defined in the {@link ReplOutput}.
|
|
72
76
|
*/
|
|
73
77
|
fn: (info: ReplCodeCommandInformation) => Promise<void> | void;
|
|
74
78
|
/**
|
|
75
|
-
* Argument parser function which handles the input given after the repl command
|
|
79
|
+
* Argument parser function which handles the input given after the repl command.
|
|
80
|
+
* If no R code is returned, the input R code of a previous REPL command will be re-used for processing the current REPL command.
|
|
76
81
|
*/
|
|
77
|
-
argsParser: (remainingLine: string) =>
|
|
78
|
-
input: string;
|
|
79
|
-
remaining: string[];
|
|
80
|
-
};
|
|
82
|
+
argsParser: (remainingLine: string) => ParsedReplLine;
|
|
81
83
|
}
|
|
84
|
+
export {};
|
|
@@ -43,7 +43,7 @@ function formatInfo(out, type, meta) {
|
|
|
43
43
|
}
|
|
44
44
|
exports.normalizeCommand = {
|
|
45
45
|
description: `Get mermaid code for the normalized AST of R code, start with '${retriever_1.fileProtocol}' to indicate a file`,
|
|
46
|
-
|
|
46
|
+
isCodeCommand: true,
|
|
47
47
|
usageExample: ':normalize',
|
|
48
48
|
aliases: ['n'],
|
|
49
49
|
script: false,
|
|
@@ -62,7 +62,7 @@ exports.normalizeCommand = {
|
|
|
62
62
|
};
|
|
63
63
|
exports.normalizeStarCommand = {
|
|
64
64
|
description: 'Returns the URL to mermaid.live',
|
|
65
|
-
|
|
65
|
+
isCodeCommand: true,
|
|
66
66
|
usageExample: ':normalize*',
|
|
67
67
|
aliases: ['n*'],
|
|
68
68
|
script: false,
|
|
@@ -126,20 +126,21 @@ function depthListToTextTree(list, f) {
|
|
|
126
126
|
}
|
|
127
127
|
exports.parseCommand = {
|
|
128
128
|
description: `Prints ASCII Art of the parsed, unmodified AST, start with '${retriever_1.fileProtocol}' to indicate a file`,
|
|
129
|
-
|
|
129
|
+
isCodeCommand: true,
|
|
130
130
|
usageExample: ':parse',
|
|
131
131
|
aliases: ['p'],
|
|
132
132
|
script: false,
|
|
133
133
|
argsParser: (line) => {
|
|
134
134
|
return {
|
|
135
135
|
// Threat the whole input line as R code
|
|
136
|
-
|
|
136
|
+
rCode: (0, retriever_1.removeRQuotes)(line.trim()),
|
|
137
137
|
remaining: []
|
|
138
138
|
};
|
|
139
139
|
},
|
|
140
140
|
fn: async ({ output, analyzer }) => {
|
|
141
141
|
const result = await analyzer.parse();
|
|
142
|
-
|
|
142
|
+
const parserInfo = analyzer.parserInformation();
|
|
143
|
+
if (parserInfo.name === 'r-shell') {
|
|
143
144
|
const object = (0, format_1.convertPreparedParsedData)((0, format_1.prepareParsedData)(result.parsed));
|
|
144
145
|
output.stdout(depthListToTextTree(toDepthMap(object), output.formatter));
|
|
145
146
|
}
|
|
@@ -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((0, retriever_1.requestFromInput)(input));
|
|
69
|
+
}
|
|
61
70
|
return {
|
|
62
71
|
query: await (0, query_1.executeQueries)({
|
|
63
72
|
analyzer,
|
|
@@ -68,19 +77,19 @@ 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
|
}
|
|
81
90
|
exports.queryCommand = {
|
|
82
91
|
description: `Query the given R code, start with '${retriever_1.fileProtocol}' to indicate a file. The query is to be a valid query in json format (use 'help' to get more information).`,
|
|
83
|
-
|
|
92
|
+
isCodeCommand: true,
|
|
84
93
|
usageExample: ':query "<query>" <code>',
|
|
85
94
|
aliases: [],
|
|
86
95
|
script: false,
|
|
@@ -96,7 +105,7 @@ exports.queryCommand = {
|
|
|
96
105
|
};
|
|
97
106
|
exports.queryStarCommand = {
|
|
98
107
|
description: 'Similar to query, but returns the output in json format.',
|
|
99
|
-
|
|
108
|
+
isCodeCommand: true,
|
|
100
109
|
usageExample: ':query* <query> <code>',
|
|
101
110
|
aliases: [],
|
|
102
111
|
script: false,
|
|
@@ -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
|
};
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
import type { ReplCommand
|
|
2
|
-
import type { KnownParser } from '../../../r-bridge/parser';
|
|
3
|
-
type Version = `${number}.${number}.${number}`;
|
|
4
|
-
/**
|
|
5
|
-
* Describes the version of flowR and the used R interpreter.
|
|
6
|
-
*/
|
|
7
|
-
export interface VersionInformation {
|
|
8
|
-
/** The version of flowR */
|
|
9
|
-
flowr: Version;
|
|
10
|
-
/** The version of R identified by the underlying {@link RShell} */
|
|
11
|
-
r: Version | 'unknown' | 'none';
|
|
12
|
-
engine: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function retrieveVersionInformation(parser: KnownParser): Promise<VersionInformation>;
|
|
15
|
-
export declare function printVersionInformation(output: ReplOutput, parser: KnownParser): Promise<void>;
|
|
1
|
+
import type { ReplCommand } from './repl-main';
|
|
16
2
|
export declare const versionCommand: ReplCommand;
|
|
17
|
-
export {};
|
|
@@ -1,30 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.versionCommand = void 0;
|
|
4
|
-
exports.retrieveVersionInformation = retrieveVersionInformation;
|
|
5
|
-
exports.printVersionInformation = printVersionInformation;
|
|
6
4
|
const version_1 = require("../../../util/version");
|
|
7
|
-
const assert_1 = require("../../../util/assert");
|
|
8
|
-
const versionRegex = /^\d+\.\d+\.\d+/m;
|
|
9
|
-
async function retrieveVersionInformation(parser) {
|
|
10
|
-
const flowr = (0, version_1.flowrVersion)().toString();
|
|
11
|
-
const r = await parser.rVersion();
|
|
12
|
-
(0, assert_1.guard)(versionRegex.test(flowr), `flowR version ${flowr} does not match the expected format!`);
|
|
13
|
-
(0, assert_1.guard)(r === 'unknown' || r === 'none' || versionRegex.test(r), `R version ${r} does not match the expected format!`);
|
|
14
|
-
return { flowr: flowr, r: r, engine: parser.name };
|
|
15
|
-
}
|
|
16
|
-
async function printVersionInformation(output, parser) {
|
|
17
|
-
const { flowr, r, engine } = await retrieveVersionInformation(parser);
|
|
18
|
-
output.stdout(`Engine: ${engine}`);
|
|
19
|
-
output.stdout(` flowR: ${flowr}`);
|
|
20
|
-
output.stdout(` R: ${r}`);
|
|
21
|
-
}
|
|
22
5
|
exports.versionCommand = {
|
|
23
6
|
description: 'Prints the version of flowR as well as the current version of R',
|
|
24
|
-
|
|
7
|
+
isCodeCommand: false,
|
|
25
8
|
aliases: [],
|
|
26
9
|
usageExample: ':version',
|
|
27
10
|
script: false,
|
|
28
|
-
fn: ({ output,
|
|
11
|
+
fn: ({ output, analyzer }) => (0, version_1.printVersionInformation)(output, analyzer)
|
|
29
12
|
};
|
|
30
13
|
//# sourceMappingURL=repl-version.js.map
|
package/cli/repl/core.d.ts
CHANGED
|
@@ -1,36 +1,54 @@
|
|
|
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
|
-
import type { KnownParser } from '../../r-bridge/parser';
|
|
5
4
|
import type { FlowrConfigOptions } from '../../config';
|
|
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
|
-
* @param config - flowr Config
|
|
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.
|
|
21
|
-
* @param parser - The {@link RShell} or {@link TreeSitterExecutor} to use (see {@link repl}).
|
|
22
38
|
* @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
|
|
23
39
|
*/
|
|
24
|
-
export declare function replProcessAnswer(
|
|
40
|
+
export declare function replProcessAnswer(analyzer: FlowrAnalyzer, output: ReplOutput, expr: string, allowRSessionAccess: boolean): Promise<void>;
|
|
25
41
|
/**
|
|
26
42
|
* Options for the {@link repl} function.
|
|
27
43
|
*/
|
|
28
44
|
export interface FlowrReplOptions extends MergeableRecord {
|
|
29
|
-
/**
|
|
30
|
-
|
|
45
|
+
/**
|
|
46
|
+
* The flowR analyzer to use.
|
|
47
|
+
*/
|
|
48
|
+
readonly analyzer: FlowrAnalyzer;
|
|
31
49
|
/**
|
|
32
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.
|
|
33
|
-
|
|
51
|
+
* If you want to provide a custom one but use the same `completer`, refer to {@link replCompleter}.
|
|
34
52
|
*/
|
|
35
53
|
readonly rl?: readline.Interface;
|
|
36
54
|
/** Defines two methods that every function in the repl uses to output its data. */
|
|
@@ -46,12 +64,12 @@ export interface FlowrReplOptions extends MergeableRecord {
|
|
|
46
64
|
* The repl allows for two kinds of inputs:
|
|
47
65
|
* - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
|
|
48
66
|
* - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
|
|
49
|
-
*
|
|
50
67
|
* @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
|
|
51
|
-
* @param config - The flowr config
|
|
52
68
|
*
|
|
53
69
|
* For the execution, this function makes use of {@link replProcessAnswer}.
|
|
54
|
-
*
|
|
55
70
|
*/
|
|
56
|
-
export declare function repl(
|
|
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");
|
|
@@ -58,11 +57,9 @@ const repl_commands_1 = require("./commands/repl-commands");
|
|
|
58
57
|
const scripts_info_1 = require("../common/scripts-info");
|
|
59
58
|
const retriever_1 = require("../../r-bridge/retriever");
|
|
60
59
|
const repl_main_1 = require("./commands/repl-main");
|
|
61
|
-
const shell_1 = require("../../r-bridge/shell");
|
|
62
60
|
const log_1 = require("../../util/log");
|
|
63
|
-
const config_1 = require("../../config");
|
|
64
61
|
const query_1 = require("../../queries/query");
|
|
65
|
-
const
|
|
62
|
+
const strings_1 = require("../../util/text/strings");
|
|
66
63
|
let _replCompleterKeywords = undefined;
|
|
67
64
|
function replCompleterKeywords() {
|
|
68
65
|
if (_replCompleterKeywords === undefined) {
|
|
@@ -82,44 +79,50 @@ function replCompleter(line, config) {
|
|
|
82
79
|
if (splitLine.length > 1 || startingNewArg) {
|
|
83
80
|
const commandNameColon = replCompleterKeywords().find(k => splitLine[0] === k);
|
|
84
81
|
if (commandNameColon) {
|
|
85
|
-
|
|
82
|
+
let completions = [];
|
|
83
|
+
let currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
|
|
86
84
|
const commandName = commandNameColon.slice(1);
|
|
87
85
|
const cmd = (0, repl_commands_1.getCommand)(commandName);
|
|
88
86
|
if (cmd?.script === true) {
|
|
89
87
|
// autocomplete script arguments
|
|
90
88
|
const options = scripts_info_1.scripts[commandName].options;
|
|
91
|
-
completions.
|
|
89
|
+
completions = completions.concat((0, scripts_info_1.getValidOptionsForCompletion)(options, splitLine).map(o => `${o} `));
|
|
92
90
|
}
|
|
93
91
|
else if (commandName.startsWith('query')) {
|
|
94
|
-
completions
|
|
92
|
+
const { completions: queryCompletions, argumentPart: splitArg } = replQueryCompleter(splitLine, startingNewArg, config);
|
|
93
|
+
if (splitArg !== undefined) {
|
|
94
|
+
currentArg = splitArg;
|
|
95
|
+
}
|
|
96
|
+
completions = completions.concat(queryCompletions);
|
|
95
97
|
}
|
|
96
98
|
else {
|
|
97
99
|
// autocomplete command arguments (specifically, autocomplete the file:// protocol)
|
|
98
100
|
completions.push(retriever_1.fileProtocol);
|
|
99
101
|
}
|
|
100
|
-
const currentArg = startingNewArg ? '' : splitLine[splitLine.length - 1];
|
|
101
102
|
return [completions.filter(a => a.startsWith(currentArg)), currentArg];
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
// if no command is already typed, just return all commands that match
|
|
105
106
|
return [replCompleterKeywords().filter(k => k.startsWith(line)).map(k => `${k} `), line];
|
|
106
107
|
}
|
|
107
|
-
function replQueryCompleter(splitLine, config) {
|
|
108
|
+
function replQueryCompleter(splitLine, startingNewArg, config) {
|
|
108
109
|
const nonEmpty = splitLine.slice(1).map(s => s.trim()).filter(s => s.length > 0);
|
|
109
110
|
const queryShorts = Object.keys(query_1.SupportedQueries).map(q => `@${q}`).concat(['help']);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
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} `) };
|
|
113
113
|
}
|
|
114
114
|
else {
|
|
115
115
|
const q = nonEmpty[0].slice(1);
|
|
116
116
|
const queryElement = query_1.SupportedQueries[q];
|
|
117
117
|
if (queryElement?.completer) {
|
|
118
|
-
|
|
118
|
+
return queryElement.completer(nonEmpty.slice(1), startingNewArg, config);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
return
|
|
121
|
+
return { completions: [] };
|
|
122
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Produces default readline options for the flowR REPL
|
|
125
|
+
*/
|
|
123
126
|
function makeDefaultReplReadline(config) {
|
|
124
127
|
return {
|
|
125
128
|
input: process.stdin,
|
|
@@ -131,13 +134,16 @@ function makeDefaultReplReadline(config) {
|
|
|
131
134
|
completer: (c) => replCompleter(c, config)
|
|
132
135
|
};
|
|
133
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Handles a string input for the REPL, returning the parsed string and any remaining input.
|
|
139
|
+
*/
|
|
134
140
|
function handleString(code) {
|
|
135
141
|
return {
|
|
136
|
-
|
|
142
|
+
rCode: code.length == 0 ? undefined : (0, strings_1.startAndEndsWith)(code, '"') ? JSON.parse(code) : code,
|
|
137
143
|
remaining: []
|
|
138
144
|
};
|
|
139
145
|
}
|
|
140
|
-
async function replProcessStatement(output, statement,
|
|
146
|
+
async function replProcessStatement(output, statement, analyzer, allowRSessionAccess) {
|
|
141
147
|
if (statement.startsWith(':')) {
|
|
142
148
|
const command = statement.slice(1).split(' ')[0].toLowerCase();
|
|
143
149
|
const processor = (0, repl_commands_1.getCommand)(command);
|
|
@@ -145,17 +151,16 @@ async function replProcessStatement(output, statement, parser, allowRSessionAcce
|
|
|
145
151
|
if (processor) {
|
|
146
152
|
try {
|
|
147
153
|
const remainingLine = statement.slice(command.length + 2).trim();
|
|
148
|
-
if (processor.
|
|
154
|
+
if (processor.isCodeCommand) {
|
|
149
155
|
const args = processor.argsParser(remainingLine);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
.
|
|
153
|
-
|
|
154
|
-
.build();
|
|
156
|
+
if (args.rCode) {
|
|
157
|
+
analyzer.reset();
|
|
158
|
+
analyzer.addRequest((0, retriever_1.requestFromInput)(args.rCode));
|
|
159
|
+
}
|
|
155
160
|
await processor.fn({ output, analyzer, remainingArgs: args.remaining });
|
|
156
161
|
}
|
|
157
162
|
else {
|
|
158
|
-
await processor.fn({ output,
|
|
163
|
+
await processor.fn({ output, analyzer, remainingLine, allowRSessionAccess });
|
|
159
164
|
}
|
|
160
165
|
}
|
|
161
166
|
catch (e) {
|
|
@@ -170,22 +175,20 @@ async function replProcessStatement(output, statement, parser, allowRSessionAcce
|
|
|
170
175
|
}
|
|
171
176
|
}
|
|
172
177
|
else {
|
|
173
|
-
await (0, repl_execute_1.tryExecuteRShellCommand)({ output,
|
|
178
|
+
await (0, repl_execute_1.tryExecuteRShellCommand)({ output, analyzer, remainingLine: statement, allowRSessionAccess });
|
|
174
179
|
}
|
|
175
180
|
}
|
|
176
181
|
/**
|
|
177
182
|
* This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
|
|
178
|
-
*
|
|
179
|
-
* @param config - flowr Config
|
|
183
|
+
* @param analyzer - The flowR analyzer to use.
|
|
180
184
|
* @param output - Defines two methods that every function in the repl uses to output its data.
|
|
181
185
|
* @param expr - The expression to process.
|
|
182
|
-
* @param parser - The {@link RShell} or {@link TreeSitterExecutor} to use (see {@link repl}).
|
|
183
186
|
* @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
|
|
184
187
|
*/
|
|
185
|
-
async function replProcessAnswer(
|
|
186
|
-
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false,
|
|
188
|
+
async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
|
|
189
|
+
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false, /^;\s*:/);
|
|
187
190
|
for (const statement of statements) {
|
|
188
|
-
await replProcessStatement(output, statement,
|
|
191
|
+
await replProcessStatement(output, statement.trim(), analyzer, allowRSessionAccess);
|
|
189
192
|
}
|
|
190
193
|
}
|
|
191
194
|
/**
|
|
@@ -194,14 +197,11 @@ async function replProcessAnswer(config, output, expr, parser, allowRSessionAcce
|
|
|
194
197
|
* The repl allows for two kinds of inputs:
|
|
195
198
|
* - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
|
|
196
199
|
* - Starting with anything else, indicating default R code to be directly executed. If you kill the underlying shell, that is on you! </li>
|
|
197
|
-
*
|
|
198
200
|
* @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
|
|
199
|
-
* @param config - The flowr config
|
|
200
201
|
*
|
|
201
202
|
* For the execution, this function makes use of {@link replProcessAnswer}.
|
|
202
|
-
*
|
|
203
203
|
*/
|
|
204
|
-
async function repl(
|
|
204
|
+
async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplReadline(analyzer.flowrConfig)), output = repl_main_1.standardReplOutput, historyFile = defaultHistoryFile, allowRSessionAccess = false }) {
|
|
205
205
|
if (historyFile) {
|
|
206
206
|
rl.on('history', h => fs_1.default.writeFileSync(historyFile, h.join('\n'), { encoding: 'utf-8' }));
|
|
207
207
|
}
|
|
@@ -210,7 +210,7 @@ async function repl(config, { parser = new shell_1.RShell((0, config_1.getEngine
|
|
|
210
210
|
await new Promise((resolve, reject) => {
|
|
211
211
|
rl.question((0, prompt_1.prompt)(), answer => {
|
|
212
212
|
rl.pause();
|
|
213
|
-
replProcessAnswer(
|
|
213
|
+
replProcessAnswer(analyzer, output, answer, allowRSessionAccess).then(() => {
|
|
214
214
|
rl.resume();
|
|
215
215
|
resolve();
|
|
216
216
|
}).catch(reject);
|
|
@@ -218,6 +218,9 @@ async function repl(config, { parser = new shell_1.RShell((0, config_1.getEngine
|
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Loads the REPL history from the given file.
|
|
223
|
+
*/
|
|
221
224
|
function loadReplHistory(historyFile) {
|
|
222
225
|
try {
|
|
223
226
|
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>;
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.versionReplString = versionReplString;
|
|
4
4
|
exports.printVersionRepl = printVersionRepl;
|
|
5
|
-
const
|
|
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
|
-
const version = await (0,
|
|
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
|
}
|