@eagleoutice/flowr 1.5.2 → 2.0.1
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 +50 -45
- 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,25 @@
|
|
|
1
|
+
import { internalPrinter } from '../../../print/print';
|
|
2
|
+
import { PipelineStepStage } from '../../pipeline-step';
|
|
3
|
+
import type { SliceResult } from '../../../../slicing/static/slicer-types';
|
|
4
|
+
import type { AutoSelectPredicate } from '../../../../reconstruct/reconstruct';
|
|
5
|
+
import type { NormalizedAst } from '../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
|
+
export interface ReconstructRequiredInput {
|
|
7
|
+
autoSelectIf?: AutoSelectPredicate;
|
|
8
|
+
}
|
|
9
|
+
declare function processor(results: {
|
|
10
|
+
normalize?: NormalizedAst;
|
|
11
|
+
slice?: SliceResult;
|
|
12
|
+
}, input: Partial<ReconstructRequiredInput>): import("../../../../reconstruct/reconstruct").ReconstructionResult;
|
|
13
|
+
export declare const NAIVE_RECONSTRUCT: {
|
|
14
|
+
readonly name: "reconstruct";
|
|
15
|
+
readonly humanReadableName: "static code reconstruction";
|
|
16
|
+
readonly description: "Reconstruct R code from the static slice";
|
|
17
|
+
readonly processor: typeof processor;
|
|
18
|
+
readonly executed: PipelineStepStage.OncePerRequest;
|
|
19
|
+
readonly printer: {
|
|
20
|
+
readonly 0: typeof internalPrinter;
|
|
21
|
+
};
|
|
22
|
+
readonly dependencies: readonly ["slice"];
|
|
23
|
+
readonly requiredInput: ReconstructRequiredInput;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NAIVE_RECONSTRUCT = void 0;
|
|
4
|
+
const print_1 = require("../../../print/print");
|
|
5
|
+
const reconstruct_1 = require("../../../../reconstruct/reconstruct");
|
|
6
|
+
function processor(results, input) {
|
|
7
|
+
return (0, reconstruct_1.reconstructToCode)(results.normalize, results.slice.result, input.autoSelectIf);
|
|
8
|
+
}
|
|
9
|
+
exports.NAIVE_RECONSTRUCT = {
|
|
10
|
+
name: 'reconstruct',
|
|
11
|
+
humanReadableName: 'static code reconstruction',
|
|
12
|
+
description: 'Reconstruct R code from the static slice',
|
|
13
|
+
processor,
|
|
14
|
+
executed: 1 /* PipelineStepStage.OncePerRequest */,
|
|
15
|
+
printer: {
|
|
16
|
+
[0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
|
|
17
|
+
},
|
|
18
|
+
dependencies: ['slice'],
|
|
19
|
+
requiredInput: undefined
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=10-reconstruct.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IPipelineStep } from '../pipeline-step';
|
|
2
|
+
import type { Pipeline } from './pipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Given a set of {@link IPipelineStep|steps} with their dependencies, this function verifies all requirements of {@link createPipeline}.
|
|
5
|
+
*/
|
|
6
|
+
export declare function verifyAndBuildPipeline(steps: readonly IPipelineStep[]): Pipeline;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyAndBuildPipeline = void 0;
|
|
4
|
+
const invalid_pipeline_error_1 = require("./invalid-pipeline-error");
|
|
5
|
+
const json_1 = require("../../../util/json");
|
|
6
|
+
const arrays_1 = require("../../../util/arrays");
|
|
7
|
+
/**
|
|
8
|
+
* Given a set of {@link IPipelineStep|steps} with their dependencies, this function verifies all requirements of {@link createPipeline}.
|
|
9
|
+
*/
|
|
10
|
+
function verifyAndBuildPipeline(steps) {
|
|
11
|
+
if (steps.length === 0) {
|
|
12
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError('0) Pipeline is empty');
|
|
13
|
+
}
|
|
14
|
+
const [perFileSteps, perRequestSteps] = (0, arrays_1.partitionArray)(steps, s => s.executed === 0 /* PipelineStepStage.OncePerFile */);
|
|
15
|
+
// we construct a map linking each name to its respective step
|
|
16
|
+
const perFileStepMap = new Map();
|
|
17
|
+
const initsPerFile = [];
|
|
18
|
+
const visited = new Set();
|
|
19
|
+
// we start by working on the per-file steps
|
|
20
|
+
initializeSteps(perFileSteps, perFileStepMap, initsPerFile, visited);
|
|
21
|
+
// first, we sort the per-file steps
|
|
22
|
+
const sortedPerFile = topologicalSort(initsPerFile, perFileStepMap, visited);
|
|
23
|
+
validateStepOutput(sortedPerFile, perFileStepMap, steps);
|
|
24
|
+
const perRequestStepMap = new Map(perFileStepMap);
|
|
25
|
+
// we track all elements without dependencies, i.e., those that start the pipeline
|
|
26
|
+
const initsPerRequest = [];
|
|
27
|
+
// now, we do the same for the per-request steps, keeping the per-file steps known
|
|
28
|
+
initializeSteps(perRequestSteps, perRequestStepMap, initsPerRequest, visited);
|
|
29
|
+
const sortedPerRequest = topologicalSort(initsPerRequest, perRequestStepMap, visited);
|
|
30
|
+
const sorted = [...sortedPerFile, ...sortedPerRequest];
|
|
31
|
+
validateStepOutput(sorted, perRequestStepMap, steps);
|
|
32
|
+
return {
|
|
33
|
+
steps: perRequestStepMap,
|
|
34
|
+
order: sorted,
|
|
35
|
+
firstStepPerRequest: sortedPerFile.length
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
exports.verifyAndBuildPipeline = verifyAndBuildPipeline;
|
|
39
|
+
function validateStepOutput(sorted, stepMap, steps) {
|
|
40
|
+
if (sorted.length !== stepMap.size) {
|
|
41
|
+
// check if any of the dependencies in the map are invalid
|
|
42
|
+
checkForInvalidDependency(steps, stepMap);
|
|
43
|
+
// otherwise, we assume a cycle
|
|
44
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError(`3) Pipeline contains at least one cycle; sorted: ${JSON.stringify(sorted)}, steps: ${JSON.stringify([...stepMap.keys()])}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function allDependenciesAreVisited(step, visited) {
|
|
48
|
+
return step.dependencies.every(d => visited.has(d));
|
|
49
|
+
}
|
|
50
|
+
function handleStep(step, init, visited, sorted, elem, decoratorsOfLastOthers, inits) {
|
|
51
|
+
if (step.decorates === init) {
|
|
52
|
+
if (allDependenciesAreVisited(step, visited)) {
|
|
53
|
+
sorted.push(elem);
|
|
54
|
+
visited.add(elem);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
decoratorsOfLastOthers.add(elem);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (step.decorates === undefined && allDependenciesAreVisited(step, visited)) {
|
|
61
|
+
inits.push(elem);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function topologicalSort(inits, stepMap, visited) {
|
|
65
|
+
const sorted = [];
|
|
66
|
+
while (inits.length > 0) {
|
|
67
|
+
const init = inits.pop();
|
|
68
|
+
sorted.push(init);
|
|
69
|
+
visited.add(init);
|
|
70
|
+
// these decorators still have dependencies open; we have to check if they can be satisfied by the other steps to add
|
|
71
|
+
const decoratorsOfLastOthers = new Set();
|
|
72
|
+
for (const [elem, step] of stepMap.entries()) {
|
|
73
|
+
if (visited.has(elem)) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
handleStep(step, init, visited, sorted, elem, decoratorsOfLastOthers, inits);
|
|
77
|
+
}
|
|
78
|
+
// for the other decorators we have to cycle until we find a solution, or know, that no solution exists
|
|
79
|
+
topologicallyInsertDecoratorElements(decoratorsOfLastOthers, stepMap, visited, sorted);
|
|
80
|
+
}
|
|
81
|
+
return sorted;
|
|
82
|
+
}
|
|
83
|
+
function topologicallyInsertDecoratorElements(decoratorsOfLastOthers, stepMap, visited, sorted) {
|
|
84
|
+
if (decoratorsOfLastOthers.size === 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
let changed = true;
|
|
88
|
+
while (changed) {
|
|
89
|
+
changed = false;
|
|
90
|
+
for (const elem of [...decoratorsOfLastOthers]) {
|
|
91
|
+
const step = stepMap.get(elem);
|
|
92
|
+
if (allDependenciesAreVisited(step, visited)) {
|
|
93
|
+
decoratorsOfLastOthers.delete(elem);
|
|
94
|
+
sorted.push(elem);
|
|
95
|
+
visited.add(elem);
|
|
96
|
+
changed = true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (decoratorsOfLastOthers.size > 0) {
|
|
101
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError(`5) Pipeline contains at least one decoration cycle: ${JSON.stringify(decoratorsOfLastOthers, json_1.jsonReplacer)}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function checkForInvalidDependency(steps, stepMap) {
|
|
105
|
+
for (const step of steps) {
|
|
106
|
+
for (const dep of step.dependencies) {
|
|
107
|
+
if (!stepMap.has(dep)) {
|
|
108
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError(`2) Step "${step.name}" depends on step "${dep}" which does not exist`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (step.decorates && !stepMap.has(step.decorates)) {
|
|
112
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError(`4) Step "${step.name}" decorates step "${step.decorates}" which does not exist`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function initializeSteps(steps, stepMap, inits, visited) {
|
|
117
|
+
for (const step of steps) {
|
|
118
|
+
const name = step.name;
|
|
119
|
+
// if the name is already in the map, we have a duplicate
|
|
120
|
+
if (stepMap.has(name)) {
|
|
121
|
+
throw new invalid_pipeline_error_1.InvalidPipelineError(`1) Step name "${name}" is not unique in the pipeline`);
|
|
122
|
+
}
|
|
123
|
+
stepMap.set(name, step);
|
|
124
|
+
// only steps that have no dependencies and do not decorate others can be initial steps
|
|
125
|
+
if (allDependenciesAreVisited(step, visited) && (step.decorates === undefined || visited.has(step.decorates))) {
|
|
126
|
+
inits.push(name);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=create-pipeline.js.map
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
|
|
2
|
+
readonly name: "parse";
|
|
3
|
+
readonly humanReadableName: "parse with R shell";
|
|
4
|
+
readonly description: "Parse the given R code into an AST";
|
|
5
|
+
readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
|
|
6
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
7
|
+
readonly printer: {
|
|
8
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
9
|
+
readonly 2: (text: string) => string;
|
|
10
|
+
readonly 5: typeof import("../../print/parse-printer").parseToQuads;
|
|
11
|
+
};
|
|
12
|
+
readonly dependencies: readonly [];
|
|
13
|
+
readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
|
|
14
|
+
} | {
|
|
15
|
+
readonly name: "normalize";
|
|
16
|
+
readonly humanReadableName: "normalize";
|
|
17
|
+
readonly description: "Normalize the AST to flowR's AST";
|
|
18
|
+
readonly processor: (results: {
|
|
19
|
+
parse?: string | undefined;
|
|
20
|
+
}, input: Partial<import("../all/core/10-normalize").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>>;
|
|
21
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
22
|
+
readonly printer: {
|
|
23
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
24
|
+
readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
|
|
25
|
+
readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
|
|
26
|
+
readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
|
|
27
|
+
readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
|
|
28
|
+
};
|
|
29
|
+
readonly dependencies: readonly ["parse"];
|
|
30
|
+
readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
|
|
31
|
+
} | {
|
|
32
|
+
readonly humanReadableName: "dataflow";
|
|
33
|
+
readonly processor: (results: {
|
|
34
|
+
normalize?: 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>> | undefined;
|
|
35
|
+
}, input: {
|
|
36
|
+
request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
|
|
37
|
+
}) => import("../../../dataflow/info").DataflowInformation;
|
|
38
|
+
readonly requiredInput: {};
|
|
39
|
+
readonly name: "dataflow";
|
|
40
|
+
readonly description: "Construct the dataflow graph";
|
|
41
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
42
|
+
readonly printer: {
|
|
43
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
44
|
+
readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
|
|
45
|
+
readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
|
|
46
|
+
readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
|
|
47
|
+
readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
|
|
48
|
+
};
|
|
49
|
+
readonly dependencies: readonly ["normalize"];
|
|
50
|
+
} | {
|
|
51
|
+
readonly name: "slice";
|
|
52
|
+
readonly humanReadableName: "static slice";
|
|
53
|
+
readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
|
|
54
|
+
readonly processor: (results: {
|
|
55
|
+
dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
|
|
56
|
+
normalize?: 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>> | undefined;
|
|
57
|
+
}, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
|
|
58
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
59
|
+
readonly printer: {
|
|
60
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
61
|
+
};
|
|
62
|
+
readonly dependencies: readonly ["dataflow"];
|
|
63
|
+
readonly requiredInput: import("../all/static-slicing/00-slice").SliceRequiredInput;
|
|
64
|
+
} | {
|
|
65
|
+
readonly name: "reconstruct";
|
|
66
|
+
readonly humanReadableName: "static code reconstruction";
|
|
67
|
+
readonly description: "Reconstruct R code from the static slice";
|
|
68
|
+
readonly processor: (results: {
|
|
69
|
+
normalize?: 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>> | undefined;
|
|
70
|
+
slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
|
|
71
|
+
}, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
|
|
72
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
73
|
+
readonly printer: {
|
|
74
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
75
|
+
};
|
|
76
|
+
readonly dependencies: readonly ["slice"];
|
|
77
|
+
readonly requiredInput: import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput;
|
|
78
|
+
}>;
|
|
79
|
+
export declare const DEFAULT_RECONSTRUCT_PIPELINE: import("./pipeline").Pipeline<{
|
|
80
|
+
readonly name: "parse";
|
|
81
|
+
readonly humanReadableName: "parse with R shell";
|
|
82
|
+
readonly description: "Parse the given R code into an AST";
|
|
83
|
+
readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
|
|
84
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
85
|
+
readonly printer: {
|
|
86
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
87
|
+
readonly 2: (text: string) => string;
|
|
88
|
+
readonly 5: typeof import("../../print/parse-printer").parseToQuads;
|
|
89
|
+
};
|
|
90
|
+
readonly dependencies: readonly [];
|
|
91
|
+
readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
|
|
92
|
+
} | {
|
|
93
|
+
readonly name: "normalize";
|
|
94
|
+
readonly humanReadableName: "normalize";
|
|
95
|
+
readonly description: "Normalize the AST to flowR's AST";
|
|
96
|
+
readonly processor: (results: {
|
|
97
|
+
parse?: string | undefined;
|
|
98
|
+
}, input: Partial<import("../all/core/10-normalize").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>>;
|
|
99
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
100
|
+
readonly printer: {
|
|
101
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
102
|
+
readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
|
|
103
|
+
readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
|
|
104
|
+
readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
|
|
105
|
+
readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
|
|
106
|
+
};
|
|
107
|
+
readonly dependencies: readonly ["parse"];
|
|
108
|
+
readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
|
|
109
|
+
} | {
|
|
110
|
+
readonly humanReadableName: "dataflow";
|
|
111
|
+
readonly processor: (results: {
|
|
112
|
+
normalize?: 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>> | undefined;
|
|
113
|
+
}, input: {
|
|
114
|
+
request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
|
|
115
|
+
}) => import("../../../dataflow/info").DataflowInformation;
|
|
116
|
+
readonly requiredInput: {};
|
|
117
|
+
readonly name: "dataflow";
|
|
118
|
+
readonly description: "Construct the dataflow graph";
|
|
119
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
120
|
+
readonly printer: {
|
|
121
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
122
|
+
readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
|
|
123
|
+
readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
|
|
124
|
+
readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
|
|
125
|
+
readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
|
|
126
|
+
};
|
|
127
|
+
readonly dependencies: readonly ["normalize"];
|
|
128
|
+
} | {
|
|
129
|
+
readonly name: "slice";
|
|
130
|
+
readonly humanReadableName: "static slice";
|
|
131
|
+
readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
|
|
132
|
+
readonly processor: (results: {
|
|
133
|
+
dataflow?: import("../../../dataflow/info").DataflowInformation | undefined;
|
|
134
|
+
normalize?: 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>> | undefined;
|
|
135
|
+
}, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
|
|
136
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
137
|
+
readonly printer: {
|
|
138
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
139
|
+
};
|
|
140
|
+
readonly dependencies: readonly ["dataflow"];
|
|
141
|
+
readonly requiredInput: import("../all/static-slicing/00-slice").SliceRequiredInput;
|
|
142
|
+
} | {
|
|
143
|
+
readonly name: "reconstruct";
|
|
144
|
+
readonly humanReadableName: "static code reconstruction";
|
|
145
|
+
readonly description: "Reconstruct R code from the static slice";
|
|
146
|
+
readonly processor: (results: {
|
|
147
|
+
normalize?: 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>> | undefined;
|
|
148
|
+
slice?: import("../../../slicing/static/slicer-types").SliceResult | undefined;
|
|
149
|
+
}, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
|
|
150
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
151
|
+
readonly printer: {
|
|
152
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
153
|
+
};
|
|
154
|
+
readonly dependencies: readonly ["slice"];
|
|
155
|
+
readonly requiredInput: import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput;
|
|
156
|
+
}>;
|
|
157
|
+
export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
|
|
158
|
+
readonly name: "parse";
|
|
159
|
+
readonly humanReadableName: "parse with R shell";
|
|
160
|
+
readonly description: "Parse the given R code into an AST";
|
|
161
|
+
readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
|
|
162
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
163
|
+
readonly printer: {
|
|
164
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
165
|
+
readonly 2: (text: string) => string;
|
|
166
|
+
readonly 5: typeof import("../../print/parse-printer").parseToQuads;
|
|
167
|
+
};
|
|
168
|
+
readonly dependencies: readonly [];
|
|
169
|
+
readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
|
|
170
|
+
} | {
|
|
171
|
+
readonly name: "normalize";
|
|
172
|
+
readonly humanReadableName: "normalize";
|
|
173
|
+
readonly description: "Normalize the AST to flowR's AST";
|
|
174
|
+
readonly processor: (results: {
|
|
175
|
+
parse?: string | undefined;
|
|
176
|
+
}, input: Partial<import("../all/core/10-normalize").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>>;
|
|
177
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
178
|
+
readonly printer: {
|
|
179
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
180
|
+
readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
|
|
181
|
+
readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
|
|
182
|
+
readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
|
|
183
|
+
readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
|
|
184
|
+
};
|
|
185
|
+
readonly dependencies: readonly ["parse"];
|
|
186
|
+
readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
|
|
187
|
+
} | {
|
|
188
|
+
readonly humanReadableName: "dataflow";
|
|
189
|
+
readonly processor: (results: {
|
|
190
|
+
normalize?: 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>> | undefined;
|
|
191
|
+
}, input: {
|
|
192
|
+
request?: import("../../../r-bridge/retriever").RParseRequest | undefined;
|
|
193
|
+
}) => import("../../../dataflow/info").DataflowInformation;
|
|
194
|
+
readonly requiredInput: {};
|
|
195
|
+
readonly name: "dataflow";
|
|
196
|
+
readonly description: "Construct the dataflow graph";
|
|
197
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
198
|
+
readonly printer: {
|
|
199
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
200
|
+
readonly 2: typeof import("../../print/dataflow-printer").dataflowGraphToJson;
|
|
201
|
+
readonly 5: typeof import("../../print/dataflow-printer").dataflowGraphToQuads;
|
|
202
|
+
readonly 3: typeof import("../../print/dataflow-printer").dataflowGraphToMermaid;
|
|
203
|
+
readonly 4: typeof import("../../print/dataflow-printer").dataflowGraphToMermaidUrl;
|
|
204
|
+
};
|
|
205
|
+
readonly dependencies: readonly ["normalize"];
|
|
206
|
+
}>;
|
|
207
|
+
export declare const DEFAULT_NORMALIZE_PIPELINE: import("./pipeline").Pipeline<{
|
|
208
|
+
readonly name: "parse";
|
|
209
|
+
readonly humanReadableName: "parse with R shell";
|
|
210
|
+
readonly description: "Parse the given R code into an AST";
|
|
211
|
+
readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
|
|
212
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
213
|
+
readonly printer: {
|
|
214
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
215
|
+
readonly 2: (text: string) => string;
|
|
216
|
+
readonly 5: typeof import("../../print/parse-printer").parseToQuads;
|
|
217
|
+
};
|
|
218
|
+
readonly dependencies: readonly [];
|
|
219
|
+
readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
|
|
220
|
+
} | {
|
|
221
|
+
readonly name: "normalize";
|
|
222
|
+
readonly humanReadableName: "normalize";
|
|
223
|
+
readonly description: "Normalize the AST to flowR's AST";
|
|
224
|
+
readonly processor: (results: {
|
|
225
|
+
parse?: string | undefined;
|
|
226
|
+
}, input: Partial<import("../all/core/10-normalize").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>>;
|
|
227
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
228
|
+
readonly printer: {
|
|
229
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
230
|
+
readonly 2: typeof import("../../print/normalize-printer").normalizedAstToJson;
|
|
231
|
+
readonly 5: typeof import("../../print/normalize-printer").normalizedAstToQuads;
|
|
232
|
+
readonly 3: typeof import("../../print/normalize-printer").printNormalizedAstToMermaid;
|
|
233
|
+
readonly 4: typeof import("../../print/normalize-printer").printNormalizedAstToMermaidUrl;
|
|
234
|
+
};
|
|
235
|
+
readonly dependencies: readonly ["parse"];
|
|
236
|
+
readonly requiredInput: import("../all/core/10-normalize").NormalizeRequiredInput;
|
|
237
|
+
}>;
|
|
238
|
+
export declare const DEFAULT_PARSE_PIPELINE: import("./pipeline").Pipeline<{
|
|
239
|
+
readonly name: "parse";
|
|
240
|
+
readonly humanReadableName: "parse with R shell";
|
|
241
|
+
readonly description: "Parse the given R code into an AST";
|
|
242
|
+
readonly processor: (_results: unknown, input: Partial<import("../all/core/00-parse").ParseRequiredInput>) => import("ts-essentials").AsyncOrSync<string>;
|
|
243
|
+
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
244
|
+
readonly printer: {
|
|
245
|
+
readonly 0: typeof import("../../print/print").internalPrinter;
|
|
246
|
+
readonly 2: (text: string) => string;
|
|
247
|
+
readonly 5: typeof import("../../print/parse-printer").parseToQuads;
|
|
248
|
+
};
|
|
249
|
+
readonly dependencies: readonly [];
|
|
250
|
+
readonly requiredInput: import("../all/core/00-parse").ParseRequiredInput;
|
|
251
|
+
}>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PARSE_PIPELINE = exports.DEFAULT_NORMALIZE_PIPELINE = exports.DEFAULT_DATAFLOW_PIPELINE = exports.DEFAULT_RECONSTRUCT_PIPELINE = exports.DEFAULT_SLICING_PIPELINE = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Contains the default pipeline for working with flowr
|
|
6
|
+
*/
|
|
7
|
+
const pipeline_1 = require("./pipeline");
|
|
8
|
+
const _00_parse_1 = require("../all/core/00-parse");
|
|
9
|
+
const _10_normalize_1 = require("../all/core/10-normalize");
|
|
10
|
+
const _20_dataflow_1 = require("../all/core/20-dataflow");
|
|
11
|
+
const _00_slice_1 = require("../all/static-slicing/00-slice");
|
|
12
|
+
const _10_reconstruct_1 = require("../all/static-slicing/10-reconstruct");
|
|
13
|
+
exports.DEFAULT_SLICING_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.STATIC_DATAFLOW, _00_slice_1.STATIC_SLICE, _10_reconstruct_1.NAIVE_RECONSTRUCT);
|
|
14
|
+
exports.DEFAULT_RECONSTRUCT_PIPELINE = exports.DEFAULT_SLICING_PIPELINE;
|
|
15
|
+
exports.DEFAULT_DATAFLOW_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE, _20_dataflow_1.STATIC_DATAFLOW);
|
|
16
|
+
exports.DEFAULT_NORMALIZE_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP, _10_normalize_1.NORMALIZE);
|
|
17
|
+
exports.DEFAULT_PARSE_PIPELINE = (0, pipeline_1.createPipeline)(_00_parse_1.PARSE_WITH_R_SHELL_STEP);
|
|
18
|
+
//# sourceMappingURL=default-pipelines.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidPipelineError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Thrown if for whatever reason, the pipeline is invalid.
|
|
6
|
+
*/
|
|
7
|
+
class InvalidPipelineError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'InvalidPipelineError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.InvalidPipelineError = InvalidPipelineError;
|
|
14
|
+
//# sourceMappingURL=invalid-pipeline-error.js.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { IPipelineStep, PipelineStepName, PipelineStepStage } from '../pipeline-step';
|
|
2
|
+
import type { DeepReadonly, UnionToIntersection } from 'ts-essentials';
|
|
3
|
+
/**
|
|
4
|
+
* A pipeline is a collection of {@link Pipeline#steps|steps} that are executed in a certain {@link Pipeline#order|order}.
|
|
5
|
+
* It is to be created {@link createPipeline}.
|
|
6
|
+
*
|
|
7
|
+
* If you want to get the type of all steps in the pipeline (given they are created canonically using const step names), refer to {@link PipelineStepNames}.
|
|
8
|
+
*/
|
|
9
|
+
export interface Pipeline<T extends IPipelineStep = IPipelineStep> {
|
|
10
|
+
readonly steps: ReadonlyMap<PipelineStepName, DeepReadonly<IPipelineStep>>;
|
|
11
|
+
readonly order: readonly T['name'][];
|
|
12
|
+
/**
|
|
13
|
+
* In the order, this is the index of the first step that
|
|
14
|
+
* is executed {@link PipelineStepStage#OncePerRequest|once per request}.
|
|
15
|
+
* If it is "out of bounds" (i.e., the number of steps), all steps are executed {@link PipelineStepStage#OncePerFile|once per file}.
|
|
16
|
+
*/
|
|
17
|
+
readonly firstStepPerRequest: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns the types of all step names in the given pipeline.
|
|
21
|
+
*
|
|
22
|
+
* @see Pipeline for details
|
|
23
|
+
*/
|
|
24
|
+
export type PipelineStepNames<P extends Pipeline> = PipelineStep<P>['name'];
|
|
25
|
+
export type PipelineStep<P extends Pipeline> = P extends Pipeline<infer U> ? U : never;
|
|
26
|
+
export type PipelineStepWithName<P extends Pipeline, Name extends PipelineStepName> = P extends Pipeline<infer U> ? U extends IPipelineStep<Name> ? U : never : never;
|
|
27
|
+
export type PipelineStepProcessorWithName<P extends Pipeline, Name extends PipelineStepName> = PipelineStepWithName<P, Name>['processor'];
|
|
28
|
+
export type PipelineStepPrintersWithName<P extends Pipeline, Name extends PipelineStepName> = PipelineStepWithName<P, Name>['printer'];
|
|
29
|
+
export type PipelineStepOutputWithName<P extends Pipeline, Name extends PipelineStepName> = Awaited<ReturnType<PipelineStepProcessorWithName<P, Name>>>;
|
|
30
|
+
export type PipelineInput<P extends Pipeline> = UnionToIntersection<PipelineStep<P>['requiredInput']>;
|
|
31
|
+
/**
|
|
32
|
+
* Only gets the union of 'requiredInput' of those PipelineSteps which have a 'execute' field of type 'OncePerRequest'.
|
|
33
|
+
* In other words, information that you may want to change for another request (e.g., another slice) with the same file.
|
|
34
|
+
*/
|
|
35
|
+
export type PipelinePerRequestInput<P extends Pipeline> = {
|
|
36
|
+
[K in PipelineStepNames<P>]: PipelineStepWithName<P, K>['executed'] extends PipelineStepStage.OncePerFile ? never : PipelineStepWithName<P, K>['requiredInput'];
|
|
37
|
+
}[PipelineStepNames<P>];
|
|
38
|
+
export type PipelineOutput<P extends Pipeline> = {
|
|
39
|
+
[K in PipelineStepNames<P>]: PipelineStepOutputWithName<P, K>;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
|
|
43
|
+
* In order to be valid, the collection of {@link IPipelineStep|steps} must satisfy the following set of constraints
|
|
44
|
+
* (which should be logical, when you consider what a pipeline should accomplish):
|
|
45
|
+
*
|
|
46
|
+
* 0) the collection of {@link IPipelineStep|steps} is not empty
|
|
47
|
+
* 1) all {@link IPipelineStepOrder#name|names} of {@link IPipelineStep|steps} are unique for the given pipeline
|
|
48
|
+
* 2) all {@link IPipelineStepOrder#dependencies|dependencies} of all {@link IPipelineStep|steps} are exist
|
|
49
|
+
* 3) there are no cycles in the dependency graph
|
|
50
|
+
* 4) the target of a {@link IPipelineStepOrder#decorates|step's decoration} exists
|
|
51
|
+
* 5) if a {@link IPipelineStepOrder#decorates|decoration} applies, all of its {@link IPipelineStepOrder#dependencies|dependencies} are already in the pipeline
|
|
52
|
+
* 6) in the resulting {@link Pipeline|pipeline}, there is a strict cut between {@link IPipelineStep|steps} that are executed
|
|
53
|
+
* {@link PipelineStepStage#OncePerFile|once per file} and {@link PipelineStepStage#OncePerRequest|once per request}.
|
|
54
|
+
*
|
|
55
|
+
* @returns The function will try to order your collection steps so that all the constraints hold.
|
|
56
|
+
* If it succeeds it will return the resulting {@link Pipeline|pipeline}, otherwise it will throw an {@link InvalidPipelineError}.
|
|
57
|
+
*
|
|
58
|
+
* @throws InvalidPipelineError If any of the constraints listed above are not satisfied.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createPipeline<T extends readonly IPipelineStep[]>(...steps: T): Pipeline<T[number]>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPipeline = void 0;
|
|
4
|
+
const create_pipeline_1 = require("./create-pipeline");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
|
|
7
|
+
* In order to be valid, the collection of {@link IPipelineStep|steps} must satisfy the following set of constraints
|
|
8
|
+
* (which should be logical, when you consider what a pipeline should accomplish):
|
|
9
|
+
*
|
|
10
|
+
* 0) the collection of {@link IPipelineStep|steps} is not empty
|
|
11
|
+
* 1) all {@link IPipelineStepOrder#name|names} of {@link IPipelineStep|steps} are unique for the given pipeline
|
|
12
|
+
* 2) all {@link IPipelineStepOrder#dependencies|dependencies} of all {@link IPipelineStep|steps} are exist
|
|
13
|
+
* 3) there are no cycles in the dependency graph
|
|
14
|
+
* 4) the target of a {@link IPipelineStepOrder#decorates|step's decoration} exists
|
|
15
|
+
* 5) if a {@link IPipelineStepOrder#decorates|decoration} applies, all of its {@link IPipelineStepOrder#dependencies|dependencies} are already in the pipeline
|
|
16
|
+
* 6) in the resulting {@link Pipeline|pipeline}, there is a strict cut between {@link IPipelineStep|steps} that are executed
|
|
17
|
+
* {@link PipelineStepStage#OncePerFile|once per file} and {@link PipelineStepStage#OncePerRequest|once per request}.
|
|
18
|
+
*
|
|
19
|
+
* @returns The function will try to order your collection steps so that all the constraints hold.
|
|
20
|
+
* If it succeeds it will return the resulting {@link Pipeline|pipeline}, otherwise it will throw an {@link InvalidPipelineError}.
|
|
21
|
+
*
|
|
22
|
+
* @throws InvalidPipelineError If any of the constraints listed above are not satisfied.
|
|
23
|
+
*/
|
|
24
|
+
function createPipeline(...steps) {
|
|
25
|
+
return (0, create_pipeline_1.verifyAndBuildPipeline)(steps);
|
|
26
|
+
}
|
|
27
|
+
exports.createPipeline = createPipeline;
|
|
28
|
+
//# sourceMappingURL=pipeline.js.map
|