@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/benchmark/stopwatch.js
CHANGED
|
@@ -29,9 +29,9 @@ class Stopwatch {
|
|
|
29
29
|
class Measurements {
|
|
30
30
|
measurements = new Map();
|
|
31
31
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
* Start a timer for the given key, and guards that this is the first time this key is started.
|
|
33
|
+
* Call {@link IStoppableStopwatch#stop} on the returned stopwatch to stop the timer.
|
|
34
|
+
*/
|
|
35
35
|
start(key) {
|
|
36
36
|
// we guard *before* starting so there is no additional time penalty
|
|
37
37
|
(0, assert_1.guard)(!this.measurements.has(key), `already started stop watch for ${JSON.stringify(key)}`);
|
|
@@ -41,9 +41,9 @@ class Measurements {
|
|
|
41
41
|
return stopwatch;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
* Automatically call {@link Measurements#start | start} and the corresponding stop to measure the execution time of the given function.
|
|
45
|
+
* @see {@link measureAsync}
|
|
46
|
+
*/
|
|
47
47
|
measure(key, fn) {
|
|
48
48
|
const stopwatch = this.start(key);
|
|
49
49
|
const result = fn();
|
|
@@ -51,13 +51,11 @@ class Measurements {
|
|
|
51
51
|
return result;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
|
|
55
|
-
*
|
|
54
|
+
* Similar to {@link measure}, but await the promise as part of the measurement
|
|
56
55
|
* @param key - The key to write the resulting measurement to
|
|
57
56
|
* @param fn - The function to measure
|
|
58
|
-
*
|
|
59
|
-
|
|
60
|
-
*/
|
|
57
|
+
* @see measure
|
|
58
|
+
*/
|
|
61
59
|
async measureAsync(key, fn) {
|
|
62
60
|
const stopwatch = this.start(key);
|
|
63
61
|
const result = await fn();
|
|
@@ -65,8 +63,8 @@ class Measurements {
|
|
|
65
63
|
return result;
|
|
66
64
|
}
|
|
67
65
|
/**
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
* Retrieve all measure-results, requires that all stop-watches that have been started have also been stopped.
|
|
67
|
+
*/
|
|
70
68
|
get() {
|
|
71
69
|
const result = new Map();
|
|
72
70
|
for (const [key, stopwatch] of this.measurements) {
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processes a single run measurement line from the benchmark output.
|
|
3
|
+
*/
|
|
1
4
|
export declare function processRunMeasurement(line: Buffer, fileNum: number, lineNum: number, textOutputAppendPath: string, rawOutputPath: string): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Processes multiple summarized run measurement files and appends an overall summary to the given path.
|
|
7
|
+
*/
|
|
2
8
|
export declare function processSummarizedRunMeasurement(runNum: number, summarizedFiles: string[], appendPath: string): void;
|
|
@@ -12,6 +12,9 @@ const assert_1 = require("../../../util/assert");
|
|
|
12
12
|
const ansi_1 = require("../../../util/text/ansi");
|
|
13
13
|
const json_1 = require("../../../util/json");
|
|
14
14
|
const print_1 = require("../../stats/print");
|
|
15
|
+
/**
|
|
16
|
+
* Processes a single run measurement line from the benchmark output.
|
|
17
|
+
*/
|
|
15
18
|
async function processRunMeasurement(line, fileNum, lineNum, textOutputAppendPath, rawOutputPath) {
|
|
16
19
|
let got = JSON.parse(line.toString());
|
|
17
20
|
console.log(`[file ${fileNum}, line ${lineNum}] Summarize for ${got.filename}`);
|
|
@@ -54,6 +57,9 @@ async function processRunMeasurement(line, fileNum, lineNum, textOutputAppendPat
|
|
|
54
57
|
console.log(` - Append textual summary to ${textOutputAppendPath}`);
|
|
55
58
|
fs_1.default.appendFileSync(textOutputAppendPath, `${(0, print_1.stats2string)(summarized)}\n`);
|
|
56
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Processes multiple summarized run measurement files and appends an overall summary to the given path.
|
|
62
|
+
*/
|
|
57
63
|
function processSummarizedRunMeasurement(runNum, summarizedFiles, appendPath) {
|
|
58
64
|
console.log(`Summarizing all file statistics for run ${runNum}`);
|
|
59
65
|
const summaries = [];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Reduction, SummarizedSlicerStats, TimePerToken } from '../data';
|
|
2
|
-
import type
|
|
2
|
+
import { type SummarizedMeasurement } from '../../../util/summarizer';
|
|
3
3
|
import type { PerSliceStats, SlicerStats } from '../../stats/stats';
|
|
4
4
|
import type { SlicingCriteria } from '../../../slicing/criterion/parse';
|
|
5
5
|
import type { RShellEngineConfig } from '../../../config';
|
|
@@ -8,7 +8,19 @@ import type { RShellEngineConfig } from '../../../config';
|
|
|
8
8
|
* @see Slicer
|
|
9
9
|
*/
|
|
10
10
|
export declare function summarizeSlicerStats(stats: SlicerStats, report?: (criteria: SlicingCriteria, stats: PerSliceStats) => void, engineConf?: RShellEngineConfig): Promise<Readonly<SummarizedSlicerStats>>;
|
|
11
|
+
/**
|
|
12
|
+
* Summarizes the given measurements by calculating the min, max, median, mean, standard deviation, and total.
|
|
13
|
+
*/
|
|
11
14
|
export declare function summarizeSummarizedMeasurement(data: SummarizedMeasurement[]): SummarizedMeasurement;
|
|
15
|
+
/**
|
|
16
|
+
* Summarizes the given reductions of summarized measurements.
|
|
17
|
+
*/
|
|
12
18
|
export declare function summarizeSummarizedReductions(reductions: Reduction<SummarizedMeasurement>[]): Reduction<SummarizedMeasurement>;
|
|
19
|
+
/**
|
|
20
|
+
* Summarizes the given times per token by calculating the min, max, median, mean, and standard deviation for each measurement.
|
|
21
|
+
*/
|
|
13
22
|
export declare function summarizeSummarizedTimePerToken(times: TimePerToken[]): TimePerToken;
|
|
23
|
+
/**
|
|
24
|
+
* Summarizes the given times per token by calculating the min, max, median, mean, and standard deviation for each measurement.
|
|
25
|
+
*/
|
|
14
26
|
export declare function summarizeTimePerToken(times: TimePerToken<number>[]): TimePerToken;
|
|
@@ -299,6 +299,9 @@ function summarizePerOperationStats(nodeStats) {
|
|
|
299
299
|
}
|
|
300
300
|
return perOperationNumber;
|
|
301
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Summarizes the given measurements by calculating the min, max, median, mean, standard deviation, and total.
|
|
304
|
+
*/
|
|
302
305
|
function summarizeSummarizedMeasurement(data) {
|
|
303
306
|
data = data.filter(assert_1.isNotUndefined);
|
|
304
307
|
const min = Math.min(...data.map(d => d.min).filter(assert_1.isNotUndefined));
|
|
@@ -312,6 +315,9 @@ function summarizeSummarizedMeasurement(data) {
|
|
|
312
315
|
const total = (0, arrays_1.arraySum)(data.map(d => d.total).filter(assert_1.isNotUndefined));
|
|
313
316
|
return { min, max, median, mean, std, total };
|
|
314
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Summarizes the given reductions of summarized measurements.
|
|
320
|
+
*/
|
|
315
321
|
function summarizeSummarizedReductions(reductions) {
|
|
316
322
|
return {
|
|
317
323
|
numberOfDataflowNodes: summarizeSummarizedMeasurement(reductions.map(r => r.numberOfDataflowNodes)),
|
|
@@ -334,12 +340,18 @@ function summarizeReductions(reductions) {
|
|
|
334
340
|
numberOfDataflowNodes: (0, summarizer_1.summarizeMeasurement)(reductions.map(r => r.numberOfDataflowNodes).filter(assert_1.isNotUndefined))
|
|
335
341
|
};
|
|
336
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Summarizes the given times per token by calculating the min, max, median, mean, and standard deviation for each measurement.
|
|
345
|
+
*/
|
|
337
346
|
function summarizeSummarizedTimePerToken(times) {
|
|
338
347
|
return {
|
|
339
348
|
raw: summarizeSummarizedMeasurement(times.map(t => t.raw)),
|
|
340
349
|
normalized: summarizeSummarizedMeasurement(times.map(t => t.normalized)),
|
|
341
350
|
};
|
|
342
351
|
}
|
|
352
|
+
/**
|
|
353
|
+
* Summarizes the given times per token by calculating the min, max, median, mean, and standard deviation for each measurement.
|
|
354
|
+
*/
|
|
343
355
|
function summarizeTimePerToken(times) {
|
|
344
356
|
return {
|
|
345
357
|
raw: (0, summarizer_1.summarizeMeasurement)(times.map(t => t.raw)),
|
|
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.writeGraphOutput = writeGraphOutput;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const json_1 = require("../../../util/json");
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
9
12
|
function writeGraphOutput(ultimate, outputGraphPath) {
|
|
10
13
|
console.log(`Producing benchmark graph data (${outputGraphPath})...`);
|
|
11
14
|
const data = [];
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { SummarizedSlicerStats, UltimateSlicerStats } from '../data';
|
|
2
|
+
/**
|
|
3
|
+
* This big function summarizes multiple summarized stats into one ultimate stat.
|
|
4
|
+
*/
|
|
2
5
|
export declare function summarizeAllSummarizedStats(stats: SummarizedSlicerStats[]): UltimateSlicerStats;
|
|
6
|
+
/**
|
|
7
|
+
* This big function summarizes multiple ultimate stats into one.
|
|
8
|
+
*/
|
|
3
9
|
export declare function summarizeAllUltimateStats(stats: UltimateSlicerStats[]): UltimateSlicerStats;
|
|
10
|
+
/**
|
|
11
|
+
* Processes the next summary line.
|
|
12
|
+
*/
|
|
4
13
|
export declare function processNextSummary(line: Buffer, allSummarized: SummarizedSlicerStats[]): void;
|
|
14
|
+
/**
|
|
15
|
+
* Processes the next ultimate summary line.
|
|
16
|
+
*/
|
|
5
17
|
export declare function processNextUltimateSummary(line: Buffer, allSummarized: UltimateSlicerStats[]): void;
|
|
@@ -11,6 +11,9 @@ const assert_1 = require("../../../util/assert");
|
|
|
11
11
|
const stats_1 = require("../../stats/stats");
|
|
12
12
|
const semantics_1 = require("../../../abstract-interpretation/data-frame/semantics");
|
|
13
13
|
const arrays_1 = require("../../../util/collections/arrays");
|
|
14
|
+
/**
|
|
15
|
+
* This big function summarizes multiple summarized stats into one ultimate stat.
|
|
16
|
+
*/
|
|
14
17
|
function summarizeAllSummarizedStats(stats) {
|
|
15
18
|
const commonMeasurements = new defaultmap_1.DefaultMap(() => []);
|
|
16
19
|
const perSliceMeasurements = new defaultmap_1.DefaultMap(() => []);
|
|
@@ -144,6 +147,9 @@ function summarizeAllSummarizedStats(stats) {
|
|
|
144
147
|
} : undefined
|
|
145
148
|
};
|
|
146
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* This big function summarizes multiple ultimate stats into one.
|
|
152
|
+
*/
|
|
147
153
|
function summarizeAllUltimateStats(stats) {
|
|
148
154
|
return {
|
|
149
155
|
// these should be deterministic, so we don't technically need to use max, but we do just in case something unexpected happens :)
|
|
@@ -225,6 +231,9 @@ function summarizeAllUltimateStats(stats) {
|
|
|
225
231
|
} : undefined
|
|
226
232
|
};
|
|
227
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Processes the next summary line.
|
|
236
|
+
*/
|
|
228
237
|
function processNextSummary(line, allSummarized) {
|
|
229
238
|
let got = JSON.parse(line.toString());
|
|
230
239
|
got = {
|
|
@@ -251,6 +260,9 @@ function processNextSummary(line, allSummarized) {
|
|
|
251
260
|
};
|
|
252
261
|
allSummarized.push(got.summarize);
|
|
253
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Processes the next ultimate summary line.
|
|
265
|
+
*/
|
|
254
266
|
function processNextUltimateSummary(line, allSummarized) {
|
|
255
267
|
let got = JSON.parse(line.toString());
|
|
256
268
|
got = {
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
5
|
import type { UltimateSlicerStats } from './data';
|
|
6
|
-
import type
|
|
7
|
-
import { Summarizer } from '../../util/summarizer';
|
|
6
|
+
import { type CommonSummarizerConfiguration, Summarizer } from '../../util/summarizer';
|
|
8
7
|
export interface BenchmarkSummarizerConfiguration extends CommonSummarizerConfiguration {
|
|
9
8
|
/**
|
|
10
9
|
* If given, produce graph data output (e.g., for the benchmark visualization) to the given path
|
package/cli/benchmark-app.js
CHANGED
|
@@ -90,7 +90,6 @@ async function benchmark() {
|
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Collect all R files from the given paths.
|
|
93
|
-
*
|
|
94
93
|
* @param files - list of files to append to
|
|
95
94
|
* @param paths - list of paths to search for R files
|
|
96
95
|
* @param getBaseDir - function to get the base directory of a path
|
|
@@ -104,7 +103,6 @@ async function collectFiles(files, paths, getBaseDir) {
|
|
|
104
103
|
}
|
|
105
104
|
/**
|
|
106
105
|
* Find the common base directory of a list of paths.
|
|
107
|
-
*
|
|
108
106
|
* @param paths - list of paths
|
|
109
107
|
* @returns the common base directory
|
|
110
108
|
*/
|
package/cli/common/features.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FeatureKey } from '../../statistics/features/feature';
|
|
2
|
+
/**
|
|
3
|
+
* Validate that the given features are known by flowR.
|
|
4
|
+
*/
|
|
2
5
|
export declare function validateFeatures(features: (string[] | ['all'] | FeatureKey[])): Set<FeatureKey>;
|
|
6
|
+
/**
|
|
7
|
+
* Retrieve the archive name for the given path.
|
|
8
|
+
*/
|
|
3
9
|
export declare function retrieveArchiveName(p: string): string;
|
package/cli/common/features.js
CHANGED
|
@@ -7,6 +7,9 @@ exports.validateFeatures = validateFeatures;
|
|
|
7
7
|
exports.retrieveArchiveName = retrieveArchiveName;
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const feature_1 = require("../../statistics/features/feature");
|
|
10
|
+
/**
|
|
11
|
+
* Validate that the given features are known by flowR.
|
|
12
|
+
*/
|
|
10
13
|
function validateFeatures(features) {
|
|
11
14
|
for (const feature of features) {
|
|
12
15
|
if (feature === 'all') {
|
|
@@ -22,6 +25,9 @@ function validateFeatures(features) {
|
|
|
22
25
|
}
|
|
23
26
|
return features[0] === 'all' ? feature_1.allFeatureNames : new Set(features);
|
|
24
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Retrieve the archive name for the given path.
|
|
30
|
+
*/
|
|
25
31
|
function retrieveArchiveName(p) {
|
|
26
32
|
const basepath = path_1.default.normalize(p);
|
|
27
33
|
return `${basepath.endsWith(path_1.default.sep) ? basepath.substring(0, basepath.length - 1) : basepath}.tar.gz`;
|
package/cli/common/script.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The goal of this module is simply to streamline the creation of new scripts.
|
|
3
|
-
*
|
|
4
3
|
* @module
|
|
5
4
|
*/
|
|
6
5
|
import { scripts } from './scripts-info';
|
|
@@ -18,4 +17,7 @@ export interface HelpContent {
|
|
|
18
17
|
* Additionally, you can pass usage examples that may make use of the formatting instructions `{italic x}` and `{bold x}`.
|
|
19
18
|
*/
|
|
20
19
|
export declare function helpForOptions(script: keyof typeof scripts, content: HelpContent): string;
|
|
20
|
+
/**
|
|
21
|
+
* Processes the command line arguments for a given script.
|
|
22
|
+
*/
|
|
21
23
|
export declare function processCommandLineArgs<T extends CommonOptions>(script: keyof typeof scripts, requireAdditionally: (keyof T)[], help: HelpContent): T;
|
package/cli/common/script.js
CHANGED
|
@@ -7,7 +7,6 @@ exports.helpForOptions = helpForOptions;
|
|
|
7
7
|
exports.processCommandLineArgs = processCommandLineArgs;
|
|
8
8
|
/**
|
|
9
9
|
* The goal of this module is simply to streamline the creation of new scripts.
|
|
10
|
-
*
|
|
11
10
|
* @module
|
|
12
11
|
*/
|
|
13
12
|
const scripts_info_1 = require("./scripts-info");
|
|
@@ -35,6 +34,9 @@ function helpForOptions(script, content) {
|
|
|
35
34
|
}
|
|
36
35
|
]);
|
|
37
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Processes the command line arguments for a given script.
|
|
39
|
+
*/
|
|
38
40
|
function processCommandLineArgs(script, requireAdditionally, help) {
|
|
39
41
|
const options = (0, command_line_args_1.default)(scripts_info_1.scripts[script].options);
|
|
40
42
|
if (options.help) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This file contains the references to all scripts, as well as their explanations and arguments.
|
|
3
|
-
*
|
|
4
3
|
* @module
|
|
5
4
|
*/
|
|
6
5
|
import type { OptionDefinition } from 'command-line-usage';
|
|
@@ -89,5 +88,8 @@ declare const _scripts: {
|
|
|
89
88
|
};
|
|
90
89
|
};
|
|
91
90
|
export declare const scripts: Record<keyof typeof _scripts, ScriptInformation>;
|
|
91
|
+
/**
|
|
92
|
+
* Given a set of option definitions and previously provided arguments, determine which options can still be added.
|
|
93
|
+
*/
|
|
92
94
|
export declare function getValidOptionsForCompletion(options: readonly OptionDefinition[], prevArgs: readonly string[]): string[];
|
|
93
95
|
export {};
|
|
@@ -68,6 +68,9 @@ const _scripts = {
|
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
exports.scripts = _scripts;
|
|
71
|
+
/**
|
|
72
|
+
* Given a set of option definitions and previously provided arguments, determine which options can still be added.
|
|
73
|
+
*/
|
|
71
74
|
function getValidOptionsForCompletion(options, prevArgs) {
|
|
72
75
|
return options.filter(o => canAddOption(o, prevArgs)).flatMap(o => {
|
|
73
76
|
const args = [(0, repl_commands_1.asOptionName)(o.name)];
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { OptionDefinition } from 'command-line-usage';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a comma-separated list of all available master scripts.
|
|
4
|
+
*/
|
|
2
5
|
export declare function getScriptsText(): string;
|
|
3
6
|
export declare const flowrMainOptionDefinitions: OptionDefinition[];
|
|
4
7
|
export declare const defaultConfigFile = "flowr.json";
|
|
@@ -4,6 +4,9 @@ exports.defaultConfigFile = exports.flowrMainOptionDefinitions = void 0;
|
|
|
4
4
|
exports.getScriptsText = getScriptsText;
|
|
5
5
|
const scripts_info_1 = require("./common/scripts-info");
|
|
6
6
|
let _scriptsText;
|
|
7
|
+
/**
|
|
8
|
+
* Returns a comma-separated list of all available master scripts.
|
|
9
|
+
*/
|
|
7
10
|
function getScriptsText() {
|
|
8
11
|
if (_scriptsText === undefined) {
|
|
9
12
|
_scriptsText = Array.from(Object.entries(scripts_info_1.scripts).filter(([, { type }]) => type === 'master script'), ([k]) => k).join(', ');
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { ReplCodeCommand, ReplCommand } from './repl-main';
|
|
2
2
|
export declare const helpCommand: ReplCommand;
|
|
3
|
+
/**
|
|
4
|
+
* Retrieve all REPL commands (including those generated from master scripts)
|
|
5
|
+
*/
|
|
3
6
|
export declare function getReplCommands(): Record<string, ReplCommand | ReplCodeCommand>;
|
|
4
7
|
/**
|
|
5
8
|
* The names of all commands including their aliases (but without the leading `:`)
|
|
@@ -10,6 +13,16 @@ export declare function getCommandNames(): string[];
|
|
|
10
13
|
* @param command - The name of the command (without the leading `:`)
|
|
11
14
|
*/
|
|
12
15
|
export declare function getCommand(command: string): ReplCodeCommand | ReplCommand | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Formats the given argument name as a command line option (with single or double dashes).
|
|
18
|
+
*/
|
|
13
19
|
export declare function asOptionName(argument: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Retrieve the length of the longest command name (including star and brackets if applicable)
|
|
22
|
+
*/
|
|
14
23
|
export declare function longestCommandName(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Pad the given command string to the length of the longest command name plus two spaces.
|
|
26
|
+
* @see {@link longestCommandName}
|
|
27
|
+
*/
|
|
15
28
|
export declare function padCmd<T>(string: T): string;
|
|
@@ -20,7 +20,6 @@ const ansi_1 = require("../../../util/text/ansi");
|
|
|
20
20
|
const args_1 = require("../../../util/text/args");
|
|
21
21
|
const assert_1 = require("../../../util/assert");
|
|
22
22
|
const scripts_info_1 = require("../../common/scripts-info");
|
|
23
|
-
const repl_lineage_1 = require("./repl-lineage");
|
|
24
23
|
const repl_query_1 = require("./repl-query");
|
|
25
24
|
function printHelpForScript(script, f, starredVersion) {
|
|
26
25
|
let base = ` ${(0, ansi_1.bold)(padCmd(':' + script[0] + (starredVersion ? '[*]' : '')), f)}${script[1].description}`;
|
|
@@ -88,7 +87,6 @@ const _commands = {
|
|
|
88
87
|
'controlflow*': repl_cfg_1.controlflowStarCommand,
|
|
89
88
|
'controlflowbb': repl_cfg_1.controlflowBbCommand,
|
|
90
89
|
'controlflowbb*': repl_cfg_1.controlflowBbStarCommand,
|
|
91
|
-
'lineage': repl_lineage_1.lineageCommand,
|
|
92
90
|
'query': repl_query_1.queryCommand,
|
|
93
91
|
'query*': repl_query_1.queryStarCommand
|
|
94
92
|
};
|
|
@@ -102,6 +100,9 @@ function hasModule(path) {
|
|
|
102
100
|
return false;
|
|
103
101
|
}
|
|
104
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Retrieve all REPL commands (including those generated from master scripts)
|
|
105
|
+
*/
|
|
105
106
|
function getReplCommands() {
|
|
106
107
|
if (commandsInitialized) {
|
|
107
108
|
return _commands;
|
|
@@ -168,6 +169,9 @@ function getCommand(command) {
|
|
|
168
169
|
}
|
|
169
170
|
return getReplCommands()[commandMapping[command]];
|
|
170
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Formats the given argument name as a command line option (with single or double dashes).
|
|
174
|
+
*/
|
|
171
175
|
function asOptionName(argument) {
|
|
172
176
|
if (argument.length == 1) {
|
|
173
177
|
return `-${argument}`;
|
|
@@ -177,12 +181,19 @@ function asOptionName(argument) {
|
|
|
177
181
|
}
|
|
178
182
|
}
|
|
179
183
|
let _longestCommandName = undefined;
|
|
184
|
+
/**
|
|
185
|
+
* Retrieve the length of the longest command name (including star and brackets if applicable)
|
|
186
|
+
*/
|
|
180
187
|
function longestCommandName() {
|
|
181
188
|
if (_longestCommandName === undefined) {
|
|
182
189
|
_longestCommandName = Array.from(Object.keys(getReplCommands()), k => k.endsWith('*') ? k.length + 3 : k.length).reduce((p, n) => Math.max(p, n), 0);
|
|
183
190
|
}
|
|
184
191
|
return _longestCommandName;
|
|
185
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Pad the given command string to the length of the longest command name plus two spaces.
|
|
195
|
+
* @see {@link longestCommandName}
|
|
196
|
+
*/
|
|
186
197
|
function padCmd(string) {
|
|
187
198
|
return String(string).padEnd(longestCommandName() + 2, ' ');
|
|
188
199
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { ReplCommand, ReplCommandInformation } from './repl-main';
|
|
2
|
+
/**
|
|
3
|
+
* Tries to execute the given R shell command.
|
|
4
|
+
* If not allowed, an error message is printed to the output.
|
|
5
|
+
*/
|
|
2
6
|
export declare function tryExecuteRShellCommand({ output, analyzer, allowRSessionAccess, remainingLine }: ReplCommandInformation): Promise<void>;
|
|
3
7
|
export declare const executeCommand: ReplCommand;
|
|
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.executeCommand = void 0;
|
|
4
4
|
exports.tryExecuteRShellCommand = tryExecuteRShellCommand;
|
|
5
5
|
const ansi_1 = require("../../../util/text/ansi");
|
|
6
|
+
/**
|
|
7
|
+
* Tries to execute the given R shell command.
|
|
8
|
+
* If not allowed, an error message is printed to the output.
|
|
9
|
+
*/
|
|
6
10
|
async function tryExecuteRShellCommand({ output, analyzer, allowRSessionAccess, remainingLine }) {
|
|
7
|
-
const parserInfo =
|
|
11
|
+
const parserInfo = analyzer.parserInformation();
|
|
8
12
|
if (!allowRSessionAccess) {
|
|
9
13
|
output.stderr(`${output.formatter.format('You are not allowed to execute arbitrary R code.', { style: 1 /* FontStyles.Bold */, color: 1 /* Colors.Red */, effect: ansi_1.ColorEffect.Foreground })}
|
|
10
14
|
If you want to do so, please restart flowR with the ${output.formatter.format('--r-session-access', { style: 1 /* FontStyles.Bold */ })} flag${parserInfo.name !== 'r-shell' ? '. Additionally, please enable the r-shell engine, e.g., with ' + output.formatter.format('--default-engine r-shell', { style: 1 /* FontStyles.Bold */ }) : ''}. Please be careful of the security implications of this action. When running flowR with npm, you have to use an extra ${output.formatter.format('--', { style: 1 /* FontStyles.Bold */ })} to separate flowR from npm arguments.`);
|
|
@@ -18,7 +22,7 @@ If you want to do so, please restart flowR with the ${output.formatter.format('-
|
|
|
18
22
|
}
|
|
19
23
|
async function executeRShellCommand(output, analyzer, statement) {
|
|
20
24
|
try {
|
|
21
|
-
const result = await analyzer.sendCommandWithOutput(statement, {
|
|
25
|
+
const result = await analyzer.parserInformation().sendCommandWithOutput(statement, {
|
|
22
26
|
from: 'both',
|
|
23
27
|
automaticallyTrimOutput: true
|
|
24
28
|
});
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { FlowrAnalysisProvider } from '../../../project/flowr-analyzer';
|
|
1
|
+
import { type OutputFormatter } from '../../../util/text/ansi';
|
|
2
|
+
import type { FlowrAnalysisProvider, ReadonlyFlowrAnalysisProvider } from '../../../project/flowr-analyzer';
|
|
3
3
|
/**
|
|
4
4
|
* Defines the main interface for output of the repl.
|
|
5
5
|
* This allows us to redirect it (e.g., in the case of a server connection or tests).
|
|
6
6
|
*
|
|
7
7
|
* The formatter allows to dynamically change the use of ansi escape sequences (see {@link OutputFormatter})
|
|
8
|
-
*
|
|
9
8
|
* @see standardReplOutput
|
|
10
9
|
*/
|
|
11
10
|
export interface ReplOutput {
|
|
@@ -24,7 +23,7 @@ export declare const standardReplOutput: ReplOutput;
|
|
|
24
23
|
export interface ReplCommandInformation {
|
|
25
24
|
output: ReplOutput;
|
|
26
25
|
allowRSessionAccess: boolean;
|
|
27
|
-
analyzer:
|
|
26
|
+
analyzer: ReadonlyFlowrAnalysisProvider;
|
|
28
27
|
remainingLine: string;
|
|
29
28
|
}
|
|
30
29
|
/**
|
|
@@ -58,6 +57,14 @@ export interface ReplCommand extends ReplBaseCommand {
|
|
|
58
57
|
*/
|
|
59
58
|
fn: (info: ReplCommandInformation) => Promise<void> | void;
|
|
60
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
|
+
}
|
|
61
68
|
/**
|
|
62
69
|
* Repl command that uses the {@link FlowrAnalyzer}
|
|
63
70
|
*/
|
|
@@ -69,10 +76,9 @@ export interface ReplCodeCommand extends ReplBaseCommand {
|
|
|
69
76
|
*/
|
|
70
77
|
fn: (info: ReplCodeCommandInformation) => Promise<void> | void;
|
|
71
78
|
/**
|
|
72
|
-
* 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.
|
|
73
81
|
*/
|
|
74
|
-
argsParser: (remainingLine: string) =>
|
|
75
|
-
input: string | undefined;
|
|
76
|
-
remaining: string[];
|
|
77
|
-
};
|
|
82
|
+
argsParser: (remainingLine: string) => ParsedReplLine;
|
|
78
83
|
}
|
|
84
|
+
export {};
|
|
@@ -133,13 +133,13 @@ exports.parseCommand = {
|
|
|
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
|
-
const parserInfo =
|
|
142
|
+
const parserInfo = analyzer.parserInformation();
|
|
143
143
|
if (parserInfo.name === 'r-shell') {
|
|
144
144
|
const object = (0, format_1.convertPreparedParsedData)((0, format_1.prepareParsedData)(result.parsed));
|
|
145
145
|
output.stdout(depthListToTextTree(toDepthMap(object), output.formatter));
|
|
@@ -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,13 +77,13 @@ async function processQueryArgs(output, analyzer, remainingArgs) {
|
|
|
68
77
|
}
|
|
69
78
|
/**
|
|
70
79
|
* Function for splitting the input line.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
80
|
+
* All input is treated as arguments, no R code is separated so that the individual queries can handle it.
|
|
81
|
+
* @param line - The input line
|
|
73
82
|
*/
|
|
74
83
|
function parseArgs(line) {
|
|
75
84
|
const args = (0, args_1.splitAtEscapeSensitive)(line);
|
|
76
85
|
return {
|
|
77
|
-
|
|
86
|
+
rCode: undefined,
|
|
78
87
|
remaining: args
|
|
79
88
|
};
|
|
80
89
|
}
|
|
@@ -104,7 +113,9 @@ exports.queryStarCommand = {
|
|
|
104
113
|
fn: async ({ output, analyzer, remainingArgs }) => {
|
|
105
114
|
const results = await processQueryArgs(output, analyzer, remainingArgs);
|
|
106
115
|
if (results) {
|
|
107
|
-
|
|
116
|
+
const json = Object.fromEntries(Object.entries(results.query)
|
|
117
|
+
.map(([query, queryResults]) => [query, query_1.SupportedQueries[query]?.jsonFormatter?.(queryResults) ?? queryResults]));
|
|
118
|
+
output.stdout(JSON.stringify(json, json_1.jsonReplacer));
|
|
108
119
|
}
|
|
109
120
|
}
|
|
110
121
|
};
|