@eagleoutice/flowr 2.6.1 → 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 +131 -30
- 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 +15 -10
- 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/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +13 -2
- 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 +2 -2
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +28 -19
- 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 +3 -31
- 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 +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/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +47 -47
- 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 +4 -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 +11 -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 +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 +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 +1 -1
- 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 +6 -0
- 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 +5 -5
- 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 +4 -34
- package/documentation/print-readme.js +105 -0
- 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 +2 -9
- package/project/cache/flowr-analyzer-cache.js +0 -6
- package/project/context/flowr-analyzer-context.d.ts +3 -6
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +2 -4
- 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 +34 -25
- package/project/flowr-analyzer.js +10 -11
- 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 +3 -0
- 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 +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 +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 +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 +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 +85 -55
- package/queries/query.js +35 -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 +28 -7
- 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 +3 -0
- 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 +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/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/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
|
}
|
|
@@ -144,9 +153,9 @@ async function replProcessStatement(output, statement, analyzer, allowRSessionAc
|
|
|
144
153
|
const remainingLine = statement.slice(command.length + 2).trim();
|
|
145
154
|
if (processor.isCodeCommand) {
|
|
146
155
|
const args = processor.argsParser(remainingLine);
|
|
147
|
-
if (args.
|
|
156
|
+
if (args.rCode) {
|
|
148
157
|
analyzer.reset();
|
|
149
|
-
analyzer.
|
|
158
|
+
analyzer.addRequest((0, retriever_1.requestFromInput)(args.rCode));
|
|
150
159
|
}
|
|
151
160
|
await processor.fn({ output, analyzer, remainingArgs: args.remaining });
|
|
152
161
|
}
|
|
@@ -171,16 +180,15 @@ async function replProcessStatement(output, statement, analyzer, allowRSessionAc
|
|
|
171
180
|
}
|
|
172
181
|
/**
|
|
173
182
|
* This function interprets the given `expr` as a REPL command (see {@link repl} for more on the semantics).
|
|
174
|
-
*
|
|
175
183
|
* @param analyzer - The flowR analyzer to use.
|
|
176
184
|
* @param output - Defines two methods that every function in the repl uses to output its data.
|
|
177
185
|
* @param expr - The expression to process.
|
|
178
186
|
* @param allowRSessionAccess - If true, allows the execution of arbitrary R code.
|
|
179
187
|
*/
|
|
180
188
|
async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
|
|
181
|
-
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false,
|
|
189
|
+
const statements = (0, args_1.splitAtEscapeSensitive)(expr, false, /^;\s*:/);
|
|
182
190
|
for (const statement of statements) {
|
|
183
|
-
await replProcessStatement(output, statement, analyzer, allowRSessionAccess);
|
|
191
|
+
await replProcessStatement(output, statement.trim(), analyzer, allowRSessionAccess);
|
|
184
192
|
}
|
|
185
193
|
}
|
|
186
194
|
/**
|
|
@@ -189,11 +197,9 @@ async function replProcessAnswer(analyzer, output, expr, allowRSessionAccess) {
|
|
|
189
197
|
* The repl allows for two kinds of inputs:
|
|
190
198
|
* - Starting with a colon `:`, indicating a command (probe `:help`, and refer to {@link commands}) </li>
|
|
191
199
|
* - 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
200
|
* @param options - The options for the repl. See {@link FlowrReplOptions} for more information.
|
|
194
201
|
*
|
|
195
202
|
* For the execution, this function makes use of {@link replProcessAnswer}.
|
|
196
|
-
*
|
|
197
203
|
*/
|
|
198
204
|
async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplReadline(analyzer.flowrConfig)), output = repl_main_1.standardReplOutput, historyFile = defaultHistoryFile, allowRSessionAccess = false }) {
|
|
199
205
|
if (historyFile) {
|
|
@@ -212,6 +218,9 @@ async function repl({ analyzer, rl = readline.createInterface(makeDefaultReplRea
|
|
|
212
218
|
});
|
|
213
219
|
}
|
|
214
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Loads the REPL history from the given file.
|
|
223
|
+
*/
|
|
215
224
|
function loadReplHistory(historyFile) {
|
|
216
225
|
try {
|
|
217
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>;
|
|
@@ -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;
|
|
@@ -302,32 +297,6 @@ class FlowRServerConnection {
|
|
|
302
297
|
});
|
|
303
298
|
});
|
|
304
299
|
}
|
|
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
300
|
handleQueryRequest(base) {
|
|
332
301
|
const requestResult = (0, validate_1.validateMessage)(base, message_query_1.requestQueryMessage);
|
|
333
302
|
if (requestResult.type === 'error') {
|
|
@@ -364,6 +333,9 @@ class FlowRServerConnection {
|
|
|
364
333
|
}
|
|
365
334
|
}
|
|
366
335
|
exports.FlowRServerConnection = FlowRServerConnection;
|
|
336
|
+
/**
|
|
337
|
+
* Sanitizes analysis results by removing any potentially sensitive information like id maps.
|
|
338
|
+
*/
|
|
367
339
|
function sanitizeAnalysisResults(parse, normalize, dataflow) {
|
|
368
340
|
return {
|
|
369
341
|
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 */
|
|
@@ -3,7 +3,6 @@ import type { IdMessageBase, MessageDefinition } from './all-messages';
|
|
|
3
3
|
* Request the execution of the given expression as a REPL statement.
|
|
4
4
|
* We strongly recommend that you make use of a unique {@link IdMessageBase#id}
|
|
5
5
|
* in case the message responses happen in parallel.
|
|
6
|
-
*
|
|
7
6
|
* @see ExecuteIntermediateResponseMessage
|
|
8
7
|
* @see ExecuteEndMessage
|
|
9
8
|
*/
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { IdMessageBase } from './messages/all-messages';
|
|
2
2
|
import type { Socket } from './net';
|
|
3
|
+
/**
|
|
4
|
+
* Produce a new name for an unnamed socket connection
|
|
5
|
+
*/
|
|
3
6
|
export declare function getUnnamedSocketName(c: Socket): string;
|
|
7
|
+
/**
|
|
8
|
+
* Sends a message to the given socket
|
|
9
|
+
*/
|
|
4
10
|
export declare function sendMessage<T extends IdMessageBase>(c: Socket, message: T): void;
|
package/cli/repl/server/send.js
CHANGED
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getUnnamedSocketName = getUnnamedSocketName;
|
|
4
4
|
exports.sendMessage = sendMessage;
|
|
5
5
|
const json_1 = require("../../../util/json");
|
|
6
|
+
/**
|
|
7
|
+
* Produce a new name for an unnamed socket connection
|
|
8
|
+
*/
|
|
6
9
|
function getUnnamedSocketName(c) {
|
|
7
10
|
return `${c.remoteAddress ?? '?'}@${c.remotePort ?? '?'}`;
|
|
8
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Sends a message to the given socket
|
|
14
|
+
*/
|
|
9
15
|
function sendMessage(c, message) {
|
|
10
16
|
return (0, json_1.superBigJsonStringify)(message, '\n', msg => {
|
|
11
17
|
c.write(msg);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as Joi from 'joi';
|
|
2
|
-
import type
|
|
2
|
+
import { type FlowrMessage, type IdMessageBase, type MessageDefinition } from './messages/all-messages';
|
|
3
3
|
import type { Socket } from './net';
|
|
4
4
|
export interface ValidationErrorResult {
|
|
5
5
|
type: 'error';
|
|
@@ -10,6 +10,15 @@ export interface SuccessValidationResult<T extends IdMessageBase> {
|
|
|
10
10
|
message: T;
|
|
11
11
|
}
|
|
12
12
|
export type ValidationResult<T extends IdMessageBase> = SuccessValidationResult<T> | ValidationErrorResult;
|
|
13
|
+
/**
|
|
14
|
+
* Check that the serialized input is a valid base message.
|
|
15
|
+
*/
|
|
13
16
|
export declare function validateBaseMessageFormat(input: string): ValidationResult<IdMessageBase>;
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the given input matches the given message definition.
|
|
19
|
+
*/
|
|
14
20
|
export declare function validateMessage<T extends FlowrMessage | IdMessageBase>(input: IdMessageBase, def: MessageDefinition<T>): ValidationResult<T>;
|
|
21
|
+
/**
|
|
22
|
+
* Sends an error message to the given client indicating a validation error.
|
|
23
|
+
*/
|
|
15
24
|
export declare function answerForValidationError(client: Socket, result: ValidationErrorResult, id?: string): void;
|
|
@@ -5,6 +5,9 @@ exports.validateMessage = validateMessage;
|
|
|
5
5
|
exports.answerForValidationError = answerForValidationError;
|
|
6
6
|
const send_1 = require("./send");
|
|
7
7
|
const all_messages_1 = require("./messages/all-messages");
|
|
8
|
+
/**
|
|
9
|
+
* Check that the serialized input is a valid base message.
|
|
10
|
+
*/
|
|
8
11
|
function validateBaseMessageFormat(input) {
|
|
9
12
|
try {
|
|
10
13
|
return validateMessage(JSON.parse(input), all_messages_1.baseMessage);
|
|
@@ -13,6 +16,9 @@ function validateBaseMessageFormat(input) {
|
|
|
13
16
|
return { type: 'error', reason: e };
|
|
14
17
|
}
|
|
15
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Validates that the given input matches the given message definition.
|
|
21
|
+
*/
|
|
16
22
|
function validateMessage(input, def) {
|
|
17
23
|
try {
|
|
18
24
|
const result = def.schema.validate(input);
|
|
@@ -22,6 +28,9 @@ function validateMessage(input, def) {
|
|
|
22
28
|
return { type: 'error', reason: e };
|
|
23
29
|
}
|
|
24
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Sends an error message to the given client indicating a validation error.
|
|
33
|
+
*/
|
|
25
34
|
function answerForValidationError(client, result, id) {
|
|
26
35
|
(0, send_1.sendMessage)(client, {
|
|
27
36
|
type: 'error',
|
package/cli/run-script.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type StdioProcessor } from './repl/execute';
|
|
2
2
|
import { scripts } from './common/scripts-info';
|
|
3
3
|
/**
|
|
4
4
|
* Path-safe helper of {@link waitOnScript} for other flowR scripts.
|
|
5
|
-
*
|
|
6
5
|
* @see waitOnScript
|
|
7
6
|
*/
|
|
8
7
|
export declare function runScript(name: keyof typeof scripts, args: readonly string[], io?: StdioProcessor, exitOnError?: boolean): Promise<void>;
|
package/cli/run-script.js
CHANGED
|
@@ -9,7 +9,6 @@ const scripts_info_1 = require("./common/scripts-info");
|
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
/**
|
|
11
11
|
* Path-safe helper of {@link waitOnScript} for other flowR scripts.
|
|
12
|
-
*
|
|
13
12
|
* @see waitOnScript
|
|
14
13
|
*/
|
|
15
14
|
async function runScript(name, args, io, exitOnError = false) {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { StatsCliOptions } from '../statistics-app';
|
|
2
2
|
import type { FlowrConfigOptions } from '../../config';
|
|
3
|
+
/**
|
|
4
|
+
* The core function for the 'flowr stats' script.
|
|
5
|
+
*/
|
|
3
6
|
export declare function flowrScriptGetStats(options: StatsCliOptions, config: FlowrConfigOptions): Promise<void>;
|
|
@@ -57,6 +57,9 @@ async function collectFileArguments(options, verboseAdd, dumpJson, features) {
|
|
|
57
57
|
console.log(`Total: ${counter} files (${skipped} skipped with archive existing)`);
|
|
58
58
|
return files;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The core function for the 'flowr stats' script.
|
|
62
|
+
*/
|
|
60
63
|
async function flowrScriptGetStats(options, config) {
|
|
61
64
|
if (options.input.length === 0) {
|
|
62
65
|
console.error('No input files given. Nothing to do. See \'--help\' if this is an error.');
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { StatsHelperCliOptions } from '../statistics-helper-app';
|
|
2
|
-
import type
|
|
2
|
+
import { type FlowrConfigOptions } from '../../config';
|
|
3
|
+
/**
|
|
4
|
+
* Get statistics for a single file
|
|
5
|
+
*/
|
|
3
6
|
export declare function getStatsForSingleFile(options: StatsHelperCliOptions, config: FlowrConfigOptions): Promise<void>;
|
|
@@ -36,6 +36,9 @@ function compressFolder(folder, target) {
|
|
|
36
36
|
console.error('Error during compression:', e);
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Get statistics for a single file
|
|
41
|
+
*/
|
|
39
42
|
async function getStatsForSingleFile(options, config) {
|
|
40
43
|
if (options['no-ansi']) {
|
|
41
44
|
log_1.log.info('disabling ansi colors');
|