@eagleoutice/flowr 1.5.2 → 2.0.0
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/abstract-interpretation/handler/binop/binop.d.ts +3 -4
- package/abstract-interpretation/handler/binop/binop.js +4 -2
- package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
- package/abstract-interpretation/handler/binop/operators.js +14 -28
- package/abstract-interpretation/processor.d.ts +3 -2
- package/abstract-interpretation/processor.js +2 -2
- package/benchmark/slicer.d.ts +101 -0
- package/benchmark/slicer.js +214 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +151 -0
- package/benchmark/stats/stats.d.ts +42 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/benchmark/summarizer/data.d.ts +54 -0
- package/benchmark/summarizer/first-phase/input.d.ts +3 -0
- package/benchmark/summarizer/first-phase/input.js +76 -0
- package/benchmark/summarizer/first-phase/process.d.ts +11 -0
- package/benchmark/summarizer/first-phase/process.js +205 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
- package/benchmark/summarizer/second-phase/graph.js +54 -0
- package/benchmark/summarizer/second-phase/process.d.ts +6 -0
- package/benchmark/summarizer/second-phase/process.js +127 -0
- package/benchmark/summarizer/summarizer.d.ts +31 -0
- package/benchmark/summarizer/summarizer.js +58 -0
- package/cli/benchmark-app.d.ts +10 -0
- package/cli/benchmark-app.js +67 -0
- package/cli/benchmark-helper-app.d.ts +9 -0
- package/cli/benchmark-helper-app.js +69 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +85 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +25 -0
- package/cli/common/scripts-info.js +83 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +43 -0
- package/cli/flowr.d.ts +29 -0
- package/cli/flowr.js +141 -0
- package/cli/repl/commands/cfg.d.ts +3 -0
- package/cli/repl/commands/cfg.js +37 -0
- package/cli/repl/commands/commands.d.ts +13 -0
- package/cli/repl/commands/commands.js +142 -0
- package/cli/repl/commands/dataflow.d.ts +3 -0
- package/cli/repl/commands/dataflow.js +34 -0
- package/cli/repl/commands/execute.d.ts +4 -0
- package/cli/repl/commands/execute.js +27 -0
- package/cli/repl/commands/main.d.ts +39 -0
- package/cli/repl/commands/main.js +14 -0
- package/cli/repl/commands/normalize.d.ts +3 -0
- package/cli/repl/commands/normalize.js +34 -0
- package/cli/repl/commands/parse.d.ts +2 -0
- package/cli/repl/commands/parse.js +110 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +15 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +28 -0
- package/cli/repl/core.d.ts +36 -0
- package/cli/repl/core.js +174 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/print-version.d.ts +2 -0
- package/cli/repl/print-version.js +10 -0
- package/cli/repl/prompt.d.ts +2 -0
- package/cli/repl/prompt.js +9 -0
- package/cli/repl/server/connection.d.ts +21 -0
- package/cli/repl/server/connection.js +218 -0
- package/cli/repl/server/messages/analysis.d.ts +72 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +40 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +37 -0
- package/cli/repl/server/messages/slice.d.ts +26 -0
- package/cli/repl/server/messages/slice.js +37 -0
- package/cli/repl/server/net.d.ts +49 -0
- package/cli/repl/server/net.js +63 -0
- package/cli/repl/server/send.d.ts +4 -0
- package/cli/repl/server/send.js +18 -0
- package/cli/repl/server/server.d.ts +20 -0
- package/cli/repl/server/server.js +66 -0
- package/cli/repl/server/validate.d.ts +15 -0
- package/cli/repl/server/validate.js +34 -0
- package/cli/slicer-app.d.ts +11 -0
- package/cli/slicer-app.js +83 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +99 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +87 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +66 -0
- package/core/pipeline-executor.d.ts +154 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +3 -4
- package/core/print/dataflow-printer.js +5 -5
- package/core/print/normalize-printer.d.ts +1 -1
- package/core/print/normalize-printer.js +3 -3
- package/core/print/parse-printer.js +3 -3
- package/core/print/print.d.ts +13 -4
- package/core/print/print.js +13 -2
- package/core/print/slice-diff-ansi.d.ts +3 -2
- package/core/print/slice-diff-ansi.js +4 -4
- package/core/steps/all/core/00-parse.d.ts +28 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.d.ts +29 -0
- package/core/steps/all/core/10-normalize.js +26 -0
- package/core/steps/all/core/20-dataflow.d.ts +27 -0
- package/core/steps/all/core/20-dataflow.js +29 -0
- package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/pipeline/create-pipeline.d.ts +6 -0
- package/core/steps/pipeline/create-pipeline.js +130 -0
- package/core/steps/pipeline/default-pipelines.d.ts +251 -0
- package/core/steps/pipeline/default-pipelines.js +18 -0
- package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.d.ts +60 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/pipeline-step.d.ts +85 -0
- package/core/steps/pipeline-step.js +8 -0
- package/dataflow/environments/append.d.ts +4 -4
- package/dataflow/environments/append.js +4 -4
- package/dataflow/environments/built-in.d.ts +25 -0
- package/dataflow/environments/built-in.js +123 -0
- package/dataflow/environments/clone.d.ts +2 -0
- package/dataflow/environments/clone.js +23 -0
- package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
- package/dataflow/environments/define.js +51 -0
- package/dataflow/environments/diff.d.ts +6 -0
- package/dataflow/environments/diff.js +85 -0
- package/dataflow/environments/environment.d.ts +10 -43
- package/dataflow/environments/environment.js +32 -138
- package/dataflow/environments/identifier.d.ts +31 -0
- package/dataflow/environments/identifier.js +3 -0
- package/dataflow/environments/overwrite.d.ts +4 -4
- package/dataflow/environments/overwrite.js +9 -22
- package/dataflow/environments/resolve-by-name.d.ts +7 -6
- package/dataflow/environments/resolve-by-name.js +35 -19
- package/dataflow/environments/scoping.js +1 -4
- package/dataflow/extractor.d.ts +6 -6
- package/dataflow/extractor.js +47 -57
- package/dataflow/graph/diff.d.ts +24 -7
- package/dataflow/graph/diff.js +114 -74
- package/dataflow/graph/edge.d.ts +66 -20
- package/dataflow/graph/edge.js +73 -27
- package/dataflow/graph/graph.d.ts +53 -29
- package/dataflow/graph/graph.js +84 -89
- package/dataflow/graph/quads.js +2 -2
- package/dataflow/graph/vertex.d.ts +37 -34
- package/dataflow/info.d.ts +49 -0
- package/dataflow/info.js +29 -0
- package/dataflow/internal/linker.d.ts +11 -10
- package/dataflow/internal/linker.js +64 -90
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
- package/dataflow/internal/process/functions/call/common.d.ts +35 -0
- package/dataflow/internal/process/functions/call/common.js +70 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
- package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
- package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
- package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
- package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
- package/dataflow/internal/process/process-named-call.d.ts +6 -0
- package/dataflow/internal/process/process-named-call.js +17 -0
- package/dataflow/internal/process/process-symbol.d.ts +5 -0
- package/dataflow/internal/process/process-symbol.js +26 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
- package/dataflow/internal/process/process-value.d.ts +4 -0
- package/dataflow/internal/process/process-value.js +22 -0
- package/dataflow/logger.d.ts +1 -0
- package/dataflow/logger.js +6 -0
- package/dataflow/processor.d.ts +18 -13
- package/dataflow/processor.js +1 -1
- package/package.json +48 -85
- package/r-bridge/data/data.d.ts +603 -0
- package/r-bridge/data/data.js +753 -0
- package/r-bridge/data/get.d.ts +19 -0
- package/r-bridge/data/get.js +51 -0
- package/r-bridge/data/print.d.ts +1 -0
- package/r-bridge/data/print.js +58 -0
- package/r-bridge/data/types.d.ts +33 -0
- package/r-bridge/data/types.js +3 -0
- package/r-bridge/init.d.ts +3 -0
- package/r-bridge/init.js +22 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
- package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
- package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
- package/r-bridge/lang-4.x/ast/model/type.js +13 -6
- package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
- package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
- package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
- package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
- package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
- package/r-bridge/retriever.d.ts +5 -5
- package/r-bridge/retriever.js +11 -24
- package/r-bridge/shell-executor.d.ts +0 -1
- package/r-bridge/shell-executor.js +7 -12
- package/r-bridge/shell.d.ts +14 -12
- package/r-bridge/shell.js +52 -47
- package/reconstruct/reconstruct.d.ts +4 -2
- package/reconstruct/reconstruct.js +193 -185
- package/slicing/criterion/collect-all.d.ts +4 -3
- package/slicing/criterion/collect-all.js +5 -1
- package/slicing/criterion/filters/all-variables.js +14 -22
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +13 -11
- package/slicing/static/fingerprint.d.ts +5 -0
- package/slicing/static/fingerprint.js +17 -0
- package/slicing/static/slice-call.d.ts +10 -0
- package/slicing/static/slice-call.js +86 -0
- package/slicing/static/slicer-types.d.ts +33 -0
- package/slicing/static/slicer-types.js +3 -0
- package/slicing/static/static-slicer.d.ts +6 -24
- package/slicing/static/static-slicer.js +54 -155
- package/slicing/static/visiting-queue.d.ts +23 -0
- package/slicing/static/visiting-queue.js +53 -0
- package/statistics/features/common-syntax-probability.d.ts +29 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +182 -0
- package/statistics/features/feature.js +39 -0
- package/statistics/features/post-processing.d.ts +12 -0
- package/statistics/features/post-processing.js +21 -0
- package/statistics/features/supported/assignments/assignments.d.ts +12 -0
- package/statistics/features/supported/assignments/assignments.js +55 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +124 -0
- package/statistics/features/supported/comments/comments.d.ts +18 -0
- package/statistics/features/supported/comments/comments.js +133 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +49 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +68 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +64 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +120 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +106 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +169 -0
- package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
- package/statistics/features/supported/expression-list/expression-list.js +36 -0
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +43 -0
- package/statistics/features/supported/loops/loops.d.ts +20 -0
- package/statistics/features/supported/loops/loops.js +79 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +71 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +178 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +97 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +120 -0
- package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
- package/statistics/features/supported/used-packages/used-packages.js +130 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +71 -0
- package/statistics/features/supported/values/values.d.ts +14 -0
- package/statistics/features/supported/values/values.js +101 -0
- package/statistics/features/supported/variables/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +121 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +60 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -0
- package/statistics/output/print-stats.d.ts +17 -0
- package/statistics/output/print-stats.js +69 -0
- package/statistics/output/statistics-file.d.ts +37 -0
- package/statistics/output/statistics-file.js +69 -0
- package/statistics/statistics.d.ts +28 -0
- package/statistics/statistics.js +108 -0
- package/statistics/summarizer/auto-detect.d.ts +2 -0
- package/statistics/summarizer/auto-detect.js +32 -0
- package/statistics/summarizer/first-phase/process.d.ts +6 -0
- package/statistics/summarizer/first-phase/process.js +81 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
- package/statistics/summarizer/post-process/clusterer.js +43 -0
- package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
- package/statistics/summarizer/post-process/file-based-count.js +49 -0
- package/statistics/summarizer/post-process/histogram.d.ts +59 -0
- package/statistics/summarizer/post-process/histogram.js +128 -0
- package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
- package/statistics/summarizer/post-process/post-process-output.js +105 -0
- package/statistics/summarizer/second-phase/process.d.ts +11 -0
- package/statistics/summarizer/second-phase/process.js +116 -0
- package/statistics/summarizer/summarizer.d.ts +35 -0
- package/statistics/summarizer/summarizer.js +135 -0
- package/util/ansi.d.ts +2 -2
- package/util/ansi.js +2 -2
- package/util/arrays.d.ts +11 -1
- package/util/arrays.js +34 -1
- package/util/assert.d.ts +1 -0
- package/util/assert.js +5 -1
- package/util/cfg/cfg.d.ts +3 -2
- package/util/cfg/cfg.js +17 -28
- package/util/cfg/visitor.d.ts +1 -1
- package/util/defaultmap.d.ts +1 -1
- package/util/defaultmap.js +1 -1
- package/util/diff.d.ts +4 -4
- package/util/files.d.ts +2 -2
- package/util/files.js +1 -1
- package/util/log.d.ts +1 -0
- package/util/log.js +7 -1
- package/util/logic.d.ts +1 -0
- package/util/logic.js +3 -0
- package/util/mermaid/ast.d.ts +1 -1
- package/util/mermaid/ast.js +2 -2
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +34 -8
- package/util/mermaid/dfg.js +99 -70
- package/util/mermaid/mermaid.d.ts +1 -1
- package/util/mermaid/mermaid.js +6 -7
- package/util/objects.js +4 -0
- package/util/quads.d.ts +3 -3
- package/util/quads.js +0 -1
- package/util/range.d.ts +27 -14
- package/util/range.js +31 -27
- package/util/version.js +1 -1
- package/core/index.d.ts +0 -4
- package/core/index.js +0 -23
- package/core/input.d.ts +0 -42
- package/core/output.d.ts +0 -15
- package/core/slicer.d.ts +0 -124
- package/core/slicer.js +0 -227
- package/core/steps.d.ts +0 -508
- package/core/steps.js +0 -100
- package/dataflow/environments/index.d.ts +0 -7
- package/dataflow/environments/index.js +0 -23
- package/dataflow/environments/register.js +0 -40
- package/dataflow/environments/scopes.d.ts +0 -6
- package/dataflow/environments/scopes.js +0 -6
- package/dataflow/graph/index.d.ts +0 -4
- package/dataflow/graph/index.js +0 -21
- package/dataflow/index.d.ts +0 -5
- package/dataflow/index.js +0 -24
- package/dataflow/internal/info.d.ts +0 -21
- package/dataflow/internal/info.js +0 -16
- package/dataflow/internal/process/access.d.ts +0 -4
- package/dataflow/internal/process/access.js +0 -53
- package/dataflow/internal/process/expression-list.d.ts +0 -8
- package/dataflow/internal/process/expression-list.js +0 -144
- package/dataflow/internal/process/functions/argument.d.ts +0 -8
- package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
- package/dataflow/internal/process/functions/exit-points.js +0 -121
- package/dataflow/internal/process/functions/function-call.d.ts +0 -5
- package/dataflow/internal/process/functions/function-call.js +0 -105
- package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
- package/dataflow/internal/process/functions/function-definition.js +0 -176
- package/dataflow/internal/process/functions/source.d.ts +0 -8
- package/dataflow/internal/process/functions/source.js +0 -81
- package/dataflow/internal/process/if-then-else.d.ts +0 -4
- package/dataflow/internal/process/if-then-else.js +0 -56
- package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/for-loop.js +0 -54
- package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/repeat-loop.js +0 -21
- package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/while-loop.js +0 -31
- package/dataflow/internal/process/operators/assignment.d.ts +0 -4
- package/dataflow/internal/process/operators/assignment.js +0 -129
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
- package/dataflow/internal/process/operators/pipe.d.ts +0 -4
- package/dataflow/internal/process/operators/pipe.js +0 -46
- package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/unary-op.js +0 -10
- package/dataflow/internal/process/symbol.d.ts +0 -4
- package/dataflow/internal/process/symbol.js +0 -21
- package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
- package/dataflow/internal/process/uninteresting-leaf.js +0 -9
- package/index.d.ts +0 -4
- package/index.js +0 -21
- package/r-bridge/index.d.ts +0 -11
- package/r-bridge/index.js +0 -28
- package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/index.js +0 -22
- package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/model/index.js +0 -23
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
- package/r-bridge/lang-4.x/index.d.ts +0 -2
- package/r-bridge/lang-4.x/index.js +0 -19
- package/slicing/criterion/filters/index.d.ts +0 -1
- package/slicing/criterion/filters/index.js +0 -18
- package/slicing/criterion/index.d.ts +0 -3
- package/slicing/criterion/index.js +0 -20
- package/slicing/index.d.ts +0 -3
- package/slicing/index.js +0 -20
- package/slicing/static/index.d.ts +0 -1
- package/slicing/static/index.js +0 -18
- package/util/mermaid/index.d.ts +0 -3
- package/util/mermaid/index.js +0 -20
- /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PipelineExecutor = void 0;
|
|
4
|
+
const assert_1 = require("../util/assert");
|
|
5
|
+
/**
|
|
6
|
+
* The pipeline executor allows to execute arbitrary {@link Pipeline|pipelines} in a step-by-step fashion.
|
|
7
|
+
* If you are not yet in the possession of a {@link Pipeline|pipeline}, you can use the {@link createPipeline} function
|
|
8
|
+
* to create one for yourself, based on the steps that you want to execute.
|
|
9
|
+
*
|
|
10
|
+
* Those steps are split into two phases or "stages" (which is the name that we will use in the following), represented
|
|
11
|
+
* by the {@link PipelineStepStage} type. These allow us to separate things that have to be done
|
|
12
|
+
* once per-file, e.g., actually parsing the AST, from those that we need to repeat 'once per request' (whatever this
|
|
13
|
+
* request may be). In other words, what can be cached between operations and what cannot.
|
|
14
|
+
*
|
|
15
|
+
* Furthermore, this executor follows an iterable fashion to be *as flexible as possible*
|
|
16
|
+
* (e.g., to be instrumented with measurements). So, you can use the pipeline executor like this:
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const stepper = new PipelineExecutor( ... )
|
|
20
|
+
* while(stepper.hasNextStep()) {
|
|
21
|
+
* await stepper.nextStep()
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* stepper.switchToRequestStage()
|
|
25
|
+
*
|
|
26
|
+
* while(stepper.hasNextStep()) {
|
|
27
|
+
* await stepper.nextStep()
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* const result = stepper.getResults()
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* Of course, you might think, that this is rather overkill if you simply want to receive the result.
|
|
34
|
+
* And this is true. Therefore, if you do not want to perform some kind of magic in-between steps, you can use the
|
|
35
|
+
* **{@link allRemainingSteps}** function like this:
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* const stepper = new PipelineExecutor( ... )
|
|
39
|
+
* const result = await stepper.allRemainingSteps()
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* As the name suggests, you can combine this name with previous calls to {@link nextStep} to only execute the remaining
|
|
43
|
+
* steps in case, for whatever reason you only want to instrument some steps.
|
|
44
|
+
*
|
|
45
|
+
* By default, the {@link PipelineExecutor} does not offer an automatic way to repeat requests (mostly to prevent accidental errors).
|
|
46
|
+
* However, you can use the
|
|
47
|
+
* **{@link updateRequest}** function to reset the request steps and re-execute them for a new request. This allows something like the following:
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* const stepper = new PipelineExecutor( ... )
|
|
51
|
+
* const result = await stepper.allRemainingSteps()
|
|
52
|
+
*
|
|
53
|
+
* stepper.updateRequest( ... )
|
|
54
|
+
* const result2 = await stepper.allRemainingSteps()
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* **Example - Slicing With the Pipeline Executor**:
|
|
58
|
+
*
|
|
59
|
+
* Suppose, you want to... you know _slice_ a file (which was, at one point the origin of flowR), then you can
|
|
60
|
+
* either create a pipeline yourself with the respective steps, or you can use the {@link DEFAULT_SLICING_PIPELINE} (and friends).
|
|
61
|
+
* With it, slicing essentially becomes 'easy-as-pie':
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* const slicer = new PipelineExecutor(DEFAULT_SLICING_PIPELINE, {
|
|
65
|
+
* shell: new RShell(),
|
|
66
|
+
* // of course, the criterion and request given here are just examples, you can use whatever you want to slice!
|
|
67
|
+
* criterion: ['2@b'],
|
|
68
|
+
* request: requestFromInput('b <- 3; x <- 5\ncat(b)'),
|
|
69
|
+
* })
|
|
70
|
+
* const result = await slicer.allRemainingSteps()
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* But now, we want to slice for `x` in the first line as well! We can do that by adding:
|
|
74
|
+
*
|
|
75
|
+
* ```ts
|
|
76
|
+
* stepper.updateRequest({ criterion: ['1@x'] })
|
|
77
|
+
* const result2 = await stepper.allRemainingSteps()
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @note Even though using the pipeline executor introduces a small performance overhead, we consider
|
|
81
|
+
* it to be the baseline for performance benchmarking. It may very well be possible to squeeze out a little bit more by
|
|
82
|
+
* directly constructing the steps in the right order. However, we consider this to be negligible when compared with the time required
|
|
83
|
+
* for, for example, the dataflow analysis of larger files.
|
|
84
|
+
*
|
|
85
|
+
* @see PipelineExecutor#allRemainingSteps
|
|
86
|
+
* @see PipelineExecutor#nextStep
|
|
87
|
+
*/
|
|
88
|
+
class PipelineExecutor {
|
|
89
|
+
pipeline;
|
|
90
|
+
length;
|
|
91
|
+
input;
|
|
92
|
+
output = {};
|
|
93
|
+
currentExecutionStage = 0 /* PipelineStepStage.OncePerFile */;
|
|
94
|
+
stepCounter = 0;
|
|
95
|
+
/**
|
|
96
|
+
* Construct a new pipeline executor.
|
|
97
|
+
* The required additional input is specified by the {@link IPipelineStep#requiredInput|required input configuration} of each step in the `pipeline`.
|
|
98
|
+
*
|
|
99
|
+
* @param pipeline - The {@link Pipeline} to execute, probably created with {@link createPipeline}.
|
|
100
|
+
* @param input - External {@link PipelineInput|configuration and input} required to execute the given pipeline.
|
|
101
|
+
*/
|
|
102
|
+
constructor(pipeline, input) {
|
|
103
|
+
this.pipeline = pipeline;
|
|
104
|
+
this.length = pipeline.order.length;
|
|
105
|
+
this.input = input;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Retrieve the current {@link PipelineStepStage|stage} the pipeline executor is in.
|
|
109
|
+
*
|
|
110
|
+
* @see currentExecutionStage
|
|
111
|
+
* @see switchToRequestStage
|
|
112
|
+
* @see PipelineStepStage
|
|
113
|
+
*/
|
|
114
|
+
getCurrentStage() {
|
|
115
|
+
return this.currentExecutionStage;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Switch to the next {@link PipelineStepStage|stage} of the pipeline executor.
|
|
119
|
+
*
|
|
120
|
+
* This will fail if either a step change is currently not valid (as not all steps have been executed),
|
|
121
|
+
* or if there is no next stage (i.e., the pipeline is already completed or in the last stage).
|
|
122
|
+
*
|
|
123
|
+
* @see PipelineExecutor
|
|
124
|
+
* @see getCurrentStage
|
|
125
|
+
*/
|
|
126
|
+
switchToRequestStage() {
|
|
127
|
+
(0, assert_1.guard)(this.stepCounter === this.pipeline.firstStepPerRequest, 'First need to complete all steps before switching');
|
|
128
|
+
(0, assert_1.guard)(this.currentExecutionStage === 0 /* PipelineStepStage.OncePerFile */, 'Cannot switch to next stage, already in per-request stage.');
|
|
129
|
+
this.currentExecutionStage = 1 /* PipelineStepStage.OncePerRequest */;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Returns the results of the pipeline.
|
|
133
|
+
*
|
|
134
|
+
* @param intermediate - Normally you can only receive the results *after* the stepper completed the step of interested.
|
|
135
|
+
* However, if you pass `true` to this parameter, you can also receive the results *before* the {@link PipelineExecutor|pipeline executor}
|
|
136
|
+
* completed, although the typing system then can not guarantee which of the steps have already happened.
|
|
137
|
+
*/
|
|
138
|
+
getResults(intermediate = false) {
|
|
139
|
+
(0, assert_1.guard)(intermediate || this.stepCounter >= this.length, 'Without the intermediate flag, the pipeline must be completed before providing access to the results.');
|
|
140
|
+
return this.output;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Returns true only if
|
|
144
|
+
* 1) there are more {@link IPipelineStep|steps} to-do for the current {@link PipelineStepStage|stage} and
|
|
145
|
+
* 2) we have not yet reached the end of the {@link Pipeline|pipeline}.
|
|
146
|
+
*/
|
|
147
|
+
hasNextStep() {
|
|
148
|
+
return (this.stepCounter < this.length && this.currentExecutionStage !== 0 /* PipelineStepStage.OncePerFile */)
|
|
149
|
+
|| this.stepCounter < this.pipeline.firstStepPerRequest;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Execute the next {@link IPipelineStep|step} and return the name of the {@link IPipelineStep|step} that was executed,
|
|
153
|
+
* so you can guard if the {@link IPipelineStep|step} differs from what you are interested in.
|
|
154
|
+
* Furthermore, it returns the {@link IPipelineStep|step's} result.
|
|
155
|
+
*
|
|
156
|
+
* @param expectedStepName - A safeguard if you want to retrieve the result.
|
|
157
|
+
* If given, it causes the execution to fail if the next step is not the one you expect.
|
|
158
|
+
*
|
|
159
|
+
* _Without `expectedStepName`, please refrain from accessing the result, as you have no safeguards if the pipeline changes._
|
|
160
|
+
*/
|
|
161
|
+
async nextStep(expectedStepName) {
|
|
162
|
+
const [step, result] = this._doNextStep(expectedStepName);
|
|
163
|
+
const awaitedResult = await result;
|
|
164
|
+
this.output[step] = awaitedResult;
|
|
165
|
+
this.stepCounter++;
|
|
166
|
+
return { name: step, result: awaitedResult };
|
|
167
|
+
}
|
|
168
|
+
_doNextStep(expectedStepName) {
|
|
169
|
+
const step = this.pipeline.steps.get(this.pipeline.order[this.stepCounter]);
|
|
170
|
+
(0, assert_1.guard)(step !== undefined, () => `Cannot execute next step, step ${this.pipeline.order[this.stepCounter]} does not exist.`);
|
|
171
|
+
if (expectedStepName !== undefined) {
|
|
172
|
+
(0, assert_1.guard)(step.name === expectedStepName, () => `Cannot execute next step, expected step ${JSON.stringify(expectedStepName)} but got ${step.name}.`);
|
|
173
|
+
}
|
|
174
|
+
return [step.name, step.processor(this.output, this.input)];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* This only makes sense if you have already run a request and want to re-use the per-file results for a new one.
|
|
178
|
+
* (or if for whatever reason, you did not pass information for the pipeline with the constructor).
|
|
179
|
+
*
|
|
180
|
+
* @param newRequestData - Data for the new request
|
|
181
|
+
*/
|
|
182
|
+
updateRequest(newRequestData) {
|
|
183
|
+
const requestStep = this.pipeline.firstStepPerRequest;
|
|
184
|
+
(0, assert_1.guard)(this.stepCounter >= requestStep, 'Cannot reset request prior to once-per-request stage');
|
|
185
|
+
this.input = {
|
|
186
|
+
...this.input,
|
|
187
|
+
...newRequestData
|
|
188
|
+
};
|
|
189
|
+
this.stepCounter = requestStep;
|
|
190
|
+
// clear the results for all steps with an index >= firstStepPerRequest, this is more of a sanity check
|
|
191
|
+
for (let i = requestStep; i < this.length; i++) {
|
|
192
|
+
this.output[this.pipeline.order[i]] = undefined;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Execute all remaining steps and automatically call {@link switchToRequestStage} if necessary.
|
|
197
|
+
* @param canSwitchStage - If true, automatically switch to the request stage if necessary
|
|
198
|
+
* (i.e., this is what you want if you have never executed {@link nextStep} and you want to execute *all* steps).
|
|
199
|
+
* However, passing false allows you to only execute the steps of the 'once-per-file' stage (i.e., the steps that can be cached).
|
|
200
|
+
*
|
|
201
|
+
* @note There is a small type difference if you pass 'false' and already have manually switched to the 'once-per-request' stage.
|
|
202
|
+
* Because now, the results of these steps are no longer part of the result type (although they are still included).
|
|
203
|
+
* In such a case, you may be better off with simply passing 'true' as the function will detect that the stage is already switched.
|
|
204
|
+
* We could solve this type problem by separating the {@link PipelineExecutor} class into two for each stage,
|
|
205
|
+
* but this would break the improved readability and unified handling of the executor that I wanted to achieve with this class.
|
|
206
|
+
*/
|
|
207
|
+
async allRemainingSteps(canSwitchStage = true) {
|
|
208
|
+
while (this.hasNextStep()) {
|
|
209
|
+
await this.nextStep();
|
|
210
|
+
}
|
|
211
|
+
if (canSwitchStage && this.stepCounter < this.length && this.currentExecutionStage === 0 /* PipelineStepStage.OncePerFile */) {
|
|
212
|
+
this.switchToRequestStage();
|
|
213
|
+
while (this.hasNextStep()) {
|
|
214
|
+
await this.nextStep();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return this.stepCounter < this.length ? this.getResults(true) : this.getResults();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.PipelineExecutor = PipelineExecutor;
|
|
221
|
+
//# sourceMappingURL=pipeline-executor.js.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { DataflowInformation } from '../../dataflow/
|
|
1
|
+
import type { DataflowInformation } from '../../dataflow/info';
|
|
2
2
|
import type { QuadSerializationConfiguration } from '../../util/quads';
|
|
3
|
-
import type { DataflowMap } from '../../dataflow';
|
|
4
3
|
/** Should work with larger things as well */
|
|
5
4
|
export declare function dataflowGraphToJson(df: DataflowInformation): string;
|
|
6
|
-
export declare function dataflowGraphToMermaid(df: DataflowInformation
|
|
7
|
-
export declare function dataflowGraphToMermaidUrl(df: DataflowInformation
|
|
5
|
+
export declare function dataflowGraphToMermaid(df: DataflowInformation): string;
|
|
6
|
+
export declare function dataflowGraphToMermaidUrl(df: DataflowInformation): string;
|
|
8
7
|
export declare function dataflowGraphToQuads(df: DataflowInformation, config: QuadSerializationConfiguration): string;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.dataflowGraphToQuads = exports.dataflowGraphToMermaidUrl = exports.dataflowGraphToMermaid = exports.dataflowGraphToJson = void 0;
|
|
4
4
|
const json_1 = require("../../util/json");
|
|
5
5
|
const quads_1 = require("../../dataflow/graph/quads");
|
|
6
|
-
const
|
|
6
|
+
const dfg_1 = require("../../util/mermaid/dfg");
|
|
7
7
|
function mayObjectJson(d) {
|
|
8
8
|
if (typeof d === 'object') {
|
|
9
9
|
return objectJson(d);
|
|
@@ -47,12 +47,12 @@ function dataflowGraphToJson(df) {
|
|
|
47
47
|
return objectJson(df);
|
|
48
48
|
}
|
|
49
49
|
exports.dataflowGraphToJson = dataflowGraphToJson;
|
|
50
|
-
function dataflowGraphToMermaid(df
|
|
51
|
-
return (0,
|
|
50
|
+
function dataflowGraphToMermaid(df) {
|
|
51
|
+
return (0, dfg_1.graphToMermaid)({ graph: df.graph }).string;
|
|
52
52
|
}
|
|
53
53
|
exports.dataflowGraphToMermaid = dataflowGraphToMermaid;
|
|
54
|
-
function dataflowGraphToMermaidUrl(df
|
|
55
|
-
return (0,
|
|
54
|
+
function dataflowGraphToMermaidUrl(df) {
|
|
55
|
+
return (0, dfg_1.graphToMermaidUrl)(df.graph);
|
|
56
56
|
}
|
|
57
57
|
exports.dataflowGraphToMermaidUrl = dataflowGraphToMermaidUrl;
|
|
58
58
|
function dataflowGraphToQuads(df, config) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { NormalizedAst } from '../../r-bridge';
|
|
2
1
|
import type { QuadSerializationConfiguration } from '../../util/quads';
|
|
2
|
+
import type { NormalizedAst } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
3
3
|
/** Should work with larger things as well */
|
|
4
4
|
export declare function normalizedAstToJson(ast: NormalizedAst): string;
|
|
5
5
|
export declare function normalizedAstToQuads(ast: NormalizedAst, config: QuadSerializationConfiguration): string;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.printNormalizedAstToMermaidUrl = exports.printNormalizedAstToMermaid = exports.normalizedAstToQuads = exports.normalizedAstToJson = void 0;
|
|
4
4
|
const json_1 = require("../../util/json");
|
|
5
5
|
const quads_1 = require("../../util/quads");
|
|
6
|
-
const
|
|
6
|
+
const ast_1 = require("../../util/mermaid/ast");
|
|
7
7
|
/** Should work with larger things as well */
|
|
8
8
|
function normalizedAstToJson(ast) {
|
|
9
9
|
// we never serialize the idmap, as it just duplicates the ast, additionally we now miss the full-lexeme to further safe memory
|
|
@@ -21,11 +21,11 @@ function normalizedAstToQuads(ast, config) {
|
|
|
21
21
|
}
|
|
22
22
|
exports.normalizedAstToQuads = normalizedAstToQuads;
|
|
23
23
|
function printNormalizedAstToMermaid(ast) {
|
|
24
|
-
return (0,
|
|
24
|
+
return (0, ast_1.normalizedAstToMermaid)(ast.ast);
|
|
25
25
|
}
|
|
26
26
|
exports.printNormalizedAstToMermaid = printNormalizedAstToMermaid;
|
|
27
27
|
function printNormalizedAstToMermaidUrl(ast) {
|
|
28
|
-
return (0,
|
|
28
|
+
return (0, ast_1.normalizedAstToMermaidUrl)(ast.ast);
|
|
29
29
|
}
|
|
30
30
|
exports.printNormalizedAstToMermaidUrl = printNormalizedAstToMermaidUrl;
|
|
31
31
|
//# sourceMappingURL=normalize-printer.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseToQuads = void 0;
|
|
4
4
|
const quads_1 = require("../../util/quads");
|
|
5
|
-
const r_bridge_1 = require("../../r-bridge");
|
|
6
|
-
const format_1 = require("../../r-bridge/lang-4.x/ast/parser/json/format");
|
|
7
5
|
const parser_1 = require("../../r-bridge/lang-4.x/ast/parser/json/parser");
|
|
6
|
+
const format_1 = require("../../r-bridge/lang-4.x/ast/parser/json/format");
|
|
7
|
+
const input_format_1 = require("../../r-bridge/lang-4.x/ast/parser/xml/input-format");
|
|
8
8
|
function filterObject(obj, keys) {
|
|
9
9
|
if (typeof obj !== 'object') {
|
|
10
10
|
return obj;
|
|
@@ -25,7 +25,7 @@ function filterObject(obj, keys) {
|
|
|
25
25
|
function parseToQuads(code, config) {
|
|
26
26
|
const obj = (0, parser_1.convertPreparedParsedData)((0, format_1.prepareParsedData)(code));
|
|
27
27
|
// recursively filter so that if the object contains one of the keys 'a', 'b' or 'c', all other keys are ignored
|
|
28
|
-
return (0, quads_1.serialize2quads)(filterObject(obj, new Set([
|
|
28
|
+
return (0, quads_1.serialize2quads)(filterObject(obj, new Set([input_format_1.attributesKey, input_format_1.childrenKey, input_format_1.contentKey])), config);
|
|
29
29
|
}
|
|
30
30
|
exports.parseToQuads = parseToQuads;
|
|
31
31
|
//# sourceMappingURL=parse-printer.js.map
|
package/core/print/print.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IPipelineStep, StepProcessingFunction } from '../steps/pipeline-step';
|
|
2
|
+
import type { TailOfArray } from '../../util/arrays';
|
|
2
3
|
/**
|
|
3
4
|
* Defines the output format of a step that you are interested in.
|
|
4
5
|
*/
|
|
@@ -37,11 +38,19 @@ export declare const enum StepOutputFormat {
|
|
|
37
38
|
/**
|
|
38
39
|
* Helper function to support the {@link Internal} format, as it is simply returning the input.
|
|
39
40
|
*
|
|
40
|
-
* @see
|
|
41
|
+
* @see IPipelineStepPrinter
|
|
41
42
|
*/
|
|
42
43
|
export declare function internalPrinter<Input>(input: Input): Input;
|
|
43
44
|
/**
|
|
44
45
|
* A mapping function that maps the result of a step (i.e., the dataflow graph)
|
|
45
|
-
* to another representation (linked by {@link StepOutputFormat} in an {@link
|
|
46
|
+
* to another representation (linked by {@link StepOutputFormat} in an {@link IPipelineStep}).
|
|
47
|
+
*
|
|
48
|
+
* For the internal format, refer to {@link InternalStepPrinter} as a shorthand.
|
|
49
|
+
*/
|
|
50
|
+
export type IPipelineStepPrinter<StepInput extends StepProcessingFunction, Format extends StepOutputFormat, AdditionalInput extends unknown[]> = Format extends StepOutputFormat.Internal ? (input: Awaited<ReturnType<StepInput>>) => Awaited<ReturnType<StepInput>> : (input: Awaited<ReturnType<StepInput>>, ...additional: AdditionalInput) => Promise<string> | string;
|
|
51
|
+
export type InternalStepPrinter<StepInput extends StepProcessingFunction> = IPipelineStepPrinter<StepInput, StepOutputFormat.Internal, []>;
|
|
52
|
+
/**
|
|
53
|
+
* For a `step` of the given name, which returned the given `data`. Convert that data into the given `format`.
|
|
54
|
+
* Depending on your step and the format this may require `additional` inputs.
|
|
46
55
|
*/
|
|
47
|
-
export
|
|
56
|
+
export declare function printStepResult<Step extends IPipelineStep, Processor extends Step['processor'], Format extends Exclude<keyof Step['printer'], StepOutputFormat.Internal> & number, Printer extends Step['printer'][Format], AdditionalInput extends TailOfArray<Parameters<Printer>>>(step: Step, data: Awaited<ReturnType<Processor>>, format: Format, ...additional: AdditionalInput): Promise<string>;
|
package/core/print/print.js
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.internalPrinter = void 0;
|
|
3
|
+
exports.printStepResult = exports.internalPrinter = void 0;
|
|
4
|
+
const assert_1 = require("../../util/assert");
|
|
4
5
|
/**
|
|
5
6
|
* Helper function to support the {@link Internal} format, as it is simply returning the input.
|
|
6
7
|
*
|
|
7
|
-
* @see
|
|
8
|
+
* @see IPipelineStepPrinter
|
|
8
9
|
*/
|
|
9
10
|
function internalPrinter(input) {
|
|
10
11
|
return input;
|
|
11
12
|
}
|
|
12
13
|
exports.internalPrinter = internalPrinter;
|
|
14
|
+
/**
|
|
15
|
+
* For a `step` of the given name, which returned the given `data`. Convert that data into the given `format`.
|
|
16
|
+
* Depending on your step and the format this may require `additional` inputs.
|
|
17
|
+
*/
|
|
18
|
+
function printStepResult(step, data, format, ...additional) {
|
|
19
|
+
const printer = step.printer[format];
|
|
20
|
+
(0, assert_1.guard)(printer !== undefined, `printer for ${step.name} does not support ${String(format)}`);
|
|
21
|
+
return printer(data, ...additional);
|
|
22
|
+
}
|
|
23
|
+
exports.printStepResult = printStepResult;
|
|
13
24
|
//# sourceMappingURL=print.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type { NodeId
|
|
2
|
-
|
|
1
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
2
|
+
import type { NormalizedAst } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
3
|
+
export declare function sliceDiffAnsi(slice: ReadonlySet<NodeId>, normalized: NormalizedAst, criteriaIds: ReadonlySet<NodeId>, originalCode: string): string;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.sliceDiffAnsi = void 0;
|
|
4
4
|
const range_1 = require("../../util/range");
|
|
5
5
|
const assert_1 = require("../../util/assert");
|
|
6
|
-
const ansi_1 = require("
|
|
6
|
+
const ansi_1 = require("../../util/ansi");
|
|
7
7
|
function grayOut() {
|
|
8
8
|
return ansi_1.ansiFormatter.getFormatString({ color: 7 /* Colors.White */, effect: ansi_1.ColorEffect.Foreground, style: 2 /* FontStyles.Faint */ });
|
|
9
9
|
}
|
|
@@ -39,9 +39,9 @@ function sliceDiffAnsi(slice, normalized, criteriaIds, originalCode) {
|
|
|
39
39
|
importantLocations = mergeJointRangesInSorted(importantLocations);
|
|
40
40
|
const lines = originalCode.split('\n');
|
|
41
41
|
for (const { selected, location } of importantLocations) {
|
|
42
|
-
const
|
|
43
|
-
const line = lines[
|
|
44
|
-
lines[
|
|
42
|
+
const [sl, sc, , ec] = location;
|
|
43
|
+
const line = lines[sl - 1];
|
|
44
|
+
lines[sl - 1] = `${line.substring(0, sc - 1)}${ansi_1.ansiFormatter.reset()}${highlight(line.substring(sc - 1, ec), selected)}${grayOut()}${line.substring(ec)}`;
|
|
45
45
|
}
|
|
46
46
|
return `${grayOut()}${lines.join('\n')}${ansi_1.ansiFormatter.reset()}`;
|
|
47
47
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { internalPrinter } from '../../../print/print';
|
|
2
|
+
import { parseToQuads } from '../../../print/parse-printer';
|
|
3
|
+
import { PipelineStepStage } from '../../pipeline-step';
|
|
4
|
+
import type { RShellExecutor } from '../../../../r-bridge/shell-executor';
|
|
5
|
+
import type { RShell } from '../../../../r-bridge/shell';
|
|
6
|
+
import type { RParseRequest } from '../../../../r-bridge/retriever';
|
|
7
|
+
export interface ParseRequiredInput {
|
|
8
|
+
/** This is the {@link RShell} or {@link RShellExecutor} connection to be used to obtain the original parses AST of the R code */
|
|
9
|
+
readonly shell: RShell | RShellExecutor;
|
|
10
|
+
/** The request which essentially indicates the input to extract the AST from */
|
|
11
|
+
readonly request: RParseRequest;
|
|
12
|
+
}
|
|
13
|
+
declare function processor(_results: unknown, input: Partial<ParseRequiredInput>): import("ts-essentials").AsyncOrSync<string>;
|
|
14
|
+
export declare const PARSE_WITH_R_SHELL_STEP: {
|
|
15
|
+
readonly name: "parse";
|
|
16
|
+
readonly humanReadableName: "parse with R shell";
|
|
17
|
+
readonly description: "Parse the given R code into an AST";
|
|
18
|
+
readonly processor: typeof processor;
|
|
19
|
+
readonly executed: PipelineStepStage.OncePerFile;
|
|
20
|
+
readonly printer: {
|
|
21
|
+
readonly 0: typeof internalPrinter;
|
|
22
|
+
readonly 2: (text: string) => string;
|
|
23
|
+
readonly 5: typeof parseToQuads;
|
|
24
|
+
};
|
|
25
|
+
readonly dependencies: readonly [];
|
|
26
|
+
readonly requiredInput: ParseRequiredInput;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PARSE_WITH_R_SHELL_STEP = void 0;
|
|
4
|
+
const print_1 = require("../../../print/print");
|
|
5
|
+
const parse_printer_1 = require("../../../print/parse-printer");
|
|
6
|
+
const retriever_1 = require("../../../../r-bridge/retriever");
|
|
7
|
+
function processor(_results, input) {
|
|
8
|
+
return (0, retriever_1.retrieveParseDataFromRCode)(input.request, input.shell);
|
|
9
|
+
}
|
|
10
|
+
exports.PARSE_WITH_R_SHELL_STEP = {
|
|
11
|
+
name: 'parse',
|
|
12
|
+
humanReadableName: 'parse with R shell',
|
|
13
|
+
description: 'Parse the given R code into an AST',
|
|
14
|
+
processor,
|
|
15
|
+
executed: 0 /* PipelineStepStage.OncePerFile */,
|
|
16
|
+
printer: {
|
|
17
|
+
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
|
|
18
|
+
[2 /* StepOutputFormat.Json */]: text => text,
|
|
19
|
+
[5 /* StepOutputFormat.RdfQuads */]: parse_printer_1.parseToQuads
|
|
20
|
+
},
|
|
21
|
+
dependencies: [],
|
|
22
|
+
requiredInput: undefined
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=00-parse.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { internalPrinter } from '../../../print/print';
|
|
2
|
+
import { normalizedAstToJson, normalizedAstToQuads, printNormalizedAstToMermaid, printNormalizedAstToMermaidUrl } from '../../../print/normalize-printer';
|
|
3
|
+
import { PipelineStepStage } from '../../pipeline-step';
|
|
4
|
+
import type { IdGenerator } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
|
+
import type { NoInfo } from '../../../../r-bridge/lang-4.x/ast/model/model';
|
|
6
|
+
export interface NormalizeRequiredInput {
|
|
7
|
+
/** 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}*/
|
|
8
|
+
readonly getId?: IdGenerator<NoInfo>;
|
|
9
|
+
}
|
|
10
|
+
declare function processor(results: {
|
|
11
|
+
parse?: string;
|
|
12
|
+
}, 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/model").RNode<import("../../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
|
|
13
|
+
export declare const NORMALIZE: {
|
|
14
|
+
readonly name: "normalize";
|
|
15
|
+
readonly humanReadableName: "normalize";
|
|
16
|
+
readonly description: "Normalize the AST to flowR's AST";
|
|
17
|
+
readonly processor: typeof processor;
|
|
18
|
+
readonly executed: PipelineStepStage.OncePerFile;
|
|
19
|
+
readonly printer: {
|
|
20
|
+
readonly 0: typeof internalPrinter;
|
|
21
|
+
readonly 2: typeof normalizedAstToJson;
|
|
22
|
+
readonly 5: typeof normalizedAstToQuads;
|
|
23
|
+
readonly 3: typeof printNormalizedAstToMermaid;
|
|
24
|
+
readonly 4: typeof printNormalizedAstToMermaidUrl;
|
|
25
|
+
};
|
|
26
|
+
readonly dependencies: readonly ["parse"];
|
|
27
|
+
readonly requiredInput: NormalizeRequiredInput;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NORMALIZE = void 0;
|
|
4
|
+
const print_1 = require("../../../print/print");
|
|
5
|
+
const normalize_printer_1 = require("../../../print/normalize-printer");
|
|
6
|
+
const parser_1 = require("../../../../r-bridge/lang-4.x/ast/parser/json/parser");
|
|
7
|
+
function processor(results, input) {
|
|
8
|
+
return (0, parser_1.normalize)(results.parse, input.getId);
|
|
9
|
+
}
|
|
10
|
+
exports.NORMALIZE = {
|
|
11
|
+
name: 'normalize',
|
|
12
|
+
humanReadableName: 'normalize',
|
|
13
|
+
description: 'Normalize the AST to flowR\'s AST',
|
|
14
|
+
processor,
|
|
15
|
+
executed: 0 /* PipelineStepStage.OncePerFile */,
|
|
16
|
+
printer: {
|
|
17
|
+
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
|
|
18
|
+
[2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
|
|
19
|
+
[5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
|
|
20
|
+
[3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
|
|
21
|
+
[4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
|
|
22
|
+
},
|
|
23
|
+
dependencies: ['parse'],
|
|
24
|
+
requiredInput: undefined
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=10-normalize.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { internalPrinter } from '../../../print/print';
|
|
2
|
+
import { PipelineStepStage } from '../../pipeline-step';
|
|
3
|
+
import { dataflowGraphToJson, dataflowGraphToMermaid, dataflowGraphToMermaidUrl, dataflowGraphToQuads } from '../../../print/dataflow-printer';
|
|
4
|
+
import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
|
+
import type { RParseRequest } from '../../../../r-bridge/retriever';
|
|
6
|
+
declare function legacyProcessor(results: {
|
|
7
|
+
normalize?: NormalizedAst;
|
|
8
|
+
}, input: {
|
|
9
|
+
request?: RParseRequest;
|
|
10
|
+
}): import("../../../../dataflow/info").DataflowInformation;
|
|
11
|
+
export declare const STATIC_DATAFLOW: {
|
|
12
|
+
readonly humanReadableName: "dataflow";
|
|
13
|
+
readonly processor: typeof legacyProcessor;
|
|
14
|
+
readonly requiredInput: {};
|
|
15
|
+
readonly name: "dataflow";
|
|
16
|
+
readonly description: "Construct the dataflow graph";
|
|
17
|
+
readonly executed: PipelineStepStage.OncePerFile;
|
|
18
|
+
readonly printer: {
|
|
19
|
+
readonly 0: typeof internalPrinter;
|
|
20
|
+
readonly 2: typeof dataflowGraphToJson;
|
|
21
|
+
readonly 5: typeof dataflowGraphToQuads;
|
|
22
|
+
readonly 3: typeof dataflowGraphToMermaid;
|
|
23
|
+
readonly 4: typeof dataflowGraphToMermaidUrl;
|
|
24
|
+
};
|
|
25
|
+
readonly dependencies: readonly ["normalize"];
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STATIC_DATAFLOW = void 0;
|
|
4
|
+
const print_1 = require("../../../print/print");
|
|
5
|
+
const dataflow_printer_1 = require("../../../print/dataflow-printer");
|
|
6
|
+
const extractor_1 = require("../../../../dataflow/extractor");
|
|
7
|
+
const staticDataflowCommon = {
|
|
8
|
+
name: 'dataflow',
|
|
9
|
+
description: 'Construct the dataflow graph',
|
|
10
|
+
executed: 0 /* PipelineStepStage.OncePerFile */,
|
|
11
|
+
printer: {
|
|
12
|
+
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
|
|
13
|
+
[2 /* StepOutputFormat.Json */]: dataflow_printer_1.dataflowGraphToJson,
|
|
14
|
+
[5 /* StepOutputFormat.RdfQuads */]: dataflow_printer_1.dataflowGraphToQuads,
|
|
15
|
+
[3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
|
|
16
|
+
[4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
|
|
17
|
+
},
|
|
18
|
+
dependencies: ['normalize'],
|
|
19
|
+
};
|
|
20
|
+
function legacyProcessor(results, input) {
|
|
21
|
+
return (0, extractor_1.produceDataFlowGraph)(input.request, results.normalize);
|
|
22
|
+
}
|
|
23
|
+
exports.STATIC_DATAFLOW = {
|
|
24
|
+
...staticDataflowCommon,
|
|
25
|
+
humanReadableName: 'dataflow',
|
|
26
|
+
processor: legacyProcessor,
|
|
27
|
+
requiredInput: {}
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=20-dataflow.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { internalPrinter } from '../../../print/print';
|
|
2
|
+
import { PipelineStepStage } from '../../pipeline-step';
|
|
3
|
+
import type { DataflowInformation } from '../../../../dataflow/info';
|
|
4
|
+
import type { SlicingCriteria } from '../../../../slicing/criterion/parse';
|
|
5
|
+
import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
|
+
export interface SliceRequiredInput {
|
|
7
|
+
/** The slicing criterion is only of interest if you actually want to slice the R code */
|
|
8
|
+
readonly criterion: SlicingCriteria;
|
|
9
|
+
/** How many re-visits of the same node are ok? */
|
|
10
|
+
readonly threshold?: number;
|
|
11
|
+
}
|
|
12
|
+
declare function processor(results: {
|
|
13
|
+
dataflow?: DataflowInformation;
|
|
14
|
+
normalize?: NormalizedAst;
|
|
15
|
+
}, input: Partial<SliceRequiredInput>): Readonly<import("../../../../slicing/static/slicer-types").SliceResult>;
|
|
16
|
+
export declare const STATIC_SLICE: {
|
|
17
|
+
readonly name: "slice";
|
|
18
|
+
readonly humanReadableName: "static slice";
|
|
19
|
+
readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
|
|
20
|
+
readonly processor: typeof processor;
|
|
21
|
+
readonly executed: PipelineStepStage.OncePerRequest;
|
|
22
|
+
readonly printer: {
|
|
23
|
+
readonly 0: typeof internalPrinter;
|
|
24
|
+
};
|
|
25
|
+
readonly dependencies: readonly ["dataflow"];
|
|
26
|
+
readonly requiredInput: SliceRequiredInput;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STATIC_SLICE = void 0;
|
|
4
|
+
const print_1 = require("../../../print/print");
|
|
5
|
+
const static_slicer_1 = require("../../../../slicing/static/static-slicer");
|
|
6
|
+
function processor(results, input) {
|
|
7
|
+
return (0, static_slicer_1.staticSlicing)(results.dataflow.graph, results.normalize, input.criterion, input.threshold);
|
|
8
|
+
}
|
|
9
|
+
exports.STATIC_SLICE = {
|
|
10
|
+
name: 'slice',
|
|
11
|
+
humanReadableName: 'static slice',
|
|
12
|
+
description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
|
|
13
|
+
processor,
|
|
14
|
+
executed: 1 /* PipelineStepStage.OncePerRequest */,
|
|
15
|
+
printer: {
|
|
16
|
+
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
|
|
17
|
+
},
|
|
18
|
+
dependencies: ['dataflow'],
|
|
19
|
+
requiredInput: undefined
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=00-slice.js.map
|