@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
|
@@ -11,10 +11,7 @@ class ValueConversionError extends Error {
|
|
|
11
11
|
* transforms a value to something R can understand (e.g., booleans to TRUE/FALSE)
|
|
12
12
|
*/
|
|
13
13
|
function ts2r(value) {
|
|
14
|
-
if (typeof value === '
|
|
15
|
-
return 'NA';
|
|
16
|
-
}
|
|
17
|
-
else if (typeof value === 'string') {
|
|
14
|
+
if (typeof value === 'string') {
|
|
18
15
|
return JSON.stringify(value);
|
|
19
16
|
}
|
|
20
17
|
else if (typeof value === 'number') {
|
|
@@ -32,6 +29,9 @@ function ts2r(value) {
|
|
|
32
29
|
else if (value === null) {
|
|
33
30
|
return 'NULL';
|
|
34
31
|
}
|
|
32
|
+
else if (typeof value === 'undefined') {
|
|
33
|
+
return 'NA';
|
|
34
|
+
}
|
|
35
35
|
else if (Array.isArray(value)) {
|
|
36
36
|
return `c(${value.map(ts2r).join(', ')})`;
|
|
37
37
|
}
|
|
@@ -154,4 +154,4 @@ function isNA(value) {
|
|
|
154
154
|
return value === exports.RNa;
|
|
155
155
|
}
|
|
156
156
|
exports.isNA = isNA;
|
|
157
|
-
//# sourceMappingURL=values.js.map
|
|
157
|
+
//# sourceMappingURL=convert-values.js.map
|
package/r-bridge/retriever.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type RShell } from './shell';
|
|
2
|
-
import type {
|
|
3
|
-
import type { AsyncOrSync, DeepPartial } from 'ts-essentials';
|
|
2
|
+
import type { AsyncOrSync } from 'ts-essentials';
|
|
4
3
|
import { RShellExecutor } from './shell-executor';
|
|
5
|
-
|
|
4
|
+
import type { NormalizedAst } from './lang-4.x/ast/model/processing/decorate';
|
|
5
|
+
export declare const fileProtocol = "file://";
|
|
6
6
|
export interface RParseRequestFromFile {
|
|
7
7
|
readonly request: 'file';
|
|
8
|
-
/** The path to the file (absolute paths are probably best here */
|
|
8
|
+
/** The path to the file (absolute paths are probably best here) */
|
|
9
9
|
readonly content: string;
|
|
10
10
|
}
|
|
11
11
|
export interface RParseRequestFromText {
|
|
@@ -41,7 +41,7 @@ export declare function retrieveParseDataFromRCode(request: RParseRequest, shell
|
|
|
41
41
|
* Uses {@link retrieveParseDataFromRCode} and returns the nicely formatted object-AST.
|
|
42
42
|
* If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
|
|
43
43
|
*/
|
|
44
|
-
export declare function retrieveNormalizedAstFromRCode(request: RParseRequest, shell: RShell
|
|
44
|
+
export declare function retrieveNormalizedAstFromRCode(request: RParseRequest, shell: RShell): Promise<NormalizedAst>;
|
|
45
45
|
/**
|
|
46
46
|
* If the string has (R-)quotes around it, they will be removed, otherwise the string is returned unchanged.
|
|
47
47
|
*/
|
package/r-bridge/retriever.js
CHANGED
|
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.retrieveNumberOfRTokensOfLastParse = exports.removeRQuotes = exports.retrieveNormalizedAstFromRCode = exports.retrieveParseDataFromRCode = exports.requestFingerprint = exports.requestProviderFromText = exports.requestProviderFromFile = exports.requestFromInput = exports.fileProtocol = void 0;
|
|
7
|
-
const lang_4_x_1 = require("./lang-4.x");
|
|
8
7
|
const strings_1 = require("../util/strings");
|
|
9
8
|
const assert_1 = require("../util/assert");
|
|
10
9
|
const shell_executor_1 = require("./shell-executor");
|
|
11
10
|
const object_hash_1 = __importDefault(require("object-hash"));
|
|
12
11
|
const parser_1 = require("./lang-4.x/ast/parser/json/parser");
|
|
12
|
+
const init_1 = require("./init");
|
|
13
|
+
const convert_values_1 = require("./lang-4.x/convert-values");
|
|
13
14
|
exports.fileProtocol = 'file://';
|
|
14
15
|
/**
|
|
15
16
|
* Creates a {@link RParseRequest} from a given input.
|
|
@@ -48,7 +49,6 @@ function requestFingerprint(request) {
|
|
|
48
49
|
return (0, object_hash_1.default)(request);
|
|
49
50
|
}
|
|
50
51
|
exports.requestFingerprint = requestFingerprint;
|
|
51
|
-
const ErrorMarker = 'err';
|
|
52
52
|
/**
|
|
53
53
|
* Provides the capability to parse R files/R code using the R parser.
|
|
54
54
|
* Depends on {@link RShell} to provide a connection to R.
|
|
@@ -57,25 +57,12 @@ const ErrorMarker = 'err';
|
|
|
57
57
|
* If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
|
|
58
58
|
*/
|
|
59
59
|
function retrieveParseDataFromRCode(request, shell) {
|
|
60
|
+
if (request.content.trim() === '') {
|
|
61
|
+
return Promise.resolve('');
|
|
62
|
+
}
|
|
60
63
|
const suffix = request.request === 'file' ? ', encoding="utf-8"' : '';
|
|
61
|
-
|
|
62
|
-
const command =
|
|
63
|
-
/* first check if flowr_get is already part of the environment */
|
|
64
|
-
'if(!exists("flowr_get")){'
|
|
65
|
-
/* if not, define it complete wrapped in a try so that we can handle failures gracefully on stdout */
|
|
66
|
-
+ 'flowr_get<-function(...){tryCatch({'
|
|
67
|
-
/* the actual code to parse the R code, ... allows us to keep the old 'file=path' and 'text=content' semantics. we define flowr_output using the super assignment to persist it in the env! */
|
|
68
|
-
+ 'flowr_output<<-utils::getParseData(parse(...,keep.source=TRUE),includeText=TRUE);'
|
|
69
|
-
/* json conversion of the output, dataframe="values" allows us to receive a list of lists (which is more compact)!
|
|
70
|
-
* so we do not depend on jsonlite and friends, we do so manually (:sparkles:)
|
|
71
|
-
*/
|
|
72
|
-
+ `cat("[",paste0(apply(flowr_output,1,function(o)sprintf("[%s,%s,%s,%s,%s,%s,%s,%s,%s]",o[[1]],o[[2]],o[[3]],o[[4]],o[[5]],o[[6]],deparse(o[[7]]),if(o[[8]])"true"else"false",deparse(o[[9]]))),collapse=","),"]",${eol},sep="")`
|
|
73
|
-
/* error handling (just produce the marker) */
|
|
74
|
-
+ `},error=function(e){cat("${ErrorMarker}",${eol})})};`
|
|
75
|
-
/* compile the function to improve perf. */
|
|
76
|
-
+ 'flowr_get<-compiler::cmpfun(flowr_get)};'
|
|
77
|
-
/* call the function with the request */
|
|
78
|
-
+ `flowr_get(${request.request}=${JSON.stringify(request.content)}${suffix})`;
|
|
64
|
+
/* call the function with the request */
|
|
65
|
+
const command = `flowr_get_ast(${request.request}=${JSON.stringify(request.content)}${suffix})`;
|
|
79
66
|
if (shell instanceof shell_executor_1.RShellExecutor) {
|
|
80
67
|
return guardRetrievedOutput(shell.run(command), request);
|
|
81
68
|
}
|
|
@@ -88,9 +75,9 @@ exports.retrieveParseDataFromRCode = retrieveParseDataFromRCode;
|
|
|
88
75
|
* Uses {@link retrieveParseDataFromRCode} and returns the nicely formatted object-AST.
|
|
89
76
|
* If successful, allows to further query the last result with {@link retrieveNumberOfRTokensOfLastParse}.
|
|
90
77
|
*/
|
|
91
|
-
async function retrieveNormalizedAstFromRCode(request, shell
|
|
78
|
+
async function retrieveNormalizedAstFromRCode(request, shell) {
|
|
92
79
|
const data = await retrieveParseDataFromRCode(request, shell);
|
|
93
|
-
return (0, parser_1.normalize)(data
|
|
80
|
+
return (0, parser_1.normalize)(data);
|
|
94
81
|
}
|
|
95
82
|
exports.retrieveNormalizedAstFromRCode = retrieveNormalizedAstFromRCode;
|
|
96
83
|
/**
|
|
@@ -109,13 +96,13 @@ exports.removeRQuotes = removeRQuotes;
|
|
|
109
96
|
* Needs to be called *after* {@link retrieveParseDataFromRCode} (or {@link retrieveNormalizedAstFromRCode})
|
|
110
97
|
*/
|
|
111
98
|
async function retrieveNumberOfRTokensOfLastParse(shell) {
|
|
112
|
-
const result = await shell.sendCommandWithOutput(`cat(nrow(flowr_output),${(0,
|
|
99
|
+
const result = await shell.sendCommandWithOutput(`cat(nrow(flowr_output),${(0, convert_values_1.ts2r)(shell.options.eol)})`);
|
|
113
100
|
(0, assert_1.guard)(result.length === 1, () => `expected exactly one line to obtain the number of R tokens, but got: ${JSON.stringify(result)}`);
|
|
114
101
|
return Number(result[0]);
|
|
115
102
|
}
|
|
116
103
|
exports.retrieveNumberOfRTokensOfLastParse = retrieveNumberOfRTokensOfLastParse;
|
|
117
104
|
function guardRetrievedOutput(output, request) {
|
|
118
|
-
(0, assert_1.guard)(output !== ErrorMarker, () => `unable to parse R code (see the log for more information) for request ${JSON.stringify(request)}}`);
|
|
105
|
+
(0, assert_1.guard)(output !== init_1.ErrorMarker, () => `unable to parse R code (see the log for more information) for request ${JSON.stringify(request)}}`);
|
|
119
106
|
return output;
|
|
120
107
|
}
|
|
121
108
|
//# sourceMappingURL=retriever.js.map
|
|
@@ -4,7 +4,6 @@ export declare class RShellExecutor {
|
|
|
4
4
|
readonly options: Readonly<RShellExecutionOptions>;
|
|
5
5
|
private readonly prerequisites;
|
|
6
6
|
constructor(options?: Partial<RShellExecutionOptions>);
|
|
7
|
-
continueOnError(): this;
|
|
8
7
|
addPrerequisites(commands: string | string[]): this;
|
|
9
8
|
usedRVersion(): SemVer | null;
|
|
10
9
|
run(command: string, returnErr?: boolean): string;
|
|
@@ -7,35 +7,30 @@ exports.RShellExecutor = void 0;
|
|
|
7
7
|
const shell_1 = require("./shell");
|
|
8
8
|
const objects_1 = require("../util/objects");
|
|
9
9
|
const child_process_1 = require("child_process");
|
|
10
|
-
const lang_4_x_1 = require("./lang-4.x");
|
|
11
10
|
const preload_1 = __importDefault(require("semver/preload"));
|
|
12
11
|
const log_1 = require("../util/log");
|
|
12
|
+
const init_1 = require("./init");
|
|
13
|
+
const convert_values_1 = require("./lang-4.x/convert-values");
|
|
13
14
|
const executorLog = log_1.log.getSubLogger({ name: 'RShellExecutor' });
|
|
14
15
|
class RShellExecutor {
|
|
15
16
|
options;
|
|
16
|
-
prerequisites
|
|
17
|
+
prerequisites;
|
|
17
18
|
constructor(options) {
|
|
18
19
|
this.options = (0, objects_1.deepMergeObject)(shell_1.DEFAULT_R_SHELL_OPTIONS, options);
|
|
19
|
-
|
|
20
|
-
continueOnError() {
|
|
21
|
-
executorLog.info('continue in case of Errors');
|
|
22
|
-
this.addPrerequisites('options(error=function() {})');
|
|
23
|
-
return this;
|
|
20
|
+
this.prerequisites = [(0, init_1.initCommand)(this.options.eol)];
|
|
24
21
|
}
|
|
25
22
|
addPrerequisites(commands) {
|
|
26
23
|
this.prerequisites.push(...(typeof commands == 'string' ? [commands] : commands));
|
|
27
24
|
return this;
|
|
28
25
|
}
|
|
29
26
|
usedRVersion() {
|
|
30
|
-
const version = this.run(`cat(paste0(R.version$major,".",R.version$minor), ${(0,
|
|
31
|
-
|
|
27
|
+
const version = this.run(`cat(paste0(R.version$major,".",R.version$minor), ${(0, convert_values_1.ts2r)(this.options.eol)})`);
|
|
28
|
+
(0, log_1.expensiveTrace)(executorLog, () => `raw version: ${JSON.stringify(version)}`);
|
|
32
29
|
return preload_1.default.coerce(version);
|
|
33
30
|
}
|
|
34
31
|
run(command, returnErr = false) {
|
|
35
32
|
command += ';base::quit()';
|
|
36
|
-
|
|
37
|
-
executorLog.trace(`> ${JSON.stringify(command)}`);
|
|
38
|
-
}
|
|
33
|
+
(0, log_1.expensiveTrace)(executorLog, () => `> ${JSON.stringify(command)}`);
|
|
39
34
|
const returns = (0, child_process_1.spawnSync)(this.options.pathToRExecutable, this.options.commandLineOptions, {
|
|
40
35
|
env: this.options.env,
|
|
41
36
|
cwd: this.options.cwd,
|
package/r-bridge/shell.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { type MergeableRecord } from '../util/objects';
|
|
3
3
|
import type { SemVer } from 'semver';
|
|
4
|
+
import type { AsyncOrSync } from 'ts-essentials';
|
|
4
5
|
export type OutputStreamSelector = 'stdout' | 'stderr' | 'both';
|
|
5
6
|
export interface CollectorTimeout extends MergeableRecord {
|
|
6
7
|
/**
|
|
7
8
|
* number of milliseconds to wait for the collection to finish
|
|
8
9
|
*/
|
|
9
10
|
ms: number;
|
|
10
|
-
/**
|
|
11
|
-
* if true, the timeout will reset whenever we receive new data
|
|
12
|
-
*/
|
|
13
11
|
resetOnNewData: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* invoked when the timeout is reached. If not set, the promise will be rejected with an error.
|
|
14
|
+
*/
|
|
15
|
+
onTimeout?: (resolve: (value: AsyncOrSync<string[]>) => void, reject: (value: AsyncOrSync<string[]>) => void, partialResult: string[]) => void;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Configuration for the internal output collector used by the {@link RShell}
|
|
@@ -32,6 +34,11 @@ export interface OutputCollectorConfiguration extends MergeableRecord {
|
|
|
32
34
|
automaticallyTrimOutput: boolean;
|
|
33
35
|
}
|
|
34
36
|
export declare const DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION: OutputCollectorConfiguration;
|
|
37
|
+
export declare const enum RShellReviveOptions {
|
|
38
|
+
Never = 0,
|
|
39
|
+
OnError = 1,
|
|
40
|
+
Always = 2
|
|
41
|
+
}
|
|
35
42
|
export interface RShellExecutionOptions extends MergeableRecord {
|
|
36
43
|
/** The path to the R executable, can be only the executable if it is to be found on the PATH. */
|
|
37
44
|
readonly pathToRExecutable: string;
|
|
@@ -42,13 +49,13 @@ export interface RShellExecutionOptions extends MergeableRecord {
|
|
|
42
49
|
/** The character to use to mark the end of a line. Is probably always `\n` (even on windows). */
|
|
43
50
|
readonly eol: string;
|
|
44
51
|
/** The environment variables available in the R session. */
|
|
45
|
-
readonly env: NodeJS.ProcessEnv;
|
|
52
|
+
readonly env: NodeJS.ProcessEnv | undefined;
|
|
46
53
|
/** The path to the library directory, use undefined to let R figure that out for itself */
|
|
47
54
|
readonly homeLibPath: string | undefined;
|
|
48
55
|
}
|
|
49
56
|
export interface RShellSessionOptions extends RShellExecutionOptions {
|
|
50
57
|
/** If set, the R session will be restarted if it exits due to an error */
|
|
51
|
-
readonly revive:
|
|
58
|
+
readonly revive: RShellReviveOptions;
|
|
52
59
|
/** Called when the R session is restarted, this makes only sense if `revive` is not set to `'never'` */
|
|
53
60
|
readonly onRevive: (code: number, signal: string | null) => void;
|
|
54
61
|
}
|
|
@@ -84,7 +91,7 @@ export declare class RShell {
|
|
|
84
91
|
*/
|
|
85
92
|
sendCommand(command: string): void;
|
|
86
93
|
usedRVersion(): Promise<SemVer | null>;
|
|
87
|
-
injectLibPaths(...paths: string[]): void;
|
|
94
|
+
injectLibPaths(...paths: readonly string[]): void;
|
|
88
95
|
tryToInjectHomeLibPath(): void;
|
|
89
96
|
/**
|
|
90
97
|
* checks if a given package is already installed on the system!
|
|
@@ -103,16 +110,11 @@ export declare class RShell {
|
|
|
103
110
|
*
|
|
104
111
|
* @see sendCommand
|
|
105
112
|
*/
|
|
106
|
-
sendCommands(...commands: string[]): void;
|
|
113
|
+
sendCommands(...commands: readonly string[]): void;
|
|
107
114
|
/**
|
|
108
115
|
* clears the R environment using the `rm` command.
|
|
109
116
|
*/
|
|
110
117
|
clearEnvironment(): void;
|
|
111
|
-
/**
|
|
112
|
-
* usually R will stop execution on errors, with this the R session will try to
|
|
113
|
-
* continue working!
|
|
114
|
-
*/
|
|
115
|
-
continueOnError(): void;
|
|
116
118
|
/**
|
|
117
119
|
* Obtain the temporary directory used by R.
|
|
118
120
|
* Additionally, this marks the directory for removal when the shell exits.
|
package/r-bridge/shell.js
CHANGED
|
@@ -27,15 +27,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.RShell = exports.DEFAULT_R_SHELL_OPTIONS = exports.DEFAULT_R_SHELL_EXEC_OPTIONS = exports.DEFAULT_R_PATH = exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION = void 0;
|
|
30
|
-
const
|
|
30
|
+
const node_child_process_1 = require("node:child_process");
|
|
31
31
|
const objects_1 = require("../util/objects");
|
|
32
32
|
const readline = __importStar(require("readline"));
|
|
33
|
-
const lang_4_x_1 = require("./lang-4.x");
|
|
34
33
|
const log_1 = require("../util/log");
|
|
35
34
|
const preload_1 = __importDefault(require("semver/preload"));
|
|
36
35
|
const os_1 = require("../util/os");
|
|
37
36
|
const fs_1 = __importDefault(require("fs"));
|
|
37
|
+
const init_1 = require("./init");
|
|
38
38
|
const config_1 = require("../config");
|
|
39
|
+
const convert_values_1 = require("./lang-4.x/convert-values");
|
|
39
40
|
exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION = {
|
|
40
41
|
from: 'stdout',
|
|
41
42
|
postamble: `🐧${'-'.repeat(5)}🐧`,
|
|
@@ -50,16 +51,16 @@ exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION = {
|
|
|
50
51
|
exports.DEFAULT_R_PATH = (0, os_1.getPlatform)() === 'windows' ? 'R.exe' : 'R';
|
|
51
52
|
exports.DEFAULT_R_SHELL_EXEC_OPTIONS = {
|
|
52
53
|
pathToRExecutable: (0, config_1.getConfig)().rPath ?? exports.DEFAULT_R_PATH,
|
|
53
|
-
commandLineOptions: ['--vanilla', '--quiet', '--no-echo', '--no-save'],
|
|
54
|
+
commandLineOptions: ['--vanilla', '--quiet', '--no-echo', '--no-save', '--slave'],
|
|
54
55
|
cwd: process.cwd(),
|
|
55
|
-
env:
|
|
56
|
+
env: undefined,
|
|
56
57
|
eol: '\n',
|
|
57
58
|
homeLibPath: (0, os_1.getPlatform)() === 'windows' ? undefined : '~/.r-libs'
|
|
58
59
|
};
|
|
59
60
|
exports.DEFAULT_R_SHELL_OPTIONS = {
|
|
60
61
|
...exports.DEFAULT_R_SHELL_EXEC_OPTIONS,
|
|
61
62
|
sessionName: 'default',
|
|
62
|
-
revive:
|
|
63
|
+
revive: 0 /* RShellReviveOptions.Never */,
|
|
63
64
|
onRevive: () => { }
|
|
64
65
|
};
|
|
65
66
|
/**
|
|
@@ -78,17 +79,17 @@ class RShell {
|
|
|
78
79
|
// should never be more than one, but let's be sure
|
|
79
80
|
tempDirs = new Set();
|
|
80
81
|
constructor(options) {
|
|
81
|
-
this.options =
|
|
82
|
+
this.options = { ...exports.DEFAULT_R_SHELL_OPTIONS, ...options };
|
|
82
83
|
this.log = log_1.log.getSubLogger({ name: this.options.sessionName });
|
|
83
84
|
this.session = new RShellSession(this.options, this.log);
|
|
84
85
|
this.revive();
|
|
85
86
|
}
|
|
86
87
|
revive() {
|
|
87
|
-
if (this.options.revive ===
|
|
88
|
+
if (this.options.revive === 0 /* RShellReviveOptions.Never */) {
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
90
91
|
this.session.onExit((code, signal) => {
|
|
91
|
-
if (this.options.revive ===
|
|
92
|
+
if (this.options.revive === 2 /* RShellReviveOptions.Always */ || (this.options.revive === 1 /* RShellReviveOptions.OnError */ && code !== 0)) {
|
|
92
93
|
this.log.warn(`R session exited with code ${code}, reviving!`);
|
|
93
94
|
this.options.onRevive(code, signal);
|
|
94
95
|
this.session = new RShellSession(this.options, this.log);
|
|
@@ -101,7 +102,7 @@ class RShell {
|
|
|
101
102
|
* will not do anything to alter input markers!
|
|
102
103
|
*/
|
|
103
104
|
sendCommand(command) {
|
|
104
|
-
if (this.log.settings.minLevel
|
|
105
|
+
if (this.log.settings.minLevel <= 1 /* LogLevel.Trace */) {
|
|
105
106
|
this.log.trace(`> ${JSON.stringify(command)}`);
|
|
106
107
|
}
|
|
107
108
|
this._sendCommand(command);
|
|
@@ -111,14 +112,26 @@ class RShell {
|
|
|
111
112
|
return this.versionCache;
|
|
112
113
|
}
|
|
113
114
|
// retrieve raw version:
|
|
114
|
-
const result = await this.sendCommandWithOutput(`cat(paste0(R.version$major,".",R.version$minor), ${(0,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
const result = await this.sendCommandWithOutput(`cat(paste0(R.version$major,".",R.version$minor), ${(0, convert_values_1.ts2r)(this.options.eol)})`, {
|
|
116
|
+
timeout: {
|
|
117
|
+
ms: 5000,
|
|
118
|
+
resetOnNewData: false,
|
|
119
|
+
// just resolve on timeout and handle the empty array case below
|
|
120
|
+
onTimeout: resolve => resolve([])
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
(0, log_1.expensiveTrace)(this.log, () => `raw version: ${JSON.stringify(result)}`);
|
|
124
|
+
if (result.length === 1) {
|
|
125
|
+
this.versionCache = preload_1.default.coerce(result[0]);
|
|
126
|
+
return this.versionCache;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
118
131
|
}
|
|
119
132
|
injectLibPaths(...paths) {
|
|
120
|
-
this.log
|
|
121
|
-
this._sendCommand(`.libPaths(c(.libPaths(), ${paths.map(
|
|
133
|
+
(0, log_1.expensiveTrace)(this.log, () => `injecting lib paths ${JSON.stringify(paths)}`);
|
|
134
|
+
this._sendCommand(`.libPaths(c(.libPaths(), ${paths.map(convert_values_1.ts2r).join(',')}))`);
|
|
122
135
|
}
|
|
123
136
|
tryToInjectHomeLibPath() {
|
|
124
137
|
// ensure the path exists first
|
|
@@ -148,16 +161,14 @@ class RShell {
|
|
|
148
161
|
*/
|
|
149
162
|
async sendCommandWithOutput(command, addonConfig) {
|
|
150
163
|
const config = (0, objects_1.deepMergeObject)(exports.DEFAULT_OUTPUT_COLLECTOR_CONFIGURATION, addonConfig);
|
|
151
|
-
|
|
152
|
-
this.log.trace(`> ${JSON.stringify(command)}`);
|
|
153
|
-
}
|
|
164
|
+
(0, log_1.expensiveTrace)(this.log, () => `> ${JSON.stringify(command)}`);
|
|
154
165
|
const output = await this.session.collectLinesUntil(config.from, {
|
|
155
166
|
predicate: data => data === config.postamble,
|
|
156
167
|
includeInResult: config.keepPostamble // we do not want the postamble
|
|
157
168
|
}, config.timeout, () => {
|
|
158
169
|
this._sendCommand(command);
|
|
159
170
|
if (config.from === 'stderr') {
|
|
160
|
-
this._sendCommand(`cat("${config.postamble}${this.options.eol}",
|
|
171
|
+
this._sendCommand(`cat("${config.postamble}${this.options.eol}",file=stderr())`);
|
|
161
172
|
}
|
|
162
173
|
else {
|
|
163
174
|
this._sendCommand(`cat("${config.postamble}${this.options.eol}")`);
|
|
@@ -187,21 +198,13 @@ class RShell {
|
|
|
187
198
|
this.log.debug('clearing environment');
|
|
188
199
|
this._sendCommand('rm(list=ls())');
|
|
189
200
|
}
|
|
190
|
-
/**
|
|
191
|
-
* usually R will stop execution on errors, with this the R session will try to
|
|
192
|
-
* continue working!
|
|
193
|
-
*/
|
|
194
|
-
continueOnError() {
|
|
195
|
-
this.log.info('continue in case of Errors');
|
|
196
|
-
this._sendCommand('options(error=function() {})');
|
|
197
|
-
}
|
|
198
201
|
/**
|
|
199
202
|
* Obtain the temporary directory used by R.
|
|
200
203
|
* Additionally, this marks the directory for removal when the shell exits.
|
|
201
204
|
*/
|
|
202
205
|
async obtainTmpDir() {
|
|
203
|
-
this.sendCommand('temp
|
|
204
|
-
const [tempdir] = await this.sendCommandWithOutput(`cat(temp
|
|
206
|
+
this.sendCommand('temp<-tempdir()');
|
|
207
|
+
const [tempdir] = await this.sendCommandWithOutput(`cat(temp,${(0, convert_values_1.ts2r)(this.options.eol)})`);
|
|
205
208
|
this.tempDirs.add(tempdir);
|
|
206
209
|
return tempdir;
|
|
207
210
|
}
|
|
@@ -226,10 +229,9 @@ class RShellSession {
|
|
|
226
229
|
sessionStdOut;
|
|
227
230
|
sessionStdErr;
|
|
228
231
|
options;
|
|
229
|
-
log;
|
|
230
232
|
collectionTimeout;
|
|
231
233
|
constructor(options, log) {
|
|
232
|
-
this.bareSession = (0,
|
|
234
|
+
this.bareSession = (0, node_child_process_1.spawn)(options.pathToRExecutable, options.commandLineOptions, {
|
|
233
235
|
env: options.env,
|
|
234
236
|
cwd: options.cwd,
|
|
235
237
|
windowsHide: true
|
|
@@ -246,8 +248,19 @@ class RShellSession {
|
|
|
246
248
|
this.end();
|
|
247
249
|
});
|
|
248
250
|
this.options = options;
|
|
249
|
-
|
|
250
|
-
this.
|
|
251
|
+
// initialize the session
|
|
252
|
+
this.writeLine((0, init_1.initCommand)(options.eol));
|
|
253
|
+
if (log.settings.minLevel <= 1 /* LogLevel.Trace */) {
|
|
254
|
+
this.bareSession.stdout.on('data', (data) => {
|
|
255
|
+
log.trace(`< ${data.toString()}`);
|
|
256
|
+
});
|
|
257
|
+
this.bareSession.on('close', (code) => {
|
|
258
|
+
log.trace(`session exited with code ${code}`);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
this.bareSession.stderr.on('data', (data) => {
|
|
262
|
+
log.warn(`< ${data}`);
|
|
263
|
+
});
|
|
251
264
|
}
|
|
252
265
|
write(data) {
|
|
253
266
|
this.bareSession.stdin.write(data);
|
|
@@ -271,7 +284,12 @@ class RShellSession {
|
|
|
271
284
|
let error;
|
|
272
285
|
return await new Promise((resolve, reject) => {
|
|
273
286
|
const makeTimer = () => setTimeout(() => {
|
|
274
|
-
|
|
287
|
+
if (timeout.onTimeout) {
|
|
288
|
+
timeout.onTimeout(resolve, reject, result);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
reject(new Error(`timeout of ${timeout.ms}ms reached (${JSON.stringify(result)})`));
|
|
292
|
+
}
|
|
275
293
|
}, timeout.ms);
|
|
276
294
|
this.collectionTimeout = makeTimer();
|
|
277
295
|
handler = (data) => {
|
|
@@ -324,19 +342,6 @@ class RShellSession {
|
|
|
324
342
|
log_1.log.info(`killed R session with pid ${this.bareSession.pid ?? '<unknown>'} and result ${killResult ? 'successful' : 'failed'} (including streams)`);
|
|
325
343
|
return killResult;
|
|
326
344
|
}
|
|
327
|
-
setupRSessionLoggers() {
|
|
328
|
-
if (this.log.settings.minLevel >= 1 /* LogLevel.Trace */) {
|
|
329
|
-
this.bareSession.stdout.on('data', (data) => {
|
|
330
|
-
this.log.trace(`< ${data.toString()}`);
|
|
331
|
-
});
|
|
332
|
-
this.bareSession.on('close', (code) => {
|
|
333
|
-
this.log.trace(`session exited with code ${code}`);
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
this.bareSession.stderr.on('data', (data) => {
|
|
337
|
-
this.log.warn(`< ${data}`);
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
345
|
onExit(callback) {
|
|
341
346
|
this.bareSession.on('exit', callback);
|
|
342
347
|
this.bareSession.stdin.on('error', callback);
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* as the file itself is way too long). See {@link reconstructToCode}.
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import type { NormalizedAst,
|
|
7
|
-
type
|
|
6
|
+
import type { NormalizedAst, ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
7
|
+
import type { RNode } from '../r-bridge/lang-4.x/ast/model/model';
|
|
8
|
+
import type { NodeId } from '../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
9
|
+
type Selection = ReadonlySet<NodeId>;
|
|
8
10
|
export declare const reconstructLogger: import("tslog").Logger<import("tslog").ILogObj>;
|
|
9
11
|
/** The structure of the predicate that should be used to determine if a given normalized node should be included in the reconstructed code independent of if it is selected by the slice or not */
|
|
10
12
|
export type AutoSelectPredicate = (node: RNode<ParentInformation>) => boolean;
|