@eagleoutice/flowr 2.6.2 → 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 +36 -34
- package/abstract-interpretation/data-frame/absint-visitor.js +3 -3
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +7 -7
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +20 -16
- package/abstract-interpretation/data-frame/semantics.js +8 -0
- package/abstract-interpretation/data-frame/shape-inference.d.ts +3 -3
- package/abstract-interpretation/data-frame/shape-inference.js +3 -3
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -1
- package/benchmark/slicer.d.ts +1 -0
- package/benchmark/slicer.js +13 -12
- package/benchmark/summarizer/first-phase/process.js +1 -1
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -1
- package/benchmark/summarizer/second-phase/graph.js +3 -1
- package/cli/export-quads-app.js +1 -1
- package/cli/repl/commands/repl-dataflow.js +2 -1
- package/cli/repl/commands/repl-parse.js +16 -4
- package/cli/repl/commands/repl-query.js +1 -1
- package/cli/repl/core.js +16 -13
- package/cli/repl/server/connection.js +2 -1
- package/cli/script-core/statistics-helper-core.js +2 -1
- package/cli/slicer-app.js +3 -4
- package/cli/wiki.d.ts +4 -0
- package/cli/wiki.js +165 -0
- package/config.d.ts +4 -0
- package/config.js +6 -0
- 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/extract-cfg.d.ts +9 -3
- package/control-flow/extract-cfg.js +44 -4
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -2
- package/control-flow/simple-visitor.js +2 -2
- package/control-flow/useless-loop.d.ts +3 -3
- package/control-flow/useless-loop.js +14 -5
- package/core/pipeline-executor.d.ts +3 -6
- package/core/pipeline-executor.js +4 -7
- package/core/print/normalize-printer.d.ts +1 -1
- package/core/print/normalize-printer.js +2 -2
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/00-parse.js +1 -1
- package/core/steps/all/core/10-normalize.d.ts +3 -9
- package/core/steps/all/core/10-normalize.js +1 -16
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +2 -3
- 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/default-pipelines.d.ts +55 -56
- package/core/steps/pipeline/default-pipelines.js +8 -8
- package/dataflow/environments/clone.d.ts +0 -1
- package/dataflow/environments/clone.js +12 -2
- package/dataflow/environments/diff.js +2 -2
- package/dataflow/environments/overwrite.d.ts +1 -5
- package/dataflow/environments/overwrite.js +3 -19
- package/dataflow/environments/scoping.d.ts +6 -2
- package/dataflow/environments/scoping.js +6 -2
- package/dataflow/eval/resolve/resolve-argument.js +2 -2
- package/dataflow/eval/values/string/string-constants.d.ts +9 -3
- package/dataflow/eval/values/string/string-constants.js +9 -3
- package/dataflow/extractor.d.ts +2 -3
- package/dataflow/extractor.js +25 -22
- package/dataflow/graph/graph.d.ts +3 -9
- package/dataflow/graph/graph.js +0 -13
- package/dataflow/graph/unknown-replacement.d.ts +4 -2
- package/dataflow/graph/unknown-replacement.js +4 -2
- package/dataflow/info.d.ts +7 -0
- package/dataflow/info.js +21 -0
- package/dataflow/internal/linker.js +7 -4
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +2 -2
- package/dataflow/internal/process/functions/call/argument/make-argument.js +2 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +4 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +1 -1
- 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.js +6 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +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.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +6 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +6 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +15 -10
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +78 -75
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -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.js +1 -1
- package/dataflow/internal/process/functions/call/common.d.ts +1 -1
- package/dataflow/internal/process/functions/call/common.js +4 -4
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -1
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -1
- package/dataflow/internal/process/functions/call/known-call-handling.js +3 -3
- package/dataflow/internal/process/functions/call/named-call-handling.js +4 -4
- package/dataflow/internal/process/functions/process-parameter.js +4 -4
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +1 -1
- package/dataflow/origin/dfg-get-symbol-refs.js +1 -1
- package/dataflow/processor.d.ts +6 -11
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +0 -2
- package/documentation/data/faq/faqs.js +27 -18
- 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 +1 -0
- package/documentation/data/faq/wiki-faq-store.js +10 -2
- package/documentation/data/server/doc-data-server-messages.js +1 -1
- 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} +31 -35
- package/documentation/doc-util/doc-benchmarks.d.ts +6 -4
- package/documentation/doc-util/doc-benchmarks.js +6 -4
- package/documentation/doc-util/doc-cfg.js +5 -8
- package/documentation/doc-util/doc-dfg.d.ts +7 -7
- package/documentation/doc-util/doc-dfg.js +13 -13
- package/documentation/doc-util/doc-escape.d.ts +6 -0
- package/documentation/doc-util/doc-escape.js +11 -0
- package/documentation/doc-util/doc-general.d.ts +22 -2
- package/documentation/doc-util/doc-general.js +22 -2
- package/documentation/doc-util/doc-normalized-ast.d.ts +10 -5
- package/documentation/doc-util/doc-normalized-ast.js +12 -9
- package/documentation/doc-util/doc-query.d.ts +12 -4
- package/documentation/doc-util/doc-query.js +18 -11
- package/documentation/doc-util/doc-search.d.ts +0 -30
- package/documentation/doc-util/doc-search.js +2 -73
- package/documentation/doc-util/doc-server-message.d.ts +5 -5
- package/documentation/doc-util/doc-server-message.js +4 -4
- package/documentation/doc-util/doc-types.d.ts +69 -32
- package/documentation/doc-util/doc-types.js +108 -61
- 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} +164 -175
- package/documentation/wiki-dataflow-graph.d.ts +9 -0
- package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +142 -172
- 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} +59 -56
- 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} +62 -47
- package/documentation/wiki-search.d.ts +9 -0
- package/documentation/wiki-search.js +61 -0
- package/linter/linter-executor.js +3 -2
- package/linter/linter-format.d.ts +2 -2
- package/linter/linter-rules.d.ts +13 -17
- package/linter/rules/absolute-path.d.ts +1 -2
- package/linter/rules/absolute-path.js +2 -2
- package/linter/rules/dataframe-access-validation.d.ts +1 -1
- package/linter/rules/dataframe-access-validation.js +12 -8
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -5
- package/linter/rules/file-path-validity.d.ts +1 -1
- package/linter/rules/file-path-validity.js +4 -4
- package/linter/rules/function-finder-util.d.ts +1 -5
- package/linter/rules/naming-convention.d.ts +2 -2
- package/linter/rules/naming-convention.js +1 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +3 -2
- package/linter/rules/seeded-randomness.js +33 -13
- package/linter/rules/unused-definition.d.ts +1 -1
- package/linter/rules/useless-loop.d.ts +2 -2
- package/linter/rules/useless-loop.js +2 -2
- package/package.json +6 -17
- package/project/cache/flowr-analyzer-cache.d.ts +7 -10
- package/project/cache/flowr-analyzer-cache.js +17 -38
- 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 +30 -5
- package/project/context/flowr-analyzer-context.js +48 -4
- package/project/context/flowr-analyzer-files-context.d.ts +63 -13
- package/project/context/flowr-analyzer-files-context.js +110 -39
- package/project/context/flowr-file.d.ts +32 -10
- package/project/context/flowr-file.js +30 -9
- package/project/flowr-analyzer-builder.d.ts +22 -28
- package/project/flowr-analyzer-builder.js +32 -70
- package/project/flowr-analyzer.d.ts +55 -14
- package/project/flowr-analyzer.js +53 -8
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +7 -1
- 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 -3
- 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.js +7 -1
- package/queries/catalog/call-context-query/call-context-query-executor.js +4 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +5 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +25 -18
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +2 -2
- package/queries/catalog/df-shape-query/df-shape-query-format.js +6 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +2 -1
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +2 -1
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- 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 +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +1 -1
- package/queries/catalog/linter-query/linter-query-format.d.ts +1 -1
- package/queries/catalog/linter-query/linter-query-format.js +13 -2
- package/queries/catalog/location-map-query/location-map-query-executor.js +2 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +1 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +1 -1
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-format.d.ts +1 -1
- package/queries/catalog/project-query/project-query-executor.js +3 -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 +2 -2
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +2 -2
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +1 -1
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +13 -1
- package/queries/query.d.ts +26 -18
- package/queries/query.js +21 -1
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +4 -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/processing/decorate.d.ts +5 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +24 -11
- package/r-bridge/lang-4.x/ast/model/type.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/model/type.js +2 -0
- 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 +9 -8
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -10
- 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/tree-sitter/tree-sitter-executor.d.ts +3 -3
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +5 -4
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +3 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +14 -5
- package/r-bridge/parser.d.ts +15 -5
- package/r-bridge/parser.js +27 -13
- package/r-bridge/retriever.d.ts +9 -15
- package/r-bridge/retriever.js +14 -5
- package/r-bridge/shell.d.ts +1 -1
- package/r-bridge/shell.js +1 -1
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.js +1 -1
- package/reconstruct/reconstruct.d.ts +17 -9
- package/reconstruct/reconstruct.js +19 -8
- package/search/flowr-search.d.ts +12 -0
- package/search/search-executor/search-enrichers.d.ts +9 -2
- package/search/search-executor/search-enrichers.js +1 -3
- package/search/search-executor/search-generators.d.ts +1 -1
- package/search/search-executor/search-generators.js +9 -4
- package/slicing/criterion/collect-all.d.ts +3 -2
- package/slicing/criterion/collect-all.js +1 -1
- package/slicing/criterion/parse.js +4 -4
- package/statistics/features/supported/assignments/assignments.js +1 -1
- package/statistics/features/supported/control-flow/control-flow.js +1 -1
- package/statistics/features/supported/data-access/data-access.js +1 -1
- package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
- 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/used-functions/used-functions.js +1 -1
- package/statistics/features/supported/variables/variables.js +1 -1
- package/statistics/statistics.js +3 -2
- package/util/assert.d.ts +4 -0
- package/util/assert.js +4 -0
- package/util/files.d.ts +1 -1
- package/util/files.js +1 -1
- package/util/mermaid/ast.d.ts +4 -3
- package/util/mermaid/ast.js +36 -8
- package/util/mermaid/cfg.js +1 -1
- package/util/version.js +1 -1
- package/documentation/print-analyzer-wiki.d.ts +0 -1
- package/documentation/print-analyzer-wiki.js +0 -141
- 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 -5
- 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 -18
- 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/util/formats/adapter-format.d.ts +0 -6
- package/util/formats/adapter-format.js +0 -3
- package/util/formats/adapter.d.ts +0 -27
- package/util/formats/adapter.js +0 -58
- 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 -35
- package/util/formats/adapters/rmd-adapter.js +0 -100
|
@@ -17,10 +17,10 @@ exports.loopyFunctions = new Set(['builtin:for-loop', 'builtin:while-loop', 'bui
|
|
|
17
17
|
* @param dataflow - dataflow graph
|
|
18
18
|
* @param controlflow - control flow graph
|
|
19
19
|
* @param ast - normalized ast
|
|
20
|
-
* @param
|
|
20
|
+
* @param ctx - current flowr analyzer context
|
|
21
21
|
* @returns true if the given loop only iterates once
|
|
22
22
|
*/
|
|
23
|
-
function onlyLoopsOnce(loop, dataflow, controlflow, ast,
|
|
23
|
+
function onlyLoopsOnce(loop, dataflow, controlflow, ast, ctx) {
|
|
24
24
|
const vertex = dataflow.getVertex(loop);
|
|
25
25
|
if (!vertex) {
|
|
26
26
|
return undefined;
|
|
@@ -36,7 +36,11 @@ function onlyLoopsOnce(loop, dataflow, controlflow, ast, config) {
|
|
|
36
36
|
if (vectorOfLoop === r_function_call_1.EmptyArgument) {
|
|
37
37
|
return undefined;
|
|
38
38
|
}
|
|
39
|
-
const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(vectorOfLoop.nodeId, {
|
|
39
|
+
const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(vectorOfLoop.nodeId, {
|
|
40
|
+
graph: dataflow,
|
|
41
|
+
idMap: dataflow.idMap,
|
|
42
|
+
resolve: ctx.config.solver.variables
|
|
43
|
+
}));
|
|
40
44
|
if (values === undefined || values.elements.length !== 1 || values.elements[0].type !== 'vector' || !(0, r_value_1.isValue)(values.elements[0].elements)) {
|
|
41
45
|
return undefined;
|
|
42
46
|
}
|
|
@@ -49,7 +53,7 @@ function onlyLoopsOnce(loop, dataflow, controlflow, ast, config) {
|
|
|
49
53
|
controlFlow: controlflow,
|
|
50
54
|
normalizedAst: ast,
|
|
51
55
|
dfg: dataflow,
|
|
52
|
-
|
|
56
|
+
ctx: ctx,
|
|
53
57
|
defaultVisitingOrder: 'forward'
|
|
54
58
|
});
|
|
55
59
|
return visitor.loopsOnlyOnce();
|
|
@@ -67,7 +71,12 @@ class CfgSingleIterationLoopDetector extends semantic_cfg_guided_visitor_1.Seman
|
|
|
67
71
|
if (data.call.args.length !== 1 || data.call.args[0] === r_function_call_1.EmptyArgument) {
|
|
68
72
|
return undefined;
|
|
69
73
|
}
|
|
70
|
-
const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(data.call.args[0].nodeId, {
|
|
74
|
+
const values = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(data.call.args[0].nodeId, {
|
|
75
|
+
graph: this.config.dfg,
|
|
76
|
+
full: true,
|
|
77
|
+
idMap: this.config.normalizedAst.idMap,
|
|
78
|
+
resolve: this.config.ctx.config.solver.variables
|
|
79
|
+
}));
|
|
71
80
|
if (values === undefined || values.elements.length !== 1 || values.elements[0].type != 'logical' || !(0, r_value_1.isValue)(values.elements[0].value)) {
|
|
72
81
|
return undefined;
|
|
73
82
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type PipelineStepName, PipelineStepStage } from './steps/pipeline-step';
|
|
2
2
|
import type { Pipeline, PipelineInput, PipelineOutput, PipelinePerRequestInput, PipelineStepOutputWithName } from './steps/pipeline/pipeline';
|
|
3
|
-
import type { FlowrConfigOptions } from '../config';
|
|
4
3
|
/**
|
|
5
4
|
* **Please note:** The {@link PipelineExecutor} is now considered to be a rather low-level API for flowR. While it still works
|
|
6
5
|
* and is the basis for all other layers, we strongly recommend using the {@link FlowrAnalyzer} and its {@link FlowrAnalyzerBuilder|builder}
|
|
@@ -93,18 +92,16 @@ export declare class PipelineExecutor<P extends Pipeline> {
|
|
|
93
92
|
private output;
|
|
94
93
|
private currentExecutionStage;
|
|
95
94
|
private stepCounter;
|
|
96
|
-
private readonly flowrConfig;
|
|
97
95
|
/**
|
|
98
96
|
* Construct a new pipeline executor.
|
|
99
97
|
* The required additional input is specified by the {@link IPipelineStep#requiredInput|required input configuration} of each step in the `pipeline`.
|
|
100
98
|
*
|
|
101
99
|
* Please see {@link createDataflowPipeline} and friends for engine agnostic shortcuts to create a pipeline executor.
|
|
102
100
|
* And in general, please prefer using the {@link FlowrAnalyzer} and its {@link FlowrAnalyzerBuilder|builder} to create and use an analyzer instance.
|
|
103
|
-
* @param pipeline
|
|
104
|
-
* @param input
|
|
105
|
-
* @param flowrConfig - The flowr config containing the built-in definitions
|
|
101
|
+
* @param pipeline - The {@link Pipeline} to execute, probably created with {@link createPipeline}.
|
|
102
|
+
* @param input - External {@link PipelineInput|configuration and input} required to execute the given pipeline.
|
|
106
103
|
*/
|
|
107
|
-
constructor(pipeline: P, input: PipelineInput<P
|
|
104
|
+
constructor(pipeline: P, input: PipelineInput<P>);
|
|
108
105
|
/**
|
|
109
106
|
* Retrieve the {@link Pipeline|pipeline} that is currently being.
|
|
110
107
|
*/
|
|
@@ -94,22 +94,19 @@ class PipelineExecutor {
|
|
|
94
94
|
output = {};
|
|
95
95
|
currentExecutionStage = 0 /* PipelineStepStage.OncePerFile */;
|
|
96
96
|
stepCounter = 0;
|
|
97
|
-
flowrConfig;
|
|
98
97
|
/**
|
|
99
98
|
* Construct a new pipeline executor.
|
|
100
99
|
* The required additional input is specified by the {@link IPipelineStep#requiredInput|required input configuration} of each step in the `pipeline`.
|
|
101
100
|
*
|
|
102
101
|
* Please see {@link createDataflowPipeline} and friends for engine agnostic shortcuts to create a pipeline executor.
|
|
103
102
|
* And in general, please prefer using the {@link FlowrAnalyzer} and its {@link FlowrAnalyzerBuilder|builder} to create and use an analyzer instance.
|
|
104
|
-
* @param pipeline
|
|
105
|
-
* @param input
|
|
106
|
-
* @param flowrConfig - The flowr config containing the built-in definitions
|
|
103
|
+
* @param pipeline - The {@link Pipeline} to execute, probably created with {@link createPipeline}.
|
|
104
|
+
* @param input - External {@link PipelineInput|configuration and input} required to execute the given pipeline.
|
|
107
105
|
*/
|
|
108
|
-
constructor(pipeline, input
|
|
106
|
+
constructor(pipeline, input) {
|
|
109
107
|
this.pipeline = pipeline;
|
|
110
108
|
this.length = pipeline.order.length;
|
|
111
109
|
this.input = input;
|
|
112
|
-
this.flowrConfig = flowrConfig;
|
|
113
110
|
}
|
|
114
111
|
/**
|
|
115
112
|
* Retrieve the {@link Pipeline|pipeline} that is currently being.
|
|
@@ -181,7 +178,7 @@ class PipelineExecutor {
|
|
|
181
178
|
if (expectedStepName !== undefined) {
|
|
182
179
|
(0, assert_1.guard)(step.name === expectedStepName, () => `Cannot execute next step, expected step ${JSON.stringify(expectedStepName)} but got ${step.name}.`);
|
|
183
180
|
}
|
|
184
|
-
return [step.name, step.processor(this.output, this.input
|
|
181
|
+
return [step.name, step.processor(this.output, this.input)];
|
|
185
182
|
}
|
|
186
183
|
/**
|
|
187
184
|
* This only makes sense if you have already run a request and want to re-use the per-file results for a new one.
|
|
@@ -3,7 +3,7 @@ import type { NormalizedAst } from '../../r-bridge/lang-4.x/ast/model/processing
|
|
|
3
3
|
/** Should work with larger things as well */
|
|
4
4
|
export declare function normalizedAstToJson(ast: NormalizedAst): string;
|
|
5
5
|
/**
|
|
6
|
-
* Normalized AST to quads serialization
|
|
6
|
+
* Normalized AST to quads serialization this does not have multi-file support
|
|
7
7
|
* @see {@link serialize2quads}
|
|
8
8
|
* @see {@link QuadSerializationConfiguration}
|
|
9
9
|
* @see {@link normalizedAstToMermaid}
|
|
@@ -18,7 +18,7 @@ function normalizedAstToJson(ast) {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Normalized AST to quads serialization
|
|
21
|
+
* Normalized AST to quads serialization this does not have multi-file support
|
|
22
22
|
* @see {@link serialize2quads}
|
|
23
23
|
* @see {@link QuadSerializationConfiguration}
|
|
24
24
|
* @see {@link normalizedAstToMermaid}
|
|
@@ -26,7 +26,7 @@ function normalizedAstToJson(ast) {
|
|
|
26
26
|
* @see {@link printNormalizedAstToMermaidUrl}
|
|
27
27
|
*/
|
|
28
28
|
function normalizedAstToQuads(ast, config) {
|
|
29
|
-
return (0, quads_1.serialize2quads)(ast.ast, config);
|
|
29
|
+
return (0, quads_1.serialize2quads)(ast.ast.files[0].root, config);
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Serialize the normalized AST to mermaid format
|
|
@@ -14,7 +14,7 @@ export declare const PARSE_WITH_R_SHELL_STEP: {
|
|
|
14
14
|
(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
|
|
15
15
|
(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
|
|
16
16
|
};
|
|
17
|
-
readonly 5: (
|
|
17
|
+
readonly 5: (p: import("../../../../r-bridge/parser").ParseStepOutput<string>, config: QuadSerializationConfiguration) => string;
|
|
18
18
|
};
|
|
19
19
|
readonly dependencies: readonly [];
|
|
20
20
|
readonly requiredInput: ParseRequiredInput<string>;
|
|
@@ -13,7 +13,7 @@ exports.PARSE_WITH_R_SHELL_STEP = {
|
|
|
13
13
|
printer: {
|
|
14
14
|
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
|
|
15
15
|
[2 /* StepOutputFormat.Json */]: JSON.stringify,
|
|
16
|
-
[5 /* StepOutputFormat.RdfQuads */]: (
|
|
16
|
+
[5 /* StepOutputFormat.RdfQuads */]: (p, config) => (0, parse_printer_1.parseToQuads)(p.files[0].parsed, config)
|
|
17
17
|
},
|
|
18
18
|
dependencies: [],
|
|
19
19
|
requiredInput: undefined
|
|
@@ -3,22 +3,16 @@ import { normalizedAstToJson, normalizedAstToQuads, printNormalizedAstToMermaid,
|
|
|
3
3
|
import { PipelineStepStage } from '../../pipeline-step';
|
|
4
4
|
import type { IdGenerator } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
5
|
import type { NoInfo } from '../../../../r-bridge/lang-4.x/ast/model/model';
|
|
6
|
-
import type { RParseRequests } from '../../../../r-bridge/retriever';
|
|
7
6
|
import type { ParseStepOutput } from '../../../../r-bridge/parser';
|
|
7
|
+
import type { FlowrAnalyzerContext } from '../../../../project/context/flowr-analyzer-context';
|
|
8
8
|
export interface NormalizeRequiredInput {
|
|
9
9
|
/** This id generator is only necessary if you want to retrieve a dataflow from the parsed R AST, it determines the id generator to use and by default uses the {@link deterministicCountingIdGenerator}*/
|
|
10
10
|
readonly getId?: IdGenerator<NoInfo>;
|
|
11
|
-
readonly
|
|
12
|
-
/** assume the input stems from a file and use the given path as the file path for the AST */
|
|
13
|
-
readonly overwriteFilePath?: string;
|
|
11
|
+
readonly context: FlowrAnalyzerContext;
|
|
14
12
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Get the file attached to the current request, if any
|
|
17
|
-
*/
|
|
18
|
-
export declare function getCurrentRequestFile(request: RParseRequests | undefined): string | undefined;
|
|
19
13
|
declare function processor(results: {
|
|
20
14
|
parse?: ParseStepOutput<string>;
|
|
21
|
-
}, input: Partial<NormalizeRequiredInput>): import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../../r-bridge/lang-4.x/ast/model/
|
|
15
|
+
}, input: Partial<NormalizeRequiredInput>): import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../../r-bridge/lang-4.x/ast/model/nodes/r-project").RProject<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
|
|
22
16
|
export declare const NORMALIZE: {
|
|
23
17
|
readonly name: "normalize";
|
|
24
18
|
readonly humanReadableName: "normalize";
|
|
@@ -1,26 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NORMALIZE = void 0;
|
|
4
|
-
exports.getCurrentRequestFile = getCurrentRequestFile;
|
|
5
4
|
const print_1 = require("../../../print/print");
|
|
6
5
|
const normalize_printer_1 = require("../../../print/normalize-printer");
|
|
7
6
|
const parser_1 = require("../../../../r-bridge/lang-4.x/ast/parser/json/parser");
|
|
8
|
-
/**
|
|
9
|
-
* Get the file attached to the current request, if any
|
|
10
|
-
*/
|
|
11
|
-
function getCurrentRequestFile(request) {
|
|
12
|
-
if (request === undefined) {
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
else if (Array.isArray(request)) {
|
|
16
|
-
return request[0].request === 'file' ? request[0].content : undefined;
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
return request.request === 'file' ? request.content : undefined;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
7
|
function processor(results, input) {
|
|
23
|
-
return (0, parser_1.normalize)(results.parse, input.getId
|
|
8
|
+
return (0, parser_1.normalize)(results.parse, input.getId);
|
|
24
9
|
}
|
|
25
10
|
exports.NORMALIZE = {
|
|
26
11
|
name: 'normalize',
|
|
@@ -2,12 +2,11 @@ import { internalPrinter } from '../../../print/print';
|
|
|
2
2
|
import { normalizedAstToJson, normalizedAstToQuads, printNormalizedAstToMermaid, printNormalizedAstToMermaidUrl } from '../../../print/normalize-printer';
|
|
3
3
|
import { PipelineStepStage } from '../../pipeline-step';
|
|
4
4
|
import { type NormalizeRequiredInput } from './10-normalize';
|
|
5
|
-
import type { FlowrConfigOptions } from '../../../../config';
|
|
6
5
|
import type { ParseStepOutput } from '../../../../r-bridge/parser';
|
|
7
6
|
import type { Tree } from 'web-tree-sitter';
|
|
8
7
|
declare function processor(results: {
|
|
9
|
-
|
|
10
|
-
}, input: Partial<NormalizeRequiredInput
|
|
8
|
+
parse?: ParseStepOutput<Tree>;
|
|
9
|
+
}, input: Partial<NormalizeRequiredInput>): import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../../r-bridge/lang-4.x/ast/model/nodes/r-project").RProject<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
|
|
11
10
|
export declare const NORMALIZE_TREE_SITTER: {
|
|
12
11
|
readonly name: "normalize";
|
|
13
12
|
readonly humanReadableName: "normalize tree-sitter tree";
|
|
@@ -4,9 +4,8 @@ exports.NORMALIZE_TREE_SITTER = void 0;
|
|
|
4
4
|
const print_1 = require("../../../print/print");
|
|
5
5
|
const normalize_printer_1 = require("../../../print/normalize-printer");
|
|
6
6
|
const parser_1 = require("../../../../r-bridge/lang-4.x/ast/parser/json/parser");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return (0, parser_1.normalizeTreeSitter)(results['parse'], input.getId, config, input.overwriteFilePath ?? (0, _10_normalize_1.getCurrentRequestFile)(input.request));
|
|
7
|
+
function processor(results, input) {
|
|
8
|
+
return (0, parser_1.normalizeTreeSitter)(results.parse, input.getId, input.context.config);
|
|
10
9
|
}
|
|
11
10
|
exports.NORMALIZE_TREE_SITTER = {
|
|
12
11
|
name: 'normalize',
|
|
@@ -2,15 +2,14 @@ import { internalPrinter } from '../../../print/print';
|
|
|
2
2
|
import { PipelineStepStage } from '../../pipeline-step';
|
|
3
3
|
import { dataflowGraphToJson, dataflowGraphToMermaid, dataflowGraphToMermaidUrl, dataflowGraphToQuads } from '../../../print/dataflow-printer';
|
|
4
4
|
import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
|
-
import type { RParseRequests } from '../../../../r-bridge/retriever';
|
|
6
5
|
import type { KnownParserType, Parser } from '../../../../r-bridge/parser';
|
|
7
|
-
import type {
|
|
6
|
+
import type { FlowrAnalyzerContext } from '../../../../project/context/flowr-analyzer-context';
|
|
8
7
|
declare function processor(results: {
|
|
9
8
|
normalize?: NormalizedAst;
|
|
10
9
|
}, input: {
|
|
11
|
-
request?: RParseRequests;
|
|
12
10
|
parser?: Parser<KnownParserType>;
|
|
13
|
-
|
|
11
|
+
context?: FlowrAnalyzerContext;
|
|
12
|
+
}): import("../../../../dataflow/info").DataflowInformation & {
|
|
14
13
|
cfgQuick: import("../../../../control-flow/control-flow-graph").ControlFlowInformation | undefined;
|
|
15
14
|
};
|
|
16
15
|
export declare const STATIC_DATAFLOW: {
|
|
@@ -17,8 +17,8 @@ const staticDataflowCommon = {
|
|
|
17
17
|
},
|
|
18
18
|
dependencies: ['normalize'],
|
|
19
19
|
};
|
|
20
|
-
function processor(results, input
|
|
21
|
-
return (0, extractor_1.produceDataFlowGraph)(input.parser,
|
|
20
|
+
function processor(results, input) {
|
|
21
|
+
return (0, extractor_1.produceDataFlowGraph)(input.parser, results.normalize, input.context);
|
|
22
22
|
}
|
|
23
23
|
exports.STATIC_DATAFLOW = {
|
|
24
24
|
...staticDataflowCommon,
|
|
@@ -3,7 +3,6 @@ import { PipelineStepStage } from '../../pipeline-step';
|
|
|
3
3
|
import type { DataflowInformation } from '../../../../dataflow/info';
|
|
4
4
|
import type { SlicingCriteria } from '../../../../slicing/criterion/parse';
|
|
5
5
|
import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
|
-
import type { FlowrConfigOptions } from '../../../../config';
|
|
7
6
|
export interface SliceRequiredInput {
|
|
8
7
|
/** The slicing criterion is only of interest if you actually want to slice the R code */
|
|
9
8
|
readonly criterion: SlicingCriteria;
|
|
@@ -19,7 +18,7 @@ export declare enum SliceDirection {
|
|
|
19
18
|
declare function processor(results: {
|
|
20
19
|
dataflow?: DataflowInformation;
|
|
21
20
|
normalize?: NormalizedAst;
|
|
22
|
-
}, input: Partial<SliceRequiredInput
|
|
21
|
+
}, input: Partial<SliceRequiredInput>): Readonly<import("../../../../slicing/static/slicer-types").SliceResult>;
|
|
23
22
|
export declare const STATIC_SLICE: {
|
|
24
23
|
readonly name: "slice";
|
|
25
24
|
readonly humanReadableName: "static slice";
|
|
@@ -8,7 +8,7 @@ var SliceDirection;
|
|
|
8
8
|
SliceDirection["Backward"] = "backward";
|
|
9
9
|
SliceDirection["Forward"] = "forward";
|
|
10
10
|
})(SliceDirection || (exports.SliceDirection = SliceDirection = {}));
|
|
11
|
-
function processor(results, input
|
|
11
|
+
function processor(results, input) {
|
|
12
12
|
const direction = input.direction ?? SliceDirection.Backward;
|
|
13
13
|
return (0, static_slicer_1.staticSlice)(results.dataflow, results.normalize, input.criterion, direction, input.threshold);
|
|
14
14
|
}
|
|
@@ -5,6 +5,14 @@ import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/proc
|
|
|
5
5
|
import type { AutoSelectPredicate } from '../../../../reconstruct/auto-select/auto-select-defaults';
|
|
6
6
|
export interface ReconstructRequiredInput {
|
|
7
7
|
autoSelectIf?: AutoSelectPredicate;
|
|
8
|
+
/**
|
|
9
|
+
* When confronted with a project of multiple files the question for reconstruct arises wrt. which files to rebuild.
|
|
10
|
+
* This option can be used to either reconstruct all files or only specific files by their index in the project.
|
|
11
|
+
* By default, (for legacy) this will reconstruct the *first* file (index 0).
|
|
12
|
+
*
|
|
13
|
+
* Either you can set this to `'all'` to reconstruct all files or provide an array of file indices in the files context to reconstruct only those files.
|
|
14
|
+
*/
|
|
15
|
+
reconstructFiles?: 'all' | number[];
|
|
8
16
|
}
|
|
9
17
|
declare function processor(results: {
|
|
10
18
|
normalize?: NormalizedAst;
|
|
@@ -4,7 +4,10 @@ exports.NAIVE_RECONSTRUCT = void 0;
|
|
|
4
4
|
const print_1 = require("../../../print/print");
|
|
5
5
|
const reconstruct_1 = require("../../../../reconstruct/reconstruct");
|
|
6
6
|
function processor(results, input) {
|
|
7
|
-
return (0, reconstruct_1.reconstructToCode)(results.normalize,
|
|
7
|
+
return (0, reconstruct_1.reconstructToCode)(results.normalize, {
|
|
8
|
+
nodes: results.slice.result,
|
|
9
|
+
reconstructFiles: input.reconstructFiles
|
|
10
|
+
}, input.autoSelectIf);
|
|
8
11
|
}
|
|
9
12
|
exports.NAIVE_RECONSTRUCT = {
|
|
10
13
|
name: 'reconstruct',
|