@eagleoutice/flowr 2.6.1 → 2.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -39
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
- package/abstract-interpretation/data-frame/absint-visitor.js +17 -12
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +9 -10
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +21 -18
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +179 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +4 -7
- package/abstract-interpretation/data-frame/shape-inference.js +10 -12
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +2 -8
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +4 -7
- package/benchmark/slicer.js +27 -31
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +13 -1
- package/benchmark/summarizer/second-phase/graph.d.ts +5 -0
- package/benchmark/summarizer/second-phase/graph.js +5 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/export-quads-app.js +1 -1
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +13 -2
- package/cli/repl/commands/repl-dataflow.js +2 -1
- package/cli/repl/commands/repl-execute.d.ts +4 -0
- package/cli/repl/commands/repl-execute.js +6 -2
- package/cli/repl/commands/repl-main.d.ts +15 -9
- package/cli/repl/commands/repl-parse.js +18 -6
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +42 -30
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +6 -0
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +5 -32
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +5 -1
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/slicer-app.js +3 -4
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/cli/wiki.d.ts +4 -0
- package/cli/wiki.js +165 -0
- package/config.d.ts +21 -3
- package/config.js +21 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-dead-code.js +13 -3
- package/control-flow/cfg-simplification.d.ts +5 -2
- package/control-flow/cfg-simplification.js +3 -0
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +12 -9
- package/control-flow/extract-cfg.js +44 -7
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +4 -33
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +2 -4
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +3 -6
- package/control-flow/useless-loop.js +16 -10
- package/core/pipeline-executor.d.ts +11 -22
- package/core/pipeline-executor.js +13 -25
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +21 -1
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +2 -2
- package/core/steps/all/core/00-parse.js +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -6
- package/core/steps/all/core/10-normalize.js +1 -13
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +5 -5
- package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -4
- package/core/steps/all/core/20-dataflow.js +2 -2
- package/core/steps/all/static-slicing/00-slice.d.ts +1 -2
- package/core/steps/all/static-slicing/00-slice.js +1 -1
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +94 -95
- package/core/steps/pipeline/default-pipelines.js +8 -12
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -2
- package/dataflow/environments/clone.js +12 -2
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +4 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +11 -2
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +1 -2
- package/dataflow/environments/overwrite.js +3 -16
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +9 -2
- package/dataflow/environments/scoping.js +8 -1
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +11 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve-argument.js +2 -2
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +0 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +12 -0
- package/dataflow/eval/values/r-value.js +12 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +16 -1
- package/dataflow/eval/values/string/string-constants.js +15 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +3 -4
- package/dataflow/extractor.js +25 -22
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +9 -28
- package/dataflow/graph/graph.js +4 -28
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +8 -0
- package/dataflow/graph/unknown-replacement.js +8 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +16 -10
- package/dataflow/info.js +27 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +30 -11
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -1
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +6 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +4 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +9 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +7 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +5 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-list.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +10 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +8 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +34 -12
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +90 -68
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +5 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +5 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +4 -1
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +9 -3
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +5 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +10 -3
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +10 -4
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +7 -4
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +6 -8
- package/dataflow/origin/dfg-get-symbol-refs.js +7 -9
- package/dataflow/processor.d.ts +6 -12
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -2
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +87 -0
- package/documentation/data/faq/recommended-configs.d.ts +36 -0
- package/documentation/data/faq/recommended-configs.js +40 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +19 -0
- package/documentation/data/faq/wiki-faq-store.js +83 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +5 -64
- package/documentation/doc-capabilities.d.ts +9 -0
- package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
- package/documentation/doc-readme.d.ts +9 -0
- package/documentation/{print-readme.js → doc-readme.js} +136 -35
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +14 -0
- package/documentation/doc-util/doc-benchmarks.js +14 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +14 -8
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +12 -6
- package/documentation/doc-util/doc-dfg.js +19 -10
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +6 -1
- package/documentation/doc-util/doc-escape.js +11 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +26 -0
- package/documentation/doc-util/doc-general.js +26 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +14 -3
- package/documentation/doc-util/doc-normalized-ast.js +16 -7
- package/documentation/doc-util/doc-query.d.ts +26 -3
- package/documentation/doc-util/doc-query.js +34 -12
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +6 -0
- package/documentation/doc-util/doc-search.d.ts +3 -18
- package/documentation/doc-util/doc-search.js +6 -62
- package/documentation/doc-util/doc-server-message.d.ts +18 -6
- package/documentation/doc-util/doc-server-message.js +17 -5
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +90 -11
- package/documentation/doc-util/doc-types.js +128 -39
- package/documentation/index.d.ts +9 -9
- package/documentation/index.js +9 -9
- package/documentation/issue-linting-rule.d.ts +9 -0
- package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
- package/documentation/wiki-analyzer.d.ts +9 -0
- package/documentation/wiki-analyzer.js +412 -0
- package/documentation/wiki-cfg.d.ts +9 -0
- package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
- package/documentation/wiki-core.d.ts +14 -0
- package/documentation/{print-core-wiki.js → wiki-core.js} +167 -175
- package/documentation/wiki-dataflow-graph.d.ts +9 -0
- package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +145 -175
- package/documentation/wiki-engine.d.ts +9 -0
- package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
- package/documentation/wiki-faq.d.ts +8 -0
- package/documentation/wiki-faq.js +22 -0
- package/documentation/wiki-interface.d.ts +9 -0
- package/documentation/{print-interface-wiki.js → wiki-interface.js} +60 -57
- package/documentation/wiki-linter.d.ts +9 -0
- package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
- package/documentation/wiki-linting-and-testing.d.ts +9 -0
- package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
- package/documentation/wiki-mk/doc-context.d.ts +186 -0
- package/documentation/wiki-mk/doc-context.js +84 -0
- package/documentation/wiki-mk/doc-maker.d.ts +95 -0
- package/documentation/wiki-mk/doc-maker.js +133 -0
- package/documentation/wiki-normalized-ast.d.ts +9 -0
- package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
- package/documentation/wiki-onboarding.d.ts +8 -0
- package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
- package/documentation/wiki-query.d.ts +9 -0
- package/documentation/{print-query-wiki.js → wiki-query.js} +65 -80
- package/documentation/wiki-search.d.ts +9 -0
- package/documentation/wiki-search.js +61 -0
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +6 -2
- package/linter/linter-format.d.ts +10 -2
- package/linter/linter-format.js +8 -0
- package/linter/linter-rules.d.ts +13 -17
- package/linter/rules/absolute-path.d.ts +4 -6
- package/linter/rules/absolute-path.js +2 -2
- package/linter/rules/dataframe-access-validation.d.ts +4 -5
- package/linter/rules/dataframe-access-validation.js +21 -19
- package/linter/rules/dead-code.d.ts +2 -2
- package/linter/rules/deprecated-functions.d.ts +2 -6
- package/linter/rules/file-path-validity.d.ts +2 -3
- package/linter/rules/file-path-validity.js +4 -4
- package/linter/rules/function-finder-util.d.ts +2 -7
- package/linter/rules/naming-convention.d.ts +15 -4
- package/linter/rules/naming-convention.js +14 -2
- package/linter/rules/network-functions.d.ts +2 -2
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +4 -4
- package/linter/rules/seeded-randomness.js +33 -13
- package/linter/rules/unused-definition.d.ts +3 -4
- package/linter/rules/useless-loop.d.ts +3 -4
- package/linter/rules/useless-loop.js +2 -2
- package/package.json +7 -18
- package/project/cache/flowr-analyzer-cache.d.ts +9 -19
- package/project/cache/flowr-analyzer-cache.js +17 -44
- package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
- package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
- package/project/context/flowr-analyzer-context.d.ts +31 -9
- package/project/context/flowr-analyzer-context.js +48 -4
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +63 -15
- package/project/context/flowr-analyzer-files-context.js +110 -39
- package/project/context/flowr-file.d.ts +32 -11
- package/project/context/flowr-file.js +30 -9
- package/project/flowr-analyzer-builder.d.ts +23 -31
- package/project/flowr-analyzer-builder.js +35 -74
- package/project/flowr-analyzer.d.ts +79 -29
- package/project/flowr-analyzer.js +59 -15
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +8 -2
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
- package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -5
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
- package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
- package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
- package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
- package/project/plugins/flowr-analyzer-plugin.js +2 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
- package/project/plugins/plugin-registry.d.ts +34 -0
- package/project/plugins/plugin-registry.js +62 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +7 -2
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +16 -4
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +34 -18
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +5 -2
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +5 -2
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +25 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +4 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +4 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +80 -2
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +7 -2
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +6 -1
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +10 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +30 -1
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +93 -55
- package/queries/query.js +55 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/collect.js +4 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.d.ts +29 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +11 -14
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +30 -17
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +6 -5
- package/r-bridge/lang-4.x/ast/model/type.js +6 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/format.js +1 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +12 -12
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -11
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +18 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +15 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +62 -24
- package/r-bridge/parser.d.ts +43 -12
- package/r-bridge/parser.js +27 -13
- package/r-bridge/retriever.d.ts +25 -16
- package/r-bridge/retriever.js +29 -5
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -2
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +2 -3
- package/reconstruct/reconstruct.d.ts +18 -12
- package/reconstruct/reconstruct.js +19 -10
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +15 -3
- package/search/search-executor/search-enrichers.d.ts +16 -6
- package/search/search-executor/search-enrichers.js +4 -3
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +57 -5
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +13 -12
- package/slicing/criterion/collect-all.js +1 -1
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +8 -6
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/assignments.js +1 -1
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/control-flow.js +1 -1
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/data-access.js +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/expression-list/statistics-expression-list.js +1 -1
- package/statistics/features/supported/loops/loops.js +1 -1
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-functions/used-functions.js +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/features/supported/variables/variables.js +1 -1
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +4 -4
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +56 -2
- package/util/assert.js +56 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +12 -12
- package/util/files.js +11 -11
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +7 -3
- package/util/mermaid/ast.js +39 -8
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/cfg.js +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +10 -1
- package/util/r-value.js +21 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +12 -3
- package/util/version.js +12 -3
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -66
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/documentation/print-analyzer-wiki.d.ts +0 -1
- package/documentation/print-analyzer-wiki.js +0 -137
- package/documentation/print-capabilities-markdown.d.ts +0 -1
- package/documentation/print-cfg-wiki.d.ts +0 -1
- package/documentation/print-core-wiki.d.ts +0 -2
- package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
- package/documentation/print-engines-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.js +0 -90
- package/documentation/print-interface-wiki.d.ts +0 -1
- package/documentation/print-linter-issue.d.ts +0 -1
- package/documentation/print-linter-wiki.d.ts +0 -1
- package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
- package/documentation/print-normalized-ast-wiki.d.ts +0 -1
- package/documentation/print-onboarding-wiki.d.ts +0 -1
- package/documentation/print-query-wiki.d.ts +0 -1
- package/documentation/print-readme.d.ts +0 -1
- package/documentation/print-search-wiki.d.ts +0 -1
- package/documentation/print-search-wiki.js +0 -74
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
- package/util/formats/adapter-format.d.ts +0 -6
- package/util/formats/adapter-format.js +0 -3
- package/util/formats/adapter.d.ts +0 -18
- package/util/formats/adapter.js +0 -49
- package/util/formats/adapters/r-adapter.d.ts +0 -4
- package/util/formats/adapters/r-adapter.js +0 -7
- package/util/formats/adapters/rmd-adapter.d.ts +0 -26
- package/util/formats/adapters/rmd-adapter.js +0 -91
|
@@ -16,8 +16,10 @@ const message_slice_1 = require("../../../cli/repl/server/messages/message-slice
|
|
|
16
16
|
const message_repl_1 = require("../../../cli/repl/server/messages/message-repl");
|
|
17
17
|
const message_query_1 = require("../../../cli/repl/server/messages/message-query");
|
|
18
18
|
const example_query_code_1 = require("../query/example-query-code");
|
|
19
|
-
const message_lineage_1 = require("../../../cli/repl/server/messages/message-lineage");
|
|
20
19
|
const identify_link_to_last_call_relation_1 = require("../../../queries/catalog/call-context-query/identify-link-to-last-call-relation");
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
21
23
|
function documentAllServerMessages() {
|
|
22
24
|
(0, doc_server_message_1.documentServerMessage)({
|
|
23
25
|
title: 'Hello',
|
|
@@ -67,7 +69,7 @@ Requests for the [REPL](#message-request-repl) are independent of that.
|
|
|
67
69
|
return `
|
|
68
70
|
|
|
69
71
|
The request allows the server to analyze a file and prepare it for slicing.
|
|
70
|
-
The message can contain a \`filetoken\`, which is used to identify the file in later slice or
|
|
72
|
+
The message can contain a \`filetoken\`, which is used to identify the file in later slice or query requests (if you do not add one, the request will not be stored and therefore, it is not available for subsequent requests).
|
|
71
73
|
|
|
72
74
|
> **Please note!**\\
|
|
73
75
|
> If you want to send and process a lot of analysis requests, but do not want to slice them, please do not pass the \`filetoken\` field. This will save the server a lot of memory allocation.
|
|
@@ -82,7 +84,7 @@ ${await (0, doc_server_message_1.documentServerMessageResponse)({
|
|
|
82
84
|
messages: [
|
|
83
85
|
{
|
|
84
86
|
type: 'request',
|
|
85
|
-
description: `Let' suppose you simply want to analyze the following script:\n ${(0, doc_code_1.codeBlock)('r', 'x <- 1\nx + 1')}\n For this, you can send the following request:`,
|
|
87
|
+
description: `Let's suppose you simply want to analyze the following script:\n ${(0, doc_code_1.codeBlock)('r', 'x <- 1\nx + 1')}\n For this, you can send the following request:`,
|
|
86
88
|
message: {
|
|
87
89
|
type: 'request-file-analysis',
|
|
88
90
|
id: '1',
|
|
@@ -478,66 +480,5 @@ See [above](#message-request-file-analysis) for the general structure of the res
|
|
|
478
480
|
`;
|
|
479
481
|
}
|
|
480
482
|
});
|
|
481
|
-
(0, doc_server_message_1.documentServerMessage)({
|
|
482
|
-
title: 'Lineage',
|
|
483
|
-
type: 'request',
|
|
484
|
-
definitionPath: '../cli/repl/server/messages/message-lineage.ts',
|
|
485
|
-
defRequest: message_lineage_1.requestLineageMessage,
|
|
486
|
-
defResponse: message_lineage_1.responseLineageMessage,
|
|
487
|
-
mermaidSequenceDiagram: `
|
|
488
|
-
Client->>+Server: request-lineage
|
|
489
|
-
|
|
490
|
-
alt
|
|
491
|
-
Server-->>Client: response-lineage
|
|
492
|
-
else
|
|
493
|
-
Server-->>Client: error
|
|
494
|
-
end
|
|
495
|
-
deactivate Server
|
|
496
|
-
`,
|
|
497
|
-
shortDescription: `${deprecatedByQuery} Obtain the lineage of a given slicing criterion.`,
|
|
498
|
-
text: async (shell) => {
|
|
499
|
-
return `
|
|
500
|
-
|
|
501
|
-
**We deprecated the lineage request in favor of the \`lineage\` [Query](${doc_files_1.FlowrWikiBaseRef}/Query%20API).**
|
|
502
|
-
|
|
503
|
-
In order to retrieve the lineage of an object, you have to send a file analysis request first. The \`filetoken\` you assign is of use here as you can re-use it to repeatedly retrieve the lineage of the same file.
|
|
504
|
-
Besides that, you will need to add a [criterion](${doc_files_1.FlowrWikiBaseRef}/Terminology#slicing-criterion) that specifies the object whose lineage you're interested in.
|
|
505
|
-
|
|
506
|
-
${await (0, doc_server_message_1.documentServerMessageResponse)({
|
|
507
|
-
shell,
|
|
508
|
-
messageType: 'request-query',
|
|
509
|
-
messages: [{
|
|
510
|
-
type: 'request',
|
|
511
|
-
message: {
|
|
512
|
-
type: 'request-file-analysis',
|
|
513
|
-
id: '1',
|
|
514
|
-
filetoken: 'x',
|
|
515
|
-
content: 'x <- 1\nx + 1'
|
|
516
|
-
}
|
|
517
|
-
}, {
|
|
518
|
-
type: 'response',
|
|
519
|
-
expectedType: 'response-file-analysis',
|
|
520
|
-
description: `
|
|
521
|
-
See [above](#message-request-file-analysis) for the general structure of the response.
|
|
522
|
-
`
|
|
523
|
-
}, {
|
|
524
|
-
type: 'request',
|
|
525
|
-
message: {
|
|
526
|
-
type: 'request-lineage',
|
|
527
|
-
id: '2',
|
|
528
|
-
filetoken: 'x',
|
|
529
|
-
criterion: '2@x'
|
|
530
|
-
},
|
|
531
|
-
mark: true
|
|
532
|
-
}, {
|
|
533
|
-
type: 'response',
|
|
534
|
-
expectedType: 'response-lineage',
|
|
535
|
-
description: 'The response contains the lineage of the desired object in form of an array of IDs (as the representation of a set).'
|
|
536
|
-
}]
|
|
537
|
-
})}
|
|
538
|
-
|
|
539
|
-
`;
|
|
540
|
-
}
|
|
541
|
-
});
|
|
542
483
|
}
|
|
543
484
|
//# sourceMappingURL=doc-data-server-messages.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DocMakerArgs } from './wiki-mk/doc-maker';
|
|
2
|
+
import { DocMaker } from './wiki-mk/doc-maker';
|
|
3
|
+
/**
|
|
4
|
+
* https://github.com/flowr-analysis/flowr/wiki/Capabilities
|
|
5
|
+
*/
|
|
6
|
+
export declare class DocCapabilities extends DocMaker {
|
|
7
|
+
constructor();
|
|
8
|
+
protected text({ treeSitter }: DocMakerArgs): Promise<string>;
|
|
9
|
+
}
|
|
@@ -3,14 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DocCapabilities = void 0;
|
|
6
7
|
const data_1 = require("../r-bridge/data/data");
|
|
7
|
-
const log_1 = require("../../test/functionality/_helper/log");
|
|
8
|
-
const doc_auto_gen_1 = require("./doc-util/doc-auto-gen");
|
|
9
8
|
const strings_1 = require("../util/text/strings");
|
|
10
9
|
const doc_general_1 = require("./doc-util/doc-general");
|
|
11
|
-
const tree_sitter_executor_1 = require("../r-bridge/lang-4.x/tree-sitter/tree-sitter-executor");
|
|
12
10
|
const fs_1 = __importDefault(require("fs"));
|
|
13
11
|
const doc_structure_1 = require("./doc-util/doc-structure");
|
|
12
|
+
const doc_maker_1 = require("./wiki-mk/doc-maker");
|
|
14
13
|
const detailedInfoFile = 'coverage/flowr-test-details.json';
|
|
15
14
|
function obtainDetailedInfos() {
|
|
16
15
|
if (!fs_1.default.existsSync(detailedInfoFile)) {
|
|
@@ -130,8 +129,7 @@ async function printAsMarkdown(info, capabilities, depth = 0, lines = []) {
|
|
|
130
129
|
return lines.join('\n');
|
|
131
130
|
}
|
|
132
131
|
function getPreamble() {
|
|
133
|
-
return
|
|
134
|
-
|
|
132
|
+
return `
|
|
135
133
|
Each capability has an id that can be used to link to it (use the link symbol to get a direct link to the capability).
|
|
136
134
|
The internal id is also mentioned in the capability description. This id can be used to reference the capability in a labeled test within flowR.
|
|
137
135
|
Besides, we use colored bullets like this:
|
|
@@ -154,21 +152,20 @@ Please prefer using a statement like "flowR has only partial support for feature
|
|
|
154
152
|
})}
|
|
155
153
|
`;
|
|
156
154
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
155
|
+
/**
|
|
156
|
+
* https://github.com/flowr-analysis/flowr/wiki/Capabilities
|
|
157
|
+
*/
|
|
158
|
+
class DocCapabilities extends doc_maker_1.DocMaker {
|
|
159
|
+
constructor() {
|
|
160
|
+
super('wiki/Capabilities.md', module.filename, 'flowR capabilities overview');
|
|
161
|
+
}
|
|
162
|
+
async text({ treeSitter }) {
|
|
163
|
+
/* check if the detailed test data is available */
|
|
164
|
+
if (!fs_1.default.existsSync(detailedInfoFile)) {
|
|
165
|
+
console.warn('\x1b[31mNo detailed test data available. Run the full tests (npm run test-full) to generate it.\x1b[m');
|
|
166
|
+
}
|
|
167
|
+
return getPreamble() + await printAsMarkdown({ parser: treeSitter, info: obtainDetailedInfos() }, data_1.flowrCapabilities.capabilities);
|
|
161
168
|
}
|
|
162
|
-
return getPreamble() + await printAsMarkdown({ parser, info: obtainDetailedInfos() }, data_1.flowrCapabilities.capabilities);
|
|
163
|
-
}
|
|
164
|
-
/** if we run this script, we want a Markdown representation of the capabilities */
|
|
165
|
-
if (require.main === module) {
|
|
166
|
-
(0, log_1.setMinLevelOfAllLogs)(6 /* LogLevel.Fatal */);
|
|
167
|
-
void tree_sitter_executor_1.TreeSitterExecutor.initTreeSitter().then(() => {
|
|
168
|
-
const parser = new tree_sitter_executor_1.TreeSitterExecutor();
|
|
169
|
-
void print(parser).then(str => {
|
|
170
|
-
console.log(str);
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
169
|
}
|
|
174
|
-
|
|
170
|
+
exports.DocCapabilities = DocCapabilities;
|
|
171
|
+
//# sourceMappingURL=doc-capabilities.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DocMakerArgs } from './wiki-mk/doc-maker';
|
|
2
|
+
import { DocMaker } from './wiki-mk/doc-maker';
|
|
3
|
+
/**
|
|
4
|
+
* https://github.com/flowr-analysis/flowr/blob/main/README.md
|
|
5
|
+
*/
|
|
6
|
+
export declare class DocReadme extends DocMaker {
|
|
7
|
+
constructor();
|
|
8
|
+
text({ treeSitter }: DocMakerArgs): Promise<string>;
|
|
9
|
+
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const log_1 = require("../../test/functionality/_helper/log");
|
|
5
|
-
const tree_sitter_executor_1 = require("../r-bridge/lang-4.x/tree-sitter/tree-sitter-executor");
|
|
3
|
+
exports.DocReadme = void 0;
|
|
6
4
|
const doc_files_1 = require("./doc-util/doc-files");
|
|
7
5
|
const doc_code_1 = require("./doc-util/doc-code");
|
|
8
6
|
const doc_cli_option_1 = require("./doc-util/doc-cli-option");
|
|
@@ -15,9 +13,115 @@ const doc_auto_gen_1 = require("./doc-util/doc-auto-gen");
|
|
|
15
13
|
const doc_general_1 = require("./doc-util/doc-general");
|
|
16
14
|
const doc_dfg_1 = require("./doc-util/doc-dfg");
|
|
17
15
|
const doc_query_1 = require("./doc-util/doc-query");
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
const doc_issue_1 = require("./doc-util/doc-issue");
|
|
17
|
+
const strings_1 = require("../util/text/strings");
|
|
18
|
+
const doc_maker_1 = require("./wiki-mk/doc-maker");
|
|
19
|
+
const PublicationsMain = [
|
|
20
|
+
{
|
|
21
|
+
header: 'Statically Analyzing the Dataflow of R Programs (OOPSLA \'25)',
|
|
22
|
+
description: 'Please cite this paper if you are using flowR in your research.',
|
|
23
|
+
doi: 'https://doi.org/10.1145/3763087',
|
|
24
|
+
bibtex: `@article{10.1145/3763087,
|
|
25
|
+
author = {Sihler, Florian and Tichy, Matthias},
|
|
26
|
+
title = {Statically Analyzing the Dataflow of R Programs},
|
|
27
|
+
year = {2025},
|
|
28
|
+
issue_date = {October 2025},
|
|
29
|
+
publisher = {Association for Computing Machinery},
|
|
30
|
+
address = {New York, NY, USA},
|
|
31
|
+
volume = {9},
|
|
32
|
+
number = {OOPSLA2},
|
|
33
|
+
url = {https://doi.org/10.1145/3763087},
|
|
34
|
+
doi = {10.1145/3763087},
|
|
35
|
+
abstract = {The R programming language is primarily designed for statistical computing and mostly used by researchers without a background in computer science. R provides a wide range of dynamic features and peculiarities that are difficult to analyze statically like dynamic scoping and lazy evaluation with dynamic side effects. At the same time, the R ecosystem lacks sophisticated analysis tools that support researchers in understanding and improving their code. In this paper, we present a novel static dataflow analysis framework for the R programming language that is capable of handling the dynamic nature of R programs and produces the dataflow graph of given R programs. This graph can be essential in a range of analyses, including program slicing, which we implement as a proof of concept. The core analysis works as a stateful fold over a normalized version of the abstract syntax tree of the R program, which tracks (re-)definitions, values, function calls, side effects, external files, and a dynamic control flow to produce one dataflow graph per program. We evaluate the correctness of our analysis using output equivalence testing on a manually curated dataset of 779 sensible slicing points from executable real-world R scripts. Additionally, we use a set of systematic test cases based on the capabilities of the R language and the implementation of the R interpreter and measure the runtimes well as the memory consumption on a set of 4,230 real-world R scripts and 20,815 packages available on R’s package manager CRAN. Furthermore, we evaluate the recall of our program slicer, its accuracy using shrinking, and its improvement over the state of the art. We correctly analyze almost all programs in our equivalence test suite, preserving the identical output for 99.7\\% of the manually curated slicing points. On average, we require 576ms to analyze the dataflow and around 213kB to store the graph of a research script. This shows that our analysis is capable of analyzing real-world sources quickly and correctly. Our slicer achieves an average reduction of 84.8\\% of tokens indicating its potential to improve program comprehension.},
|
|
36
|
+
journal = {Proc. ACM Program. Lang.},
|
|
37
|
+
month = oct,
|
|
38
|
+
articleno = {309},
|
|
39
|
+
numpages = {29},
|
|
40
|
+
keywords = {Dataflow Analysis, R Programming Language, Static Analysis}
|
|
41
|
+
}`
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
header: 'flowR: A Static Program Slicer for R (ASE \'24, Tool)',
|
|
45
|
+
description: `This refers to the tool-demonstration of the <a href="${doc_files_1.FlowrVsCode}">VS Code Extension</a>.`,
|
|
46
|
+
doi: 'https://doi.org/10.1145/3691620.3695359',
|
|
47
|
+
bibtex: `@inproceedings{DBLP:conf/kbse/SihlerT24,
|
|
48
|
+
author = {Florian Sihler and
|
|
49
|
+
Matthias Tichy},
|
|
50
|
+
editor = {Vladimir Filkov and
|
|
51
|
+
Baishakhi Ray and
|
|
52
|
+
Minghui Zhou},
|
|
53
|
+
title = {flowR: {A} Static Program Slicer for {R}},
|
|
54
|
+
booktitle = {Proceedings of the 39th {IEEE/ACM} International Conference on Automated
|
|
55
|
+
Software Engineering, {ASE} 2024, Sacramento, CA, USA, October 27
|
|
56
|
+
- November 1, 2024},
|
|
57
|
+
pages = {2390--2393},
|
|
58
|
+
publisher = {{ACM}},
|
|
59
|
+
year = {2024},
|
|
60
|
+
url = {https://doi.org/10.1145/3691620.3695359},
|
|
61
|
+
doi = {10.1145/3691620.3695359},
|
|
62
|
+
timestamp = {Mon, 03 Mar 2025 21:16:51 +0100},
|
|
63
|
+
biburl = {https://dblp.org/rec/conf/kbse/SihlerT24.bib},
|
|
64
|
+
bibsource = {dblp computer science bibliography, https://dblp.org}
|
|
65
|
+
}`
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
header: 'On the Anatomy of Real-World R Code for Static Analysis (MSR \'24)',
|
|
69
|
+
description: 'This paper lays the foundation for flowR by analyzing the characteristics of real-world R code.',
|
|
70
|
+
doi: 'https://doi.org/10.1145/3643991.3644911',
|
|
71
|
+
bibtex: `
|
|
72
|
+
|
|
73
|
+
@inproceedings{DBLP:conf/msr/SihlerPSTDD24,
|
|
74
|
+
author = {Florian Sihler and
|
|
75
|
+
Lukas Pietzschmann and
|
|
76
|
+
Raphael Straub and
|
|
77
|
+
Matthias Tichy and
|
|
78
|
+
Andor Diera and
|
|
79
|
+
Abdelhalim Hafedh Dahou},
|
|
80
|
+
editor = {Diomidis Spinellis and
|
|
81
|
+
Alberto Bacchelli and
|
|
82
|
+
Eleni Constantinou},
|
|
83
|
+
title = {On the Anatomy of Real-World {R} Code for Static Analysis},
|
|
84
|
+
booktitle = {21st {IEEE/ACM} International Conference on Mining Software Repositories,
|
|
85
|
+
{MSR} 2024, Lisbon, Portugal, April 15-16, 2024},
|
|
86
|
+
pages = {619--630},
|
|
87
|
+
publisher = {{ACM}},
|
|
88
|
+
year = {2024},
|
|
89
|
+
url = {https://doi.org/10.1145/3643991.3644911},
|
|
90
|
+
doi = {10.1145/3643991.3644911},
|
|
91
|
+
timestamp = {Sun, 19 Jan 2025 13:31:27 +0100},
|
|
92
|
+
biburl = {https://dblp.org/rec/conf/msr/SihlerPSTDD24.bib},
|
|
93
|
+
bibsource = {dblp computer science bibliography, https://dblp.org}
|
|
94
|
+
}`
|
|
95
|
+
}
|
|
96
|
+
];
|
|
97
|
+
const OtherWorksUsingFlowr = [
|
|
98
|
+
{ name: 'Computational Reproducibility of R Code Supplements on OSF', doi: 'https://doi.org/10.36190/2025.49' },
|
|
99
|
+
{ name: 'Multi-View Structural Graph Summaries', doi: 'https://doi.org/10.1109/WI-IAT62293.2024.00037' }
|
|
100
|
+
];
|
|
101
|
+
function printPublications() {
|
|
102
|
+
return PublicationsMain.map(pub => {
|
|
103
|
+
return `
|
|
104
|
+
* [${pub.header}](${pub.doi})
|
|
105
|
+
${pub.description}
|
|
106
|
+
<details><summary>BibTeX</summary>
|
|
107
|
+
|
|
108
|
+
${(0, doc_general_1.prefixLines)((0, doc_code_1.codeBlock)('bibtex', pub.bibtex), ' ')}
|
|
109
|
+
|
|
110
|
+
</details>
|
|
111
|
+
`.trim();
|
|
112
|
+
}).join('\n\n') + '\n\n Works using flowR include:\n' +
|
|
113
|
+
(0, strings_1.joinWithLast)(OtherWorksUsingFlowr.map(pub => `[${pub.name}](${pub.doi})`)) + '.\n';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* https://github.com/flowr-analysis/flowr/blob/main/README.md
|
|
117
|
+
*/
|
|
118
|
+
class DocReadme extends doc_maker_1.DocMaker {
|
|
119
|
+
constructor() {
|
|
120
|
+
super('README.md', module.filename, 'flowR README', false);
|
|
121
|
+
}
|
|
122
|
+
async text({ treeSitter }) {
|
|
123
|
+
const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };
|
|
124
|
+
return `
|
|
21
125
|
[](${doc_files_1.FlowrGithubBaseRef}/flowr/wiki)\\
|
|
22
126
|
[](${doc_files_1.FlowrGithubBaseRef}/flowr/actions/workflows/qa.yaml)
|
|
23
127
|
[](https://codecov.io/gh/flowr-analysis/flowr)
|
|
@@ -38,18 +142,18 @@ It offers a wide variety of features, for example:
|
|
|
38
142
|
${(0, doc_general_1.prefixLines)((0, doc_structure_1.details)('Example: Linting code with flowR', `To lint your code, you can use the [REPL](${doc_files_1.FlowrWikiBaseRef}/Interface#using-the-repl) or the [Visual Studio Code extension](${doc_files_1.FlowrVsCode}) (see [vscode-flowr#283](https://github.com/flowr-analysis/vscode-flowr/pull/283)).
|
|
39
143
|
|
|
40
144
|
${await (async () => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
145
|
+
const code = 'read.csv("/root/x.txt")';
|
|
146
|
+
const res = await (0, doc_query_1.showQuery)(treeSitter, code, [{ type: 'linter' }], { showCode: false, collapseQuery: true, collapseResult: false });
|
|
147
|
+
return await (0, doc_repl_1.documentReplSession)(treeSitter, [{
|
|
148
|
+
command: `:query @linter ${JSON.stringify(code)}`,
|
|
149
|
+
description: `
|
|
46
150
|
The linter will analyze the code and return any issues found.
|
|
47
151
|
Formatted more nicely, this returns:
|
|
48
152
|
|
|
49
153
|
${res}
|
|
50
154
|
`
|
|
51
|
-
|
|
52
|
-
|
|
155
|
+
}]);
|
|
156
|
+
})()}
|
|
53
157
|
|
|
54
158
|
`), ' ')}
|
|
55
159
|
|
|
@@ -71,10 +175,10 @@ ${(0, doc_code_1.codeBlock)('r', (0, doc_files_1.getFileContentFromRoot)('test/t
|
|
|
71
175
|
Let's suppose we are interested only in the \`sum\` which is printed in line 11.
|
|
72
176
|
To get a slice for this, you can use the following command:
|
|
73
177
|
|
|
74
|
-
${await (0, doc_repl_1.documentReplSession)(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
178
|
+
${await (0, doc_repl_1.documentReplSession)(treeSitter, [{
|
|
179
|
+
command: ':query @static-slice (11@sum) file://test/testfiles/example.R',
|
|
180
|
+
description: ''
|
|
181
|
+
}])}
|
|
78
182
|
|
|
79
183
|
`), ' ')}
|
|
80
184
|
|
|
@@ -105,12 +209,12 @@ ${(0, doc_code_1.codeBlock)('r', (0, doc_files_1.getFileContentFromRoot)('test/t
|
|
|
105
209
|
|
|
106
210
|
To get the dataflow graph for this script, you can use the following command:
|
|
107
211
|
|
|
108
|
-
${await (0, doc_repl_1.documentReplSession)(
|
|
109
|
-
|
|
110
|
-
|
|
212
|
+
${await (0, doc_repl_1.documentReplSession)(treeSitter, [{
|
|
213
|
+
command: ':dataflow* test/testfiles/example.R',
|
|
214
|
+
description: `
|
|
111
215
|
Following the link output should show the following:
|
|
112
|
-
${await (0, doc_dfg_1.printDfGraphForCode)(
|
|
113
|
-
|
|
216
|
+
${await (0, doc_dfg_1.printDfGraphForCode)(treeSitter, (0, doc_files_1.getFileContentFromRoot)('test/testfiles/example.R'), { showCode: false })}`
|
|
217
|
+
}])}
|
|
114
218
|
|
|
115
219
|
`), ' ')}
|
|
116
220
|
|
|
@@ -155,6 +259,13 @@ If you want to use the same commands:
|
|
|
155
259
|
For more details on how to use _flowR_ please refer to the [wiki pages](${doc_files_1.FlowrGithubBaseRef}/flowr/wiki),
|
|
156
260
|
as well as the deployed [code documentation](https://flowr-analysis.github.io/flowr/doc/).
|
|
157
261
|
|
|
262
|
+
## 📃 Publications on flowR
|
|
263
|
+
|
|
264
|
+
If you are interested in the theoretical background of _flowR_,
|
|
265
|
+
please check out the following publications (if you find that a paper is missing here, please open [a new issue](${doc_issue_1.NewIssueUrl})):
|
|
266
|
+
|
|
267
|
+
${printPublications()}
|
|
268
|
+
|
|
158
269
|
## 🚀 Contributing
|
|
159
270
|
|
|
160
271
|
We welcome every contribution! Please check out the [developer onboarding](${doc_files_1.FlowrWikiBaseRef}/Onboarding) section in the wiki for all the information you will need.
|
|
@@ -180,17 +291,7 @@ If you want to make changes please edit the source file (the CI will take care o
|
|
|
180
291
|
In fact, many files in the [wiki](${doc_files_1.FlowrWikiBaseRef}) are generated, so make sure to check for the source file if you want to make changes.
|
|
181
292
|
|
|
182
293
|
`.trim();
|
|
294
|
+
}
|
|
183
295
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
void tree_sitter_executor_1.TreeSitterExecutor.initTreeSitter().then(() => {
|
|
187
|
-
(0, log_1.setMinLevelOfAllLogs)(6 /* LogLevel.Fatal */);
|
|
188
|
-
const shell = new shell_1.RShell();
|
|
189
|
-
void getText(shell).then(str => {
|
|
190
|
-
console.log(str);
|
|
191
|
-
}).finally(() => {
|
|
192
|
-
shell.close();
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
//# sourceMappingURL=print-readme.js.map
|
|
296
|
+
exports.DocReadme = DocReadme;
|
|
297
|
+
//# sourceMappingURL=doc-readme.js.map
|
|
@@ -4,5 +4,11 @@ export interface AutoGenHeaderArguments {
|
|
|
4
4
|
readonly filename: string;
|
|
5
5
|
readonly purpose: string;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
7
10
|
export declare function autoGenHeader({ rVersion, filename, purpose, currentDateAndTime }: AutoGenHeaderArguments): string;
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
8
14
|
export declare function fileNameForGenHeader(filename: string): string;
|
|
@@ -4,9 +4,15 @@ exports.autoGenHeader = autoGenHeader;
|
|
|
4
4
|
exports.fileNameForGenHeader = fileNameForGenHeader;
|
|
5
5
|
const version_1 = require("../../util/version");
|
|
6
6
|
const doc_files_1 = require("./doc-files");
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
7
10
|
function autoGenHeader({ rVersion, filename, purpose, currentDateAndTime = new Date().toISOString().replace('T', ', ').replace(/\.\d+Z$/, ' UTC') }) {
|
|
8
11
|
return `_This document was generated from '${fileNameForGenHeader(filename)}' on ${currentDateAndTime} presenting an overview of flowR's ${purpose} (v${(0, version_1.flowrVersion)().format()}${rVersion ? ', using R v' + rVersion : ''}). Please do not edit this file/wiki page directly._`;
|
|
9
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
10
16
|
function fileNameForGenHeader(filename) {
|
|
11
17
|
const shortenFilename = filename.replace(/^.*src\//, 'src/');
|
|
12
18
|
return (0, doc_files_1.linkFlowRSourceFile)(shortenFilename);
|
|
@@ -16,8 +16,22 @@ interface BenchmarkElementBench {
|
|
|
16
16
|
readonly range: number;
|
|
17
17
|
readonly extra: string;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Loads the benchmark data from the predefined path.
|
|
21
|
+
* This is the location which is used by the CI to store benchmark results.
|
|
22
|
+
*/
|
|
19
23
|
export declare function loadBenchmarkData(): Promise<BenchmarkData>;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the latest benchmark for the given suite.
|
|
26
|
+
*/
|
|
20
27
|
export declare function getLatestBenchmark(suite: string): Promise<BenchmarkElement>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns the timestamp of the last benchmark update.
|
|
30
|
+
* We can use this to find out when the last (recorded) benchmark run was.
|
|
31
|
+
*/
|
|
21
32
|
export declare function getLastBenchmarkUpdate(): Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Get the total time taken for dataflow analysis in the given suite.
|
|
35
|
+
*/
|
|
22
36
|
export declare function getLatestDfAnalysisTime(suite: string): Promise<number>;
|
|
23
37
|
export {};
|
|
@@ -44,6 +44,10 @@ const path_1 = __importDefault(require("path"));
|
|
|
44
44
|
const assert_1 = require("../../util/assert");
|
|
45
45
|
const BenchmarkDataPath = path_1.default.resolve(__dirname, '..', '..', '..', 'wiki', 'stats', 'benchmark', 'data.js');
|
|
46
46
|
let benchmarkData = null;
|
|
47
|
+
/**
|
|
48
|
+
* Loads the benchmark data from the predefined path.
|
|
49
|
+
* This is the location which is used by the CI to store benchmark results.
|
|
50
|
+
*/
|
|
47
51
|
async function loadBenchmarkData() {
|
|
48
52
|
if (benchmarkData === null) {
|
|
49
53
|
// provide a window object to attach to in the import
|
|
@@ -54,12 +58,19 @@ async function loadBenchmarkData() {
|
|
|
54
58
|
}
|
|
55
59
|
return benchmarkData;
|
|
56
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns the latest benchmark for the given suite.
|
|
63
|
+
*/
|
|
57
64
|
async function getLatestBenchmark(suite) {
|
|
58
65
|
// provide a window object to attach to in the import
|
|
59
66
|
const suiteData = (await loadBenchmarkData()).entries[suite];
|
|
60
67
|
(0, assert_1.guard)(suiteData, `No benchmark data for suite '${suite}' found!`);
|
|
61
68
|
return suiteData.sort((a, b) => b.date - a.date)[0];
|
|
62
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns the timestamp of the last benchmark update.
|
|
72
|
+
* We can use this to find out when the last (recorded) benchmark run was.
|
|
73
|
+
*/
|
|
63
74
|
async function getLastBenchmarkUpdate() {
|
|
64
75
|
return (await loadBenchmarkData()).lastUpdate;
|
|
65
76
|
}
|
|
@@ -68,6 +79,9 @@ function getBenchmarkElement(bench, name) {
|
|
|
68
79
|
(0, assert_1.guard)(element, `No benchmark data for '${name}' found!`);
|
|
69
80
|
return element;
|
|
70
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the total time taken for dataflow analysis in the given suite.
|
|
84
|
+
*/
|
|
71
85
|
async function getLatestDfAnalysisTime(suite) {
|
|
72
86
|
const elem = await getLatestBenchmark(suite);
|
|
73
87
|
const [parse, normalize, analyze] = ['Retrieve AST from R code', 'Normalize R AST', 'Produce dataflow information'].map(name => getBenchmarkElement(elem, name));
|
|
@@ -2,7 +2,7 @@ import type { NormalizedAst } from '../../r-bridge/lang-4.x/ast/model/processing
|
|
|
2
2
|
import type { KnownParser } from '../../r-bridge/parser';
|
|
3
3
|
import type { DataflowInformation } from '../../dataflow/info';
|
|
4
4
|
import type { ControlFlowInformation } from '../../control-flow/control-flow-graph';
|
|
5
|
-
import type
|
|
5
|
+
import { type CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
|
|
6
6
|
type GetCfgReturn = {
|
|
7
7
|
info: ControlFlowInformation;
|
|
8
8
|
ast: NormalizedAst;
|
|
@@ -10,6 +10,9 @@ type GetCfgReturn = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare function getCfg(parser: KnownParser, code: string, simplifications?: readonly CfgSimplificationPassName[], useDfg?: true): Promise<Required<GetCfgReturn>>;
|
|
12
12
|
export declare function getCfg(parser: KnownParser, code: string, simplifications?: readonly CfgSimplificationPassName[], useDfg?: boolean): Promise<GetCfgReturn>;
|
|
13
|
+
/**
|
|
14
|
+
* Serializes the given control flow graph to a mermaid diagram.
|
|
15
|
+
*/
|
|
13
16
|
export declare function printCfg(cfg: ControlFlowInformation, ast: NormalizedAst, prefix?: string, simplify?: boolean): string;
|
|
14
17
|
export interface PrintCfgOptions {
|
|
15
18
|
readonly showCode?: boolean;
|
|
@@ -19,5 +22,8 @@ export interface PrintCfgOptions {
|
|
|
19
22
|
readonly simplify?: boolean;
|
|
20
23
|
readonly useDfg?: boolean;
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Generates and prints the control flow graph for the given code, along with optional metadata and the original code.
|
|
27
|
+
*/
|
|
22
28
|
export declare function printCfgCode(parser: KnownParser, code: string, { showCode, openCode, prefix, simplifications, simplify, useDfg }?: PrintCfgOptions): Promise<string>;
|
|
23
29
|
export {};
|
|
@@ -5,31 +5,37 @@ exports.printCfg = printCfg;
|
|
|
5
5
|
exports.printCfgCode = printCfgCode;
|
|
6
6
|
const extract_cfg_1 = require("../../control-flow/extract-cfg");
|
|
7
7
|
const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines");
|
|
8
|
-
const retriever_1 = require("../../r-bridge/retriever");
|
|
9
8
|
const time_1 = require("../../util/text/time");
|
|
10
9
|
const doc_files_1 = require("./doc-files");
|
|
11
10
|
const cfg_1 = require("../../util/mermaid/cfg");
|
|
12
11
|
const doc_code_1 = require("./doc-code");
|
|
13
12
|
const cfg_simplification_1 = require("../../control-flow/cfg-simplification");
|
|
14
|
-
const
|
|
13
|
+
const flowr_analyzer_context_1 = require("../../project/context/flowr-analyzer-context");
|
|
14
|
+
/**
|
|
15
|
+
* Returns the control flow graph for the given code.
|
|
16
|
+
*/
|
|
15
17
|
async function getCfg(parser, code, simplifications = [], useDfg = true) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}, config_1.defaultConfigOptions).allRemainingSteps();
|
|
21
|
-
const cfg = (0, extract_cfg_1.extractCfg)(result.normalize, config_1.defaultConfigOptions, useDfg ? result.dataflow.graph : undefined, [...cfg_simplification_1.DefaultCfgSimplificationOrder, ...simplifications]);
|
|
18
|
+
const context = (0, flowr_analyzer_context_1.contextFromInput)(code);
|
|
19
|
+
const result = await (useDfg ? (0, default_pipelines_1.createDataflowPipeline)(parser, { context })
|
|
20
|
+
: (0, default_pipelines_1.createNormalizePipeline)(parser, { context })).allRemainingSteps();
|
|
21
|
+
const cfg = (0, extract_cfg_1.extractCfg)(result.normalize, context, useDfg ? result.dataflow.graph : undefined, [...cfg_simplification_1.DefaultCfgSimplificationOrder, ...simplifications]);
|
|
22
22
|
return {
|
|
23
23
|
info: cfg,
|
|
24
24
|
ast: result.normalize,
|
|
25
25
|
dataflow: 'dataflow' in result ? result.dataflow : undefined
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Serializes the given control flow graph to a mermaid diagram.
|
|
30
|
+
*/
|
|
28
31
|
function printCfg(cfg, ast, prefix = 'flowchart BT\n', simplify = false) {
|
|
29
32
|
return `
|
|
30
33
|
${(0, doc_code_1.codeBlock)('mermaid', (0, cfg_1.cfgToMermaid)(cfg, ast, prefix, simplify))}
|
|
31
34
|
`;
|
|
32
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Generates and prints the control flow graph for the given code, along with optional metadata and the original code.
|
|
38
|
+
*/
|
|
33
39
|
async function printCfgCode(parser, code, { showCode = true, openCode = false, prefix = 'flowchart BT\n', simplifications = [], simplify = false, useDfg = true } = {}) {
|
|
34
40
|
const now = performance.now();
|
|
35
41
|
const res = await getCfg(parser, code, simplifications, useDfg);
|
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
import { scripts } from '../../cli/common/scripts-info';
|
|
3
3
|
import { flowrMainOptionDefinitions } from '../../cli/flowr-main-options';
|
|
4
4
|
type ScriptOptions<Type extends keyof typeof scripts | 'flowr'> = Type extends keyof typeof scripts ? typeof scripts[Type]['options'][number]['name'] : Type extends 'flowr' ? typeof flowrMainOptionDefinitions[number]['name'] : never;
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
5
8
|
export declare function getCliLongOptionOf<ScriptName extends keyof typeof scripts | 'flowr', OptionName extends ScriptOptions<ScriptName>>(scriptName: ScriptName, optionName: OptionName, withAlias?: boolean, quote?: boolean): string;
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
6
12
|
export declare function multipleCliOptions<ScriptName extends keyof typeof scripts | 'flowr', OptionName extends ScriptOptions<ScriptName>>(scriptName: ScriptName, ...options: OptionName[]): string;
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
7
16
|
export declare function getReplCommand(commandName: string, quote?: boolean, showStar?: boolean): string;
|
|
8
17
|
export {};
|
|
@@ -10,6 +10,9 @@ const html_hover_over_1 = require("../../util/html-hover-over");
|
|
|
10
10
|
const flowr_main_options_1 = require("../../cli/flowr-main-options");
|
|
11
11
|
const repl_commands_1 = require("../../cli/repl/commands/repl-commands");
|
|
12
12
|
const doc_escape_1 = require("./doc-escape");
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
13
16
|
function getCliLongOptionOf(scriptName, optionName, withAlias = false, quote = true) {
|
|
14
17
|
const script = scriptName === 'flowr' ? flowr_main_options_1.flowrMainOptionDefinitions : scripts_info_1.scripts[scriptName].options;
|
|
15
18
|
(0, assert_1.guard)(script !== undefined, () => `Unknown script ${scriptName}, pick one of ${JSON.stringify(Object.keys(scripts_info_1.scripts))}.`);
|
|
@@ -22,9 +25,15 @@ function getCliLongOptionOf(scriptName, optionName, withAlias = false, quote = t
|
|
|
22
25
|
// span ensures split even with ligatures
|
|
23
26
|
return (0, html_hover_over_1.textWithTooltip)(`${char}-${ligatureBreaker}-${optionName}${char}`, 'Description (Command Line Argument): ' + description) + alias;
|
|
24
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
25
31
|
function multipleCliOptions(scriptName, ...options) {
|
|
26
32
|
return options.map(o => getCliLongOptionOf(scriptName, o, false, true)).join(' ');
|
|
27
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
28
37
|
function getReplCommand(commandName, quote = true, showStar = false) {
|
|
29
38
|
const availableNames = (0, repl_commands_1.getReplCommands)();
|
|
30
39
|
const commands = availableNames[commandName];
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Produces a code block in markdown format.
|
|
3
|
+
* @example
|
|
4
|
+
* ```typescript
|
|
5
|
+
* codeBlock('ts', 'const x = 42;');
|
|
6
|
+
* // Produces:
|
|
7
|
+
* //
|
|
8
|
+
* // ```ts
|
|
9
|
+
* // const x = 42;
|
|
10
|
+
* // ```
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
1
13
|
export declare function codeBlock(language: string, code: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Produces an inline code span in markdown format.
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* codeInline('const x = 42;');
|
|
19
|
+
* // Produces: `<code>const x = 42;</code>`
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
2
22
|
export declare function codeInline(code: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Produces a JSON code block in markdown format, with optional length limit.
|
|
25
|
+
* If the pretty-printed JSON exceeds the limit, a message is shown instead of the full JSON.
|
|
26
|
+
*/
|
|
3
27
|
export declare function jsonWithLimit(object: object, maxLength?: number, tooLongText?: string): string;
|