@eagleoutice/flowr 2.0.25 → 2.1.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/benchmark/slicer.js +2 -1
- package/benchmark/stats/print.js +3 -4
- package/benchmark/stats/size-of.js +9 -7
- package/benchmark/summarizer/first-phase/input.d.ts +0 -1
- package/benchmark/summarizer/first-phase/input.js +2 -3
- package/benchmark/summarizer/first-phase/process.js +7 -7
- package/benchmark/summarizer/second-phase/graph.js +1 -2
- package/benchmark/summarizer/second-phase/process.d.ts +0 -1
- package/benchmark/summarizer/second-phase/process.js +4 -5
- package/benchmark/summarizer/summarizer.js +7 -1
- package/cli/benchmark-app.js +6 -1
- package/cli/common/features.js +2 -3
- package/cli/common/script.js +2 -3
- package/cli/common/scripts-info.d.ts +69 -1
- package/cli/common/scripts-info.js +6 -6
- package/cli/flowr-main-options.d.ts +4 -0
- package/cli/flowr-main-options.js +88 -0
- package/cli/flowr.d.ts +3 -3
- package/cli/flowr.js +22 -31
- package/cli/repl/commands/{cfg.d.ts → repl-cfg.d.ts} +1 -1
- package/cli/repl/commands/{cfg.js → repl-cfg.js} +3 -3
- package/cli/repl/commands/{commands.d.ts → repl-commands.d.ts} +3 -1
- package/cli/repl/commands/{commands.js → repl-commands.js} +56 -35
- package/cli/repl/commands/{dataflow.d.ts → repl-dataflow.d.ts} +1 -1
- package/cli/repl/commands/{dataflow.js → repl-dataflow.js} +2 -2
- package/cli/repl/commands/{execute.d.ts → repl-execute.d.ts} +1 -1
- package/cli/repl/commands/{execute.js → repl-execute.js} +3 -3
- package/cli/repl/commands/repl-lineage.d.ts +15 -0
- package/cli/repl/commands/{lineage.js → repl-lineage.js} +14 -12
- package/cli/repl/commands/{main.js → repl-main.js} +1 -1
- package/cli/repl/commands/{normalize.d.ts → repl-normalize.d.ts} +1 -1
- package/cli/repl/commands/{normalize.js → repl-normalize.js} +3 -3
- package/cli/repl/commands/{parse.d.ts → repl-parse.d.ts} +1 -1
- package/cli/repl/commands/{parse.js → repl-parse.js} +3 -2
- package/cli/repl/commands/repl-query.d.ts +8 -0
- package/cli/repl/commands/repl-query.js +155 -0
- package/cli/repl/commands/repl-quit.d.ts +2 -0
- package/cli/repl/commands/{quit.js → repl-quit.js} +1 -1
- package/cli/repl/commands/{version.d.ts → repl-version.d.ts} +1 -1
- package/cli/repl/commands/{version.js → repl-version.js} +4 -4
- package/cli/repl/core.d.ts +1 -2
- package/cli/repl/core.js +13 -13
- package/cli/repl/execute.d.ts +1 -2
- package/cli/repl/execute.js +2 -3
- package/cli/repl/print-version.js +3 -4
- package/cli/repl/server/connection.d.ts +1 -0
- package/cli/repl/server/connection.js +45 -12
- package/cli/repl/server/messages/{messages.d.ts → all-messages.d.ts} +8 -7
- package/cli/repl/server/messages/{messages.js → all-messages.js} +1 -1
- package/cli/repl/server/messages/{analysis.d.ts → message-analysis.d.ts} +2 -1
- package/cli/repl/server/messages/message-analysis.js +39 -0
- package/cli/repl/server/messages/{error.d.ts → message-error.d.ts} +1 -1
- package/cli/repl/server/messages/{error.js → message-error.js} +1 -1
- package/cli/repl/server/messages/{hello.d.ts → message-hello.d.ts} +4 -3
- package/cli/repl/server/messages/message-hello.js +20 -0
- package/cli/repl/server/messages/{lineage.d.ts → message-lineage.d.ts} +2 -1
- package/cli/repl/server/messages/message-lineage.js +25 -0
- package/cli/repl/server/messages/message-query.d.ts +16 -0
- package/cli/repl/server/messages/message-query.js +26 -0
- package/cli/repl/server/messages/{repl.d.ts → message-repl.d.ts} +3 -1
- package/cli/repl/server/messages/message-repl.js +53 -0
- package/cli/repl/server/messages/{slice.d.ts → message-slice.d.ts} +2 -1
- package/cli/repl/server/messages/{slice.js → message-slice.js} +14 -6
- package/cli/repl/server/net.d.ts +0 -1
- package/cli/repl/server/send.d.ts +1 -1
- package/cli/repl/server/send.js +2 -3
- package/cli/repl/server/server.js +2 -2
- package/cli/repl/server/validate.d.ts +1 -1
- package/cli/repl/server/validate.js +5 -6
- package/cli/run-script.d.ts +8 -0
- package/cli/run-script.js +18 -0
- package/cli/script-core/statistics-core.d.ts +2 -0
- package/cli/script-core/statistics-core.js +100 -0
- package/cli/script-core/statistics-helper-core.d.ts +2 -0
- package/cli/script-core/statistics-helper-core.js +81 -0
- package/cli/script-core/summarizer-core.d.ts +2 -0
- package/cli/script-core/summarizer-core.js +51 -0
- package/cli/statistics-app.js +3 -87
- package/cli/statistics-helper-app.js +3 -77
- package/cli/summarizer-app.js +2 -48
- package/config.d.ts +20 -4
- package/config.js +62 -36
- package/core/pipeline-executor.js +11 -1
- package/core/print/dataflow-printer.js +4 -5
- package/core/print/normalize-printer.js +4 -5
- package/core/print/parse-printer.js +1 -2
- package/core/print/print.js +2 -3
- package/core/print/slice-diff-ansi.js +1 -2
- package/core/steps/pipeline/create-pipeline.js +1 -2
- package/core/steps/pipeline/default-pipelines.d.ts +18 -18
- package/core/steps/pipeline/pipeline.js +1 -2
- package/dataflow/environments/append.js +1 -2
- package/dataflow/environments/built-in-config.d.ts +47 -0
- package/dataflow/environments/built-in-config.js +83 -0
- package/dataflow/environments/built-in.d.ts +49 -6
- package/dataflow/environments/built-in.js +29 -97
- package/dataflow/environments/clone.js +2 -2
- package/dataflow/environments/default-builtin-config.d.ts +5 -0
- package/dataflow/environments/default-builtin-config.js +83 -0
- package/dataflow/environments/define.js +1 -2
- package/dataflow/environments/diff.js +5 -6
- package/dataflow/environments/environment.js +8 -7
- package/dataflow/environments/identifier.d.ts +39 -8
- package/dataflow/environments/identifier.js +33 -0
- package/dataflow/environments/overwrite.d.ts +6 -5
- package/dataflow/environments/overwrite.js +16 -9
- package/dataflow/environments/resolve-by-name.d.ts +3 -1
- package/dataflow/environments/resolve-by-name.js +40 -8
- package/dataflow/environments/scoping.js +2 -3
- package/dataflow/extractor.js +25 -24
- package/dataflow/graph/dataflowgraph-builder.d.ts +139 -0
- package/dataflow/graph/dataflowgraph-builder.js +247 -0
- package/dataflow/graph/diff.js +12 -11
- package/dataflow/graph/edge.d.ts +2 -2
- package/dataflow/graph/edge.js +46 -20
- package/dataflow/graph/graph.d.ts +14 -6
- package/dataflow/graph/graph.js +25 -21
- package/dataflow/graph/quads.js +1 -2
- package/dataflow/graph/resolve-graph.d.ts +7 -0
- package/dataflow/graph/resolve-graph.js +51 -0
- package/dataflow/graph/vertex.d.ts +12 -4
- package/dataflow/graph/vertex.js +19 -11
- package/dataflow/info.d.ts +3 -7
- package/dataflow/info.js +7 -8
- package/dataflow/internal/linker.d.ts +3 -1
- package/dataflow/internal/linker.js +77 -32
- package/dataflow/internal/process/functions/call/argument/make-argument.js +5 -5
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +1 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +10 -8
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +5 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +27 -10
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +40 -26
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +30 -20
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +10 -9
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +12 -11
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +6 -5
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +7 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +4 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +10 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +7 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +2 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +6 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +6 -5
- package/dataflow/internal/process/functions/call/common.js +30 -19
- package/dataflow/internal/process/functions/call/default-call-handling.js +1 -2
- package/dataflow/internal/process/functions/call/known-call-handling.js +8 -6
- package/dataflow/internal/process/functions/call/named-call-handling.js +7 -6
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +11 -7
- package/dataflow/internal/process/functions/process-argument.js +10 -8
- package/dataflow/internal/process/functions/process-parameter.js +8 -6
- package/dataflow/internal/process/process-named-call.js +3 -3
- package/dataflow/internal/process/process-symbol.js +5 -4
- package/dataflow/internal/process/process-uninteresting-leaf.js +1 -2
- package/dataflow/internal/process/process-value.js +5 -4
- package/dataflow/processor.js +1 -2
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +20 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +13 -0
- package/documentation/data/query/example-query-code.d.ts +1 -0
- package/documentation/data/query/example-query-code.js +25 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +1 -0
- package/documentation/data/server/doc-data-server-messages.js +508 -0
- package/documentation/doc-util/doc-auto-gen.d.ts +7 -0
- package/documentation/doc-util/doc-auto-gen.js +9 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -0
- package/documentation/doc-util/doc-cfg.js +18 -0
- package/documentation/doc-util/doc-cli-option.d.ts +8 -0
- package/documentation/doc-util/doc-cli-option.js +36 -0
- package/documentation/doc-util/doc-code.d.ts +1 -0
- package/documentation/doc-util/doc-code.js +7 -0
- package/documentation/doc-util/doc-dfg.d.ts +21 -0
- package/documentation/doc-util/doc-dfg.js +93 -0
- package/documentation/doc-util/doc-docker.d.ts +1 -0
- package/documentation/doc-util/doc-docker.js +5 -0
- package/documentation/doc-util/doc-env.d.ts +2 -0
- package/documentation/doc-util/doc-env.js +20 -0
- package/documentation/doc-util/doc-files.d.ts +6 -0
- package/documentation/doc-util/doc-files.js +25 -0
- package/documentation/doc-util/doc-general.d.ts +2 -0
- package/documentation/doc-util/doc-general.js +16 -0
- package/documentation/doc-util/doc-hover-over.d.ts +1 -0
- package/documentation/doc-util/doc-hover-over.js +7 -0
- package/documentation/doc-util/doc-issue.d.ts +1 -0
- package/documentation/doc-util/doc-issue.js +6 -0
- package/documentation/doc-util/doc-ms.d.ts +1 -0
- package/documentation/doc-util/doc-ms.js +8 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +11 -0
- package/documentation/doc-util/doc-normalized-ast.js +71 -0
- package/documentation/doc-util/doc-query.d.ts +24 -0
- package/documentation/doc-util/doc-query.js +113 -0
- package/documentation/doc-util/doc-repl.d.ts +13 -0
- package/documentation/doc-util/doc-repl.js +79 -0
- package/documentation/doc-util/doc-server-message.d.ts +37 -0
- package/documentation/doc-util/doc-server-message.js +153 -0
- package/documentation/doc-util/doc-structure.d.ts +12 -0
- package/documentation/doc-util/doc-structure.js +21 -0
- package/documentation/doc-util/doc-types.d.ts +38 -0
- package/documentation/doc-util/doc-types.js +276 -0
- package/{r-bridge/data/print.js → documentation/print-capabilities-markdown.js} +8 -4
- package/documentation/print-dataflow-graph-wiki.d.ts +1 -0
- package/documentation/print-dataflow-graph-wiki.js +849 -0
- package/documentation/print-interface-wiki.d.ts +1 -0
- package/documentation/print-interface-wiki.js +401 -0
- package/documentation/print-normalized-ast-wiki.d.ts +1 -0
- package/documentation/print-normalized-ast-wiki.js +98 -0
- package/documentation/print-query-wiki.d.ts +1 -0
- package/documentation/print-query-wiki.js +215 -0
- package/package.json +29 -33
- package/queries/base-query-format.d.ts +11 -0
- package/{cli/repl/server/messages/hello.js → queries/base-query-format.js} +1 -1
- package/queries/call-context-query/call-context-query-executor.d.ts +11 -0
- package/queries/call-context-query/call-context-query-executor.js +255 -0
- package/queries/call-context-query/call-context-query-format.d.ts +72 -0
- package/queries/call-context-query/call-context-query-format.js +17 -0
- package/queries/query-schema.d.ts +7 -0
- package/queries/query-schema.js +31 -0
- package/queries/query.d.ts +35 -0
- package/queries/query.js +57 -0
- package/queries/two-layer-collector.d.ts +8 -0
- package/queries/two-layer-collector.js +31 -0
- package/queries/virtual-query/compound-query.d.ts +24 -0
- package/queries/virtual-query/compound-query.js +18 -0
- package/queries/virtual-query/virtual-queries.d.ts +15 -0
- package/queries/virtual-query/virtual-queries.js +8 -0
- package/r-bridge/data/data.d.ts +5 -0
- package/r-bridge/data/data.js +6 -0
- package/r-bridge/data/get.js +2 -3
- package/r-bridge/init.js +2 -2
- package/r-bridge/lang-4.x/ast/model/collect.js +1 -2
- package/r-bridge/lang-4.x/ast/model/model.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-comment.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-for-loop.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +10 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-if-then-else.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-line-directive.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-logical.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-pipe.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-repeat-loop.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +1 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-while-loop.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/operators.js +27 -26
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +9 -9
- package/r-bridge/lang-4.x/ast/model/processing/fold.js +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +5 -0
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +26 -3
- package/r-bridge/lang-4.x/ast/model/processing/role.js +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +23 -23
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +23 -23
- package/r-bridge/lang-4.x/ast/model/type.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/type.js +221 -12
- package/r-bridge/lang-4.x/ast/parser/json/format.js +2 -2
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +6 -5
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/normalize-if-then-else.js +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/normalize-if-then.js +7 -7
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-argument.js +10 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-call.js +18 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.js +8 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-parameter.js +9 -9
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.js +10 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.js +5 -5
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.js +7 -7
- package/r-bridge/lang-4.x/ast/parser/xml/internal/normalize-access.js +12 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-binary.js +14 -14
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.js +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +13 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +6 -6
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +19 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.js +5 -5
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.js +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-symbol.js +2 -3
- package/r-bridge/lang-4.x/ast/parser/xml/normalize-meta.js +12 -12
- package/r-bridge/lang-4.x/convert-values.js +7 -7
- package/r-bridge/retriever.js +12 -11
- package/r-bridge/shell.d.ts +0 -1
- package/r-bridge/shell.js +6 -1
- package/reconstruct/auto-select/auto-select-defaults.js +1 -2
- package/reconstruct/auto-select/magic-comments.js +3 -3
- package/reconstruct/reconstruct.js +4 -3
- package/slicing/criterion/collect-all.js +1 -2
- package/slicing/criterion/parse.d.ts +1 -1
- package/slicing/criterion/parse.js +6 -5
- package/slicing/static/fingerprint.js +2 -3
- package/slicing/static/slice-call.js +9 -9
- package/slicing/static/static-slicer.js +5 -4
- package/statistics/features/common-syntax-probability.js +13 -13
- package/statistics/features/feature.d.ts +5 -9
- package/statistics/features/feature.js +2 -2
- package/statistics/features/post-processing.js +2 -3
- package/statistics/features/supported/assignments/assignments.js +3 -2
- package/statistics/features/supported/assignments/post-process.js +1 -2
- package/statistics/features/supported/comments/post-process.js +1 -2
- package/statistics/features/supported/control-flow/control-flow.js +4 -3
- package/statistics/features/supported/control-flow/post-process.js +1 -2
- package/statistics/features/supported/data-access/data-access.d.ts +2 -2
- package/statistics/features/supported/data-access/data-access.js +3 -2
- package/statistics/features/supported/data-access/post-process.js +1 -2
- package/statistics/features/supported/defined-functions/defined-functions.js +9 -7
- package/statistics/features/supported/defined-functions/post-process.d.ts +1 -1
- package/statistics/features/supported/defined-functions/post-process.js +2 -3
- package/statistics/features/supported/expression-list/post-process.js +1 -2
- package/statistics/features/supported/expression-list/{expression-list.js → statistics-expression-list.js} +4 -3
- package/statistics/features/supported/loops/loops.js +8 -7
- package/statistics/features/supported/loops/post-process.js +1 -2
- package/statistics/features/supported/used-functions/post-process.js +2 -3
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-functions/used-functions.js +4 -3
- package/statistics/features/supported/used-packages/post-process.js +1 -2
- package/statistics/features/supported/values/post-process.js +1 -2
- package/statistics/features/supported/variables/post-process.js +2 -3
- package/statistics/features/supported/variables/variables.js +2 -1
- package/statistics/meta-statistics.js +1 -2
- package/statistics/output/print-stats.js +4 -5
- package/statistics/output/statistics-file.js +5 -5
- package/statistics/statistics.js +2 -3
- package/statistics/summarizer/auto-detect.js +1 -2
- package/statistics/summarizer/post-process/clusterer.js +1 -2
- package/statistics/summarizer/post-process/file-based-count.js +2 -3
- package/statistics/summarizer/post-process/histogram.js +3 -4
- package/statistics/summarizer/post-process/post-process-output.js +2 -3
- package/statistics/summarizer/second-phase/process.d.ts +2 -0
- package/statistics/summarizer/second-phase/process.js +2 -2
- package/statistics/summarizer/summarizer.js +8 -1
- package/util/ansi.d.ts +1 -0
- package/util/ansi.js +27 -4
- package/util/args.js +2 -3
- package/util/arrays.js +8 -9
- package/util/assert.js +5 -6
- package/util/bimap.d.ts +4 -4
- package/util/cfg/cfg.d.ts +1 -0
- package/util/cfg/cfg.js +8 -5
- package/util/cfg/visitor.d.ts +8 -13
- package/util/cfg/visitor.js +22 -56
- package/util/diff.js +1 -2
- package/util/files.d.ts +0 -1
- package/util/files.js +11 -8
- package/util/json.js +2 -3
- package/util/mermaid/ast.js +7 -7
- package/util/mermaid/cfg.js +2 -3
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +28 -16
- package/util/mermaid/mermaid.js +5 -4
- package/util/numbers.js +1 -2
- package/util/objects.d.ts +7 -0
- package/util/objects.js +13 -3
- package/util/os.js +1 -2
- package/util/quads.js +5 -5
- package/util/random.js +2 -2
- package/util/range.js +8 -9
- package/util/schema.d.ts +11 -0
- package/util/schema.js +75 -0
- package/util/set.js +2 -3
- package/util/strings.js +3 -4
- package/util/summarizer.js +4 -4
- package/util/text.d.ts +1 -0
- package/util/text.js +20 -0
- package/util/time.js +1 -2
- package/util/version.js +2 -3
- package/cli/repl/commands/lineage.d.ts +0 -15
- package/cli/repl/commands/quit.d.ts +0 -2
- package/cli/repl/server/messages/analysis.js +0 -21
- package/cli/repl/server/messages/lineage.js +0 -17
- package/cli/repl/server/messages/repl.js +0 -37
- /package/cli/repl/commands/{main.d.ts → repl-main.d.ts} +0 -0
- /package/{r-bridge/data/print.d.ts → documentation/print-capabilities-markdown.d.ts} +0 -0
- /package/statistics/features/supported/expression-list/{expression-list.d.ts → statistics-expression-list.d.ts} +0 -0
|
@@ -16,7 +16,7 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
16
16
|
readonly humanReadableName: "normalize";
|
|
17
17
|
readonly description: "Normalize the AST to flowR's AST";
|
|
18
18
|
readonly processor: (results: {
|
|
19
|
-
parse?: string
|
|
19
|
+
parse?: string;
|
|
20
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
21
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
22
22
|
readonly printer: {
|
|
@@ -31,9 +31,9 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
31
31
|
} | {
|
|
32
32
|
readonly humanReadableName: "dataflow";
|
|
33
33
|
readonly processor: (results: {
|
|
34
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
34
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
35
35
|
}, input: {
|
|
36
|
-
request?: import("../../../r-bridge/retriever").RParseRequests
|
|
36
|
+
request?: import("../../../r-bridge/retriever").RParseRequests;
|
|
37
37
|
}) => import("../../../dataflow/info").DataflowInformation;
|
|
38
38
|
readonly requiredInput: {};
|
|
39
39
|
readonly name: "dataflow";
|
|
@@ -52,8 +52,8 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
52
52
|
readonly humanReadableName: "static slice";
|
|
53
53
|
readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
|
|
54
54
|
readonly processor: (results: {
|
|
55
|
-
dataflow?: import("../../../dataflow/info").DataflowInformation
|
|
56
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
55
|
+
dataflow?: import("../../../dataflow/info").DataflowInformation;
|
|
56
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
57
57
|
}, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
|
|
58
58
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
59
59
|
readonly printer: {
|
|
@@ -66,8 +66,8 @@ export declare const DEFAULT_SLICING_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
66
66
|
readonly humanReadableName: "static code reconstruction";
|
|
67
67
|
readonly description: "Reconstruct R code from the static slice";
|
|
68
68
|
readonly processor: (results: {
|
|
69
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
70
|
-
slice?: import("../../../slicing/static/slicer-types").SliceResult
|
|
69
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
70
|
+
slice?: import("../../../slicing/static/slicer-types").SliceResult;
|
|
71
71
|
}, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
|
|
72
72
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
73
73
|
readonly printer: {
|
|
@@ -94,7 +94,7 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
|
|
|
94
94
|
readonly humanReadableName: "normalize";
|
|
95
95
|
readonly description: "Normalize the AST to flowR's AST";
|
|
96
96
|
readonly processor: (results: {
|
|
97
|
-
parse?: string
|
|
97
|
+
parse?: string;
|
|
98
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
99
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
100
100
|
readonly printer: {
|
|
@@ -109,9 +109,9 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
|
|
|
109
109
|
} | {
|
|
110
110
|
readonly humanReadableName: "dataflow";
|
|
111
111
|
readonly processor: (results: {
|
|
112
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
112
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
113
113
|
}, input: {
|
|
114
|
-
request?: import("../../../r-bridge/retriever").RParseRequests
|
|
114
|
+
request?: import("../../../r-bridge/retriever").RParseRequests;
|
|
115
115
|
}) => import("../../../dataflow/info").DataflowInformation;
|
|
116
116
|
readonly requiredInput: {};
|
|
117
117
|
readonly name: "dataflow";
|
|
@@ -130,8 +130,8 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
|
|
|
130
130
|
readonly humanReadableName: "static slice";
|
|
131
131
|
readonly description: "Calculate the actual static slice from the dataflow graph and the given slicing criteria";
|
|
132
132
|
readonly processor: (results: {
|
|
133
|
-
dataflow?: import("../../../dataflow/info").DataflowInformation
|
|
134
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
133
|
+
dataflow?: import("../../../dataflow/info").DataflowInformation;
|
|
134
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
135
135
|
}, input: Partial<import("../all/static-slicing/00-slice").SliceRequiredInput>) => Readonly<import("../../../slicing/static/slicer-types").SliceResult>;
|
|
136
136
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
137
137
|
readonly printer: {
|
|
@@ -144,8 +144,8 @@ export declare const DEFAULT_SLICE_AND_RECONSTRUCT_PIPELINE: import("./pipeline"
|
|
|
144
144
|
readonly humanReadableName: "static code reconstruction";
|
|
145
145
|
readonly description: "Reconstruct R code from the static slice";
|
|
146
146
|
readonly processor: (results: {
|
|
147
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
148
|
-
slice?: import("../../../slicing/static/slicer-types").SliceResult
|
|
147
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
148
|
+
slice?: import("../../../slicing/static/slicer-types").SliceResult;
|
|
149
149
|
}, input: Partial<import("../all/static-slicing/10-reconstruct").ReconstructRequiredInput>) => import("../../../reconstruct/reconstruct").ReconstructionResult;
|
|
150
150
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerRequest;
|
|
151
151
|
readonly printer: {
|
|
@@ -172,7 +172,7 @@ export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
172
172
|
readonly humanReadableName: "normalize";
|
|
173
173
|
readonly description: "Normalize the AST to flowR's AST";
|
|
174
174
|
readonly processor: (results: {
|
|
175
|
-
parse?: string
|
|
175
|
+
parse?: string;
|
|
176
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
177
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
178
178
|
readonly printer: {
|
|
@@ -187,9 +187,9 @@ export declare const DEFAULT_DATAFLOW_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
187
187
|
} | {
|
|
188
188
|
readonly humanReadableName: "dataflow";
|
|
189
189
|
readonly processor: (results: {
|
|
190
|
-
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst
|
|
190
|
+
normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
191
191
|
}, input: {
|
|
192
|
-
request?: import("../../../r-bridge/retriever").RParseRequests
|
|
192
|
+
request?: import("../../../r-bridge/retriever").RParseRequests;
|
|
193
193
|
}) => import("../../../dataflow/info").DataflowInformation;
|
|
194
194
|
readonly requiredInput: {};
|
|
195
195
|
readonly name: "dataflow";
|
|
@@ -222,7 +222,7 @@ export declare const DEFAULT_NORMALIZE_PIPELINE: import("./pipeline").Pipeline<{
|
|
|
222
222
|
readonly humanReadableName: "normalize";
|
|
223
223
|
readonly description: "Normalize the AST to flowR's AST";
|
|
224
224
|
readonly processor: (results: {
|
|
225
|
-
parse?: string
|
|
225
|
+
parse?: string;
|
|
226
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
227
|
readonly executed: import("../pipeline-step").PipelineStepStage.OncePerFile;
|
|
228
228
|
readonly printer: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPipeline =
|
|
3
|
+
exports.createPipeline = createPipeline;
|
|
4
4
|
const create_pipeline_1 = require("./create-pipeline");
|
|
5
5
|
/**
|
|
6
6
|
* Creates a {@link Pipeline|pipeline} from a given collection of {@link IPipelineStep|steps}.
|
|
@@ -24,5 +24,4 @@ const create_pipeline_1 = require("./create-pipeline");
|
|
|
24
24
|
function createPipeline(...steps) {
|
|
25
25
|
return (0, create_pipeline_1.verifyAndBuildPipeline)(steps);
|
|
26
26
|
}
|
|
27
|
-
exports.createPipeline = createPipeline;
|
|
28
27
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.appendEnvironment =
|
|
3
|
+
exports.appendEnvironment = appendEnvironment;
|
|
4
4
|
const assert_1 = require("../../util/assert");
|
|
5
5
|
const environment_1 = require("./environment");
|
|
6
6
|
function uniqueMergeValues(old, value) {
|
|
@@ -43,5 +43,4 @@ function appendEnvironment(base, next) {
|
|
|
43
43
|
level: base.level,
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
exports.appendEnvironment = appendEnvironment;
|
|
47
46
|
//# sourceMappingURL=append.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { BuiltInMappingName, ConfigOfBuiltInMappingName } from './built-in';
|
|
2
|
+
import type { Identifier } from './identifier';
|
|
3
|
+
export interface BaseBuiltInDefinition {
|
|
4
|
+
/** The type of the built-in configuration */
|
|
5
|
+
readonly type: string;
|
|
6
|
+
/** The function name to define to the given configuration */
|
|
7
|
+
readonly names: readonly Identifier[];
|
|
8
|
+
/** Should we assume that the value is a primitive? */
|
|
9
|
+
readonly assumePrimitive?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Define a built-in constant (like `NULL` or `TRUE`) and the TS value it should have
|
|
13
|
+
*
|
|
14
|
+
* @template Value - The type of the constant value
|
|
15
|
+
*/
|
|
16
|
+
export interface BuiltInConstantDefinition<Value> extends BaseBuiltInDefinition {
|
|
17
|
+
readonly type: 'constant';
|
|
18
|
+
/** The constant value to define */
|
|
19
|
+
readonly value: Value;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Define a built-in function (like `print` or `c`) and the processor to use.
|
|
23
|
+
*
|
|
24
|
+
* @template BuiltInProcessor - The processor to use for this function
|
|
25
|
+
*/
|
|
26
|
+
export interface BuiltInFunctionDefinition<BuiltInProcessor extends BuiltInMappingName> extends BaseBuiltInDefinition {
|
|
27
|
+
readonly type: 'function';
|
|
28
|
+
readonly processor: BuiltInProcessor;
|
|
29
|
+
readonly config: ConfigOfBuiltInMappingName<BuiltInProcessor>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Define a built-in replacement (like `[` or `$`) and the processor to use.
|
|
33
|
+
* This is a convenience for manually combined function calls with `builtin:replacement`.
|
|
34
|
+
*/
|
|
35
|
+
export interface BuiltInReplacementDefinition extends BaseBuiltInDefinition {
|
|
36
|
+
readonly type: 'replacement';
|
|
37
|
+
readonly suffixes: readonly ('<<-' | '<-')[];
|
|
38
|
+
}
|
|
39
|
+
export type BuiltInDefinition = BuiltInConstantDefinition<any> | BuiltInFunctionDefinition<any> | BuiltInReplacementDefinition;
|
|
40
|
+
/**
|
|
41
|
+
* @see DefaultBuiltinConfig
|
|
42
|
+
*/
|
|
43
|
+
export type BuiltInDefinitions = readonly BuiltInDefinition[];
|
|
44
|
+
export declare function registerBuiltInFunctions<BuiltInProcessor extends BuiltInMappingName>({ names, processor, config, assumePrimitive }: BuiltInFunctionDefinition<BuiltInProcessor>): void;
|
|
45
|
+
export declare function registerReplacementFunctions({ names, suffixes, assumePrimitive }: BuiltInReplacementDefinition): void;
|
|
46
|
+
export declare function registerBuiltInDefinition(definition: BuiltInDefinition): void;
|
|
47
|
+
export declare function registerBuiltInDefinitions(definitions: BuiltInDefinitions): void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerBuiltInFunctions = registerBuiltInFunctions;
|
|
4
|
+
exports.registerReplacementFunctions = registerReplacementFunctions;
|
|
5
|
+
exports.registerBuiltInDefinition = registerBuiltInDefinition;
|
|
6
|
+
exports.registerBuiltInDefinitions = registerBuiltInDefinitions;
|
|
7
|
+
const built_in_1 = require("./built-in");
|
|
8
|
+
const identifier_1 = require("./identifier");
|
|
9
|
+
const assert_1 = require("../../util/assert");
|
|
10
|
+
function registerBuiltInConstant({ names, value, assumePrimitive }) {
|
|
11
|
+
for (const name of names) {
|
|
12
|
+
const d = [{
|
|
13
|
+
type: identifier_1.ReferenceType.BuiltInConstant,
|
|
14
|
+
definedAt: built_in_1.BuiltIn,
|
|
15
|
+
controlDependencies: undefined,
|
|
16
|
+
value,
|
|
17
|
+
name,
|
|
18
|
+
nodeId: built_in_1.BuiltIn
|
|
19
|
+
}];
|
|
20
|
+
built_in_1.BuiltInMemory.set(name, d);
|
|
21
|
+
if (assumePrimitive) {
|
|
22
|
+
built_in_1.EmptyBuiltInMemory.set(name, d);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function registerBuiltInFunctions({ names, processor, config, assumePrimitive }) {
|
|
27
|
+
const mappedProcessor = built_in_1.BuiltInProcessorMapper[processor];
|
|
28
|
+
(0, assert_1.guard)(mappedProcessor !== undefined, () => `Processor for ${processor} is undefined! Please pass a valid builtin name ${JSON.stringify(Object.keys(built_in_1.BuiltInProcessorMapper))}!`);
|
|
29
|
+
for (const name of names) {
|
|
30
|
+
(0, assert_1.guard)(processor !== undefined, `Processor for ${name} is undefined, maybe you have an import loop? You may run 'npm run detect-circular-deps' - although by far not all are bad`);
|
|
31
|
+
const d = [{
|
|
32
|
+
type: identifier_1.ReferenceType.BuiltInFunction,
|
|
33
|
+
definedAt: built_in_1.BuiltIn,
|
|
34
|
+
controlDependencies: undefined,
|
|
35
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument */
|
|
36
|
+
processor: (name, args, rootId, data) => mappedProcessor(name, args, rootId, data, config),
|
|
37
|
+
name,
|
|
38
|
+
nodeId: built_in_1.BuiltIn
|
|
39
|
+
}];
|
|
40
|
+
built_in_1.BuiltInMemory.set(name, d);
|
|
41
|
+
if (assumePrimitive) {
|
|
42
|
+
built_in_1.EmptyBuiltInMemory.set(name, d);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/* registers all combinations of replacements */
|
|
47
|
+
function registerReplacementFunctions({ names, suffixes, assumePrimitive }) {
|
|
48
|
+
const replacer = built_in_1.BuiltInProcessorMapper['builtin:replacement'];
|
|
49
|
+
(0, assert_1.guard)(replacer !== undefined, () => 'Processor for builtin:replacement is undefined!');
|
|
50
|
+
for (const assignment of names) {
|
|
51
|
+
for (const suffix of suffixes) {
|
|
52
|
+
const effectiveName = `${assignment}${suffix}`;
|
|
53
|
+
const d = [{
|
|
54
|
+
type: identifier_1.ReferenceType.BuiltInFunction,
|
|
55
|
+
definedAt: built_in_1.BuiltIn,
|
|
56
|
+
processor: (name, args, rootId, data) => replacer(name, args, rootId, data, { makeMaybe: true, assignmentOperator: suffix }),
|
|
57
|
+
name: effectiveName,
|
|
58
|
+
controlDependencies: undefined,
|
|
59
|
+
nodeId: built_in_1.BuiltIn
|
|
60
|
+
}];
|
|
61
|
+
built_in_1.BuiltInMemory.set(effectiveName, d);
|
|
62
|
+
if (assumePrimitive) {
|
|
63
|
+
built_in_1.EmptyBuiltInMemory.set(effectiveName, d);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function registerBuiltInDefinition(definition) {
|
|
69
|
+
switch (definition.type) {
|
|
70
|
+
case 'constant':
|
|
71
|
+
return registerBuiltInConstant(definition);
|
|
72
|
+
case 'function':
|
|
73
|
+
return registerBuiltInFunctions(definition);
|
|
74
|
+
case 'replacement':
|
|
75
|
+
return registerReplacementFunctions(definition);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function registerBuiltInDefinitions(definitions) {
|
|
79
|
+
for (const definition of definitions) {
|
|
80
|
+
registerBuiltInDefinition(definition);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=built-in-config.js.map
|
|
@@ -1,26 +1,69 @@
|
|
|
1
1
|
import type { DataflowProcessorInformation } from '../processor';
|
|
2
|
-
import type { DataflowInformation } from '../info';
|
|
2
|
+
import type { ExitPointType, DataflowInformation } from '../info';
|
|
3
|
+
import { processAccess } from '../internal/process/functions/call/built-in/built-in-access';
|
|
4
|
+
import { processIfThenElse } from '../internal/process/functions/call/built-in/built-in-if-then-else';
|
|
5
|
+
import { processAssignment } from '../internal/process/functions/call/built-in/built-in-assignment';
|
|
6
|
+
import { processSpecialBinOp } from '../internal/process/functions/call/built-in/built-in-special-bin-op';
|
|
7
|
+
import { processPipe } from '../internal/process/functions/call/built-in/built-in-pipe';
|
|
8
|
+
import { processForLoop } from '../internal/process/functions/call/built-in/built-in-for-loop';
|
|
9
|
+
import { processRepeatLoop } from '../internal/process/functions/call/built-in/built-in-repeat-loop';
|
|
10
|
+
import { processWhileLoop } from '../internal/process/functions/call/built-in/built-in-while-loop';
|
|
3
11
|
import type { Identifier, IdentifierDefinition, IdentifierReference } from './identifier';
|
|
12
|
+
import { ReferenceType } from './identifier';
|
|
13
|
+
import { processReplacementFunction } from '../internal/process/functions/call/built-in/built-in-replacement';
|
|
14
|
+
import { processQuote } from '../internal/process/functions/call/built-in/built-in-quote';
|
|
15
|
+
import { processFunctionDefinition } from '../internal/process/functions/call/built-in/built-in-function-definition';
|
|
16
|
+
import { processExpressionList } from '../internal/process/functions/call/built-in/built-in-expression-list';
|
|
17
|
+
import { processGet } from '../internal/process/functions/call/built-in/built-in-get';
|
|
4
18
|
import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
19
|
import type { RFunctionArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
6
20
|
import type { RSymbol } from '../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
|
|
7
21
|
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
22
|
+
import { processLibrary } from '../internal/process/functions/call/built-in/built-in-library';
|
|
23
|
+
import { processSourceCall } from '../internal/process/functions/call/built-in/built-in-source';
|
|
24
|
+
import type { ForceArguments } from '../internal/process/functions/call/common';
|
|
25
|
+
import { processApply } from '../internal/process/functions/call/built-in/built-in-apply';
|
|
8
26
|
export declare const BuiltIn = "built-in";
|
|
9
27
|
export type BuiltInIdentifierProcessor = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>) => DataflowInformation;
|
|
10
28
|
export type BuiltInIdentifierProcessorWithConfig<Config> = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: Config) => DataflowInformation;
|
|
11
29
|
export interface BuiltInIdentifierDefinition extends IdentifierReference {
|
|
12
|
-
|
|
30
|
+
type: ReferenceType.BuiltInFunction;
|
|
13
31
|
definedAt: typeof BuiltIn;
|
|
14
32
|
processor: BuiltInIdentifierProcessor;
|
|
15
33
|
}
|
|
16
34
|
export interface BuiltInIdentifierConstant<T = unknown> extends IdentifierReference {
|
|
17
|
-
|
|
35
|
+
type: ReferenceType.BuiltInConstant;
|
|
18
36
|
definedAt: typeof BuiltIn;
|
|
19
37
|
value: T;
|
|
20
38
|
}
|
|
39
|
+
declare function defaultBuiltInProcessor<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: {
|
|
40
|
+
returnsNthArgument?: number | 'last';
|
|
41
|
+
cfg?: ExitPointType;
|
|
42
|
+
readAllArguments?: boolean;
|
|
43
|
+
hasUnknownSideEffects?: boolean;
|
|
44
|
+
} & ForceArguments): DataflowInformation;
|
|
21
45
|
export declare function registerBuiltInFunctions<Config, Proc extends BuiltInIdentifierProcessorWithConfig<Config>>(both: boolean, names: readonly Identifier[], processor: Proc, config: Config): void;
|
|
22
|
-
export declare
|
|
23
|
-
|
|
24
|
-
|
|
46
|
+
export declare const BuiltInProcessorMapper: {
|
|
47
|
+
readonly 'builtin:default': typeof defaultBuiltInProcessor;
|
|
48
|
+
readonly 'builtin:apply': typeof processApply;
|
|
49
|
+
readonly 'builtin:expression-list': typeof processExpressionList;
|
|
50
|
+
readonly 'builtin:source': typeof processSourceCall;
|
|
51
|
+
readonly 'builtin:access': typeof processAccess;
|
|
52
|
+
readonly 'builtin:if-then-else': typeof processIfThenElse;
|
|
53
|
+
readonly 'builtin:get': typeof processGet;
|
|
54
|
+
readonly 'builtin:library': typeof processLibrary;
|
|
55
|
+
readonly 'builtin:assignment': typeof processAssignment;
|
|
56
|
+
readonly 'builtin:special-bin-op': typeof processSpecialBinOp;
|
|
57
|
+
readonly 'builtin:pipe': typeof processPipe;
|
|
58
|
+
readonly 'builtin:function-definition': typeof processFunctionDefinition;
|
|
59
|
+
readonly 'builtin:quote': typeof processQuote;
|
|
60
|
+
readonly 'builtin:for-loop': typeof processForLoop;
|
|
61
|
+
readonly 'builtin:repeat-loop': typeof processRepeatLoop;
|
|
62
|
+
readonly 'builtin:while-loop': typeof processWhileLoop;
|
|
63
|
+
readonly 'builtin:replacement': typeof processReplacementFunction;
|
|
64
|
+
};
|
|
65
|
+
export type BuiltInMappingName = keyof typeof BuiltInProcessorMapper;
|
|
66
|
+
export type ConfigOfBuiltInMappingName<N extends BuiltInMappingName> = Parameters<typeof BuiltInProcessorMapper[N]>[4];
|
|
25
67
|
export declare const BuiltInMemory: Map<Identifier, IdentifierDefinition[]>;
|
|
26
68
|
export declare const EmptyBuiltInMemory: Map<Identifier, IdentifierDefinition[]>;
|
|
69
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EmptyBuiltInMemory = exports.BuiltInMemory = exports.
|
|
3
|
+
exports.EmptyBuiltInMemory = exports.BuiltInMemory = exports.BuiltInProcessorMapper = exports.BuiltIn = void 0;
|
|
4
|
+
exports.registerBuiltInFunctions = registerBuiltInFunctions;
|
|
4
5
|
const known_call_handling_1 = require("../internal/process/functions/call/known-call-handling");
|
|
5
6
|
const built_in_access_1 = require("../internal/process/functions/call/built-in/built-in-access");
|
|
6
7
|
const built_in_if_then_else_1 = require("../internal/process/functions/call/built-in/built-in-if-then-else");
|
|
@@ -10,28 +11,32 @@ const built_in_pipe_1 = require("../internal/process/functions/call/built-in/bui
|
|
|
10
11
|
const built_in_for_loop_1 = require("../internal/process/functions/call/built-in/built-in-for-loop");
|
|
11
12
|
const built_in_repeat_loop_1 = require("../internal/process/functions/call/built-in/built-in-repeat-loop");
|
|
12
13
|
const built_in_while_loop_1 = require("../internal/process/functions/call/built-in/built-in-while-loop");
|
|
14
|
+
const identifier_1 = require("./identifier");
|
|
13
15
|
const assert_1 = require("../../util/assert");
|
|
14
16
|
const built_in_replacement_1 = require("../internal/process/functions/call/built-in/built-in-replacement");
|
|
15
17
|
const built_in_quote_1 = require("../internal/process/functions/call/built-in/built-in-quote");
|
|
16
18
|
const built_in_function_definition_1 = require("../internal/process/functions/call/built-in/built-in-function-definition");
|
|
17
19
|
const built_in_expression_list_1 = require("../internal/process/functions/call/built-in/built-in-expression-list");
|
|
18
20
|
const built_in_get_1 = require("../internal/process/functions/call/built-in/built-in-get");
|
|
21
|
+
const edge_1 = require("../graph/edge");
|
|
19
22
|
const built_in_library_1 = require("../internal/process/functions/call/built-in/built-in-library");
|
|
20
23
|
const built_in_source_1 = require("../internal/process/functions/call/built-in/built-in-source");
|
|
21
24
|
const built_in_apply_1 = require("../internal/process/functions/call/built-in/built-in-apply");
|
|
25
|
+
const built_in_config_1 = require("./built-in-config");
|
|
26
|
+
const default_builtin_config_1 = require("./default-builtin-config");
|
|
22
27
|
exports.BuiltIn = 'built-in';
|
|
23
28
|
function defaultBuiltInProcessor(name, args, rootId, data, config) {
|
|
24
29
|
const { information: res, processedArguments } = (0, known_call_handling_1.processKnownFunctionCall)({ name, args, rootId, data, forceArgs: config.forceArgs });
|
|
25
30
|
if (config.returnsNthArgument !== undefined) {
|
|
26
31
|
const arg = config.returnsNthArgument === 'last' ? processedArguments[args.length - 1] : processedArguments[config.returnsNthArgument];
|
|
27
32
|
if (arg !== undefined) {
|
|
28
|
-
res.graph.addEdge(rootId, arg.entryPoint,
|
|
33
|
+
res.graph.addEdge(rootId, arg.entryPoint, edge_1.EdgeType.Returns);
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
36
|
if (config.readAllArguments) {
|
|
32
37
|
for (const arg of processedArguments) {
|
|
33
38
|
if (arg) {
|
|
34
|
-
res.graph.addEdge(rootId, arg.entryPoint,
|
|
39
|
+
res.graph.addEdge(rootId, arg.entryPoint, edge_1.EdgeType.Reads);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
}
|
|
@@ -46,9 +51,8 @@ function defaultBuiltInProcessor(name, args, rootId, data, config) {
|
|
|
46
51
|
function registerBuiltInFunctions(both, names, processor, config) {
|
|
47
52
|
for (const name of names) {
|
|
48
53
|
(0, assert_1.guard)(processor !== undefined, `Processor for ${name} is undefined, maybe you have an import loop? You may run 'npm run detect-circular-deps' - although by far not all are bad`);
|
|
49
|
-
(0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
|
|
50
54
|
const d = [{
|
|
51
|
-
|
|
55
|
+
type: identifier_1.ReferenceType.BuiltInFunction,
|
|
52
56
|
definedAt: exports.BuiltIn,
|
|
53
57
|
controlDependencies: undefined,
|
|
54
58
|
processor: (name, args, rootId, data) => processor(name, args, rootId, data, config),
|
|
@@ -61,98 +65,26 @@ function registerBuiltInFunctions(both, names, processor, config) {
|
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
|
-
exports.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
exports.registerReplacementFunctions = registerReplacementFunctions;
|
|
85
|
-
function registerSimpleFunctions(...names) {
|
|
86
|
-
registerBuiltInFunctions(false, names, defaultBuiltInProcessor, { readAllArguments: true });
|
|
87
|
-
}
|
|
88
|
-
function registerBuiltInConstant(both, name, value) {
|
|
89
|
-
(0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
|
|
90
|
-
const d = [{
|
|
91
|
-
kind: 'built-in-value',
|
|
92
|
-
definedAt: exports.BuiltIn,
|
|
93
|
-
controlDependencies: undefined,
|
|
94
|
-
value,
|
|
95
|
-
name,
|
|
96
|
-
nodeId: exports.BuiltIn
|
|
97
|
-
}];
|
|
98
|
-
exports.BuiltInMemory.set(name, d);
|
|
99
|
-
if (both) {
|
|
100
|
-
exports.EmptyBuiltInMemory.set(name, d);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
68
|
+
exports.BuiltInProcessorMapper = {
|
|
69
|
+
'builtin:default': defaultBuiltInProcessor,
|
|
70
|
+
'builtin:apply': built_in_apply_1.processApply,
|
|
71
|
+
'builtin:expression-list': built_in_expression_list_1.processExpressionList,
|
|
72
|
+
'builtin:source': built_in_source_1.processSourceCall,
|
|
73
|
+
'builtin:access': built_in_access_1.processAccess,
|
|
74
|
+
'builtin:if-then-else': built_in_if_then_else_1.processIfThenElse,
|
|
75
|
+
'builtin:get': built_in_get_1.processGet,
|
|
76
|
+
'builtin:library': built_in_library_1.processLibrary,
|
|
77
|
+
'builtin:assignment': built_in_assignment_1.processAssignment,
|
|
78
|
+
'builtin:special-bin-op': built_in_special_bin_op_1.processSpecialBinOp,
|
|
79
|
+
'builtin:pipe': built_in_pipe_1.processPipe,
|
|
80
|
+
'builtin:function-definition': built_in_function_definition_1.processFunctionDefinition,
|
|
81
|
+
'builtin:quote': built_in_quote_1.processQuote,
|
|
82
|
+
'builtin:for-loop': built_in_for_loop_1.processForLoop,
|
|
83
|
+
'builtin:repeat-loop': built_in_repeat_loop_1.processRepeatLoop,
|
|
84
|
+
'builtin:while-loop': built_in_while_loop_1.processWhileLoop,
|
|
85
|
+
'builtin:replacement': built_in_replacement_1.processReplacementFunction,
|
|
86
|
+
};
|
|
103
87
|
exports.BuiltInMemory = new Map();
|
|
104
88
|
exports.EmptyBuiltInMemory = new Map();
|
|
105
|
-
|
|
106
|
-
registerBuiltInConstant(true, 'NA', null);
|
|
107
|
-
registerBuiltInConstant(true, 'TRUE', true);
|
|
108
|
-
registerBuiltInConstant(true, 'T', true);
|
|
109
|
-
registerBuiltInConstant(true, 'FALSE', false);
|
|
110
|
-
registerBuiltInConstant(true, 'F', false);
|
|
111
|
-
registerSimpleFunctions('~', '+', '-', '*', '/', '^', '!', '?', '**', '==', '!=', '>', '<', '>=', '<=', '%%', '%/%', '%*%', '%in%', ':', 'list', 'c', 'rep', 'seq', 'seq_len', 'seq_along', 'seq.int', 'gsub', 'which', 'class', 'dimnames', 'min', 'max', 'intersect', 'subset', 'match', 'sqrt', 'abs', 'round', 'floor', 'ceiling', 'signif', 'trunc', 'log', 'log10', 'log2', 'sum', 'mean', 'unique', 'paste', 'paste0', 'read.csv', 'stop', 'is.null', 'plot', 'numeric', 'as.character', 'as.integer', 'as.logical', 'as.numeric', 'as.matrix', 'do.call', 'rbind', 'nrow', 'ncol', 'tryCatch', 'expression', 'factor', 'missing', 'as.data.frame', 'data.frame', 'na.omit', 'rownames', 'names', 'order', 'length', 'any', 'dim', 'matrix', 'cbind', 'nchar', 't');
|
|
112
|
-
registerBuiltInFunctions(false, ['mapply', 'Mapply'], built_in_apply_1.processApply, { indexOfFunction: 0, nameOfFunctionArgument: 'FUN' });
|
|
113
|
-
registerBuiltInFunctions(false, ['lapply', 'sapply', 'vapply'], built_in_apply_1.processApply, { indexOfFunction: 1, nameOfFunctionArgument: 'FUN' });
|
|
114
|
-
/* functool wrappers */
|
|
115
|
-
registerBuiltInFunctions(false, ['Lapply', 'Sapply', 'Vapply'], built_in_apply_1.processApply, { indexOfFunction: 1, nameOfFunctionArgument: 'FUN' });
|
|
116
|
-
registerBuiltInFunctions(false, ['apply', 'tapply', 'Tapply'], built_in_apply_1.processApply, { indexOfFunction: 2, nameOfFunctionArgument: 'FUN' });
|
|
117
|
-
registerBuiltInFunctions(false, ['print'], defaultBuiltInProcessor, { returnsNthArgument: 0, forceArgs: 'all' });
|
|
118
|
-
registerBuiltInFunctions(true, ['('], defaultBuiltInProcessor, { returnsNthArgument: 0 });
|
|
119
|
-
registerBuiltInFunctions(false, ['load', 'load_all', 'setwd', 'set.seed'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: [true] });
|
|
120
|
-
registerBuiltInFunctions(false, ['eval', 'body', 'formals', 'environment'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: [true] });
|
|
121
|
-
registerBuiltInFunctions(false, ['cat'], defaultBuiltInProcessor, { forceArgs: 'all' }); /* returns null */
|
|
122
|
-
registerBuiltInFunctions(false, ['switch'], defaultBuiltInProcessor, {}); /* returns null */
|
|
123
|
-
registerBuiltInFunctions(true, ['return'], defaultBuiltInProcessor, { returnsNthArgument: 0, cfg: 1 /* ExitPointType.Return */ });
|
|
124
|
-
registerBuiltInFunctions(true, ['break'], defaultBuiltInProcessor, { cfg: 2 /* ExitPointType.Break */ });
|
|
125
|
-
registerBuiltInFunctions(true, ['next'], defaultBuiltInProcessor, { cfg: 3 /* ExitPointType.Next */ });
|
|
126
|
-
registerBuiltInFunctions(true, ['{'], built_in_expression_list_1.processExpressionList, {});
|
|
127
|
-
registerBuiltInFunctions(false, ['source'], built_in_source_1.processSourceCall, { includeFunctionCall: true, forceFollow: false });
|
|
128
|
-
registerBuiltInFunctions(true, ['[', '[['], built_in_access_1.processAccess, { treatIndicesAsString: false });
|
|
129
|
-
registerBuiltInFunctions(true, ['$', '@'], built_in_access_1.processAccess, { treatIndicesAsString: true });
|
|
130
|
-
registerBuiltInFunctions(true, ['if', 'ifelse'], built_in_if_then_else_1.processIfThenElse, {});
|
|
131
|
-
registerBuiltInFunctions(false, ['get'], built_in_get_1.processGet, {});
|
|
132
|
-
registerBuiltInFunctions(false, ['library', 'require'], built_in_library_1.processLibrary, {});
|
|
133
|
-
registerBuiltInFunctions(true, ['<-', '='], built_in_assignment_1.processAssignment, { canBeReplacement: true });
|
|
134
|
-
registerBuiltInFunctions(true, [':=', 'assign'], built_in_assignment_1.processAssignment, {});
|
|
135
|
-
registerBuiltInFunctions(true, ['delayedAssign'], built_in_assignment_1.processAssignment, { quoteSource: true });
|
|
136
|
-
registerBuiltInFunctions(true, ['<<-'], built_in_assignment_1.processAssignment, { superAssignment: true, canBeReplacement: true });
|
|
137
|
-
registerBuiltInFunctions(true, ['->'], built_in_assignment_1.processAssignment, { swapSourceAndTarget: true, canBeReplacement: true });
|
|
138
|
-
registerBuiltInFunctions(true, ['->>'], built_in_assignment_1.processAssignment, { superAssignment: true, swapSourceAndTarget: true, canBeReplacement: true });
|
|
139
|
-
registerBuiltInFunctions(true, ['&&', '&'], built_in_special_bin_op_1.processSpecialBinOp, { lazy: true, evalRhsWhen: true });
|
|
140
|
-
registerBuiltInFunctions(true, ['||', '|'], built_in_special_bin_op_1.processSpecialBinOp, { lazy: true, evalRhsWhen: false });
|
|
141
|
-
registerBuiltInFunctions(true, ['|>', '%>%'], built_in_pipe_1.processPipe, {});
|
|
142
|
-
registerBuiltInFunctions(true, ['function', '\\'], built_in_function_definition_1.processFunctionDefinition, {});
|
|
143
|
-
registerBuiltInFunctions(true, ['quote', 'substitute', 'bquote'], built_in_quote_1.processQuote, { quoteArgumentsWithIndex: 0 });
|
|
144
|
-
registerBuiltInFunctions(true, ['for'], built_in_for_loop_1.processForLoop, {});
|
|
145
|
-
registerBuiltInFunctions(true, ['repeat'], built_in_repeat_loop_1.processRepeatLoop, {});
|
|
146
|
-
registerBuiltInFunctions(true, ['while'], built_in_while_loop_1.processWhileLoop, {});
|
|
147
|
-
registerBuiltInFunctions(false, ['options'], defaultBuiltInProcessor, { hasUnknownSideEffects: true, forceArgs: 'all' });
|
|
148
|
-
registerBuiltInFunctions(false, ['on.exit', 'sys.on.exit', 'par'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
|
|
149
|
-
registerBuiltInFunctions(false, ['setnames', 'setNames', 'setkey', 'setkeyv', 'setindex', 'setindexv', 'setattr', 'sink'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
|
|
150
|
-
/* library and require is handled above */
|
|
151
|
-
registerBuiltInFunctions(false, ['requireNamespace', 'loadNamespace', 'attachNamespace', 'asNamespace'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
|
|
152
|
-
/* downloader and installer functions (R, devtools, BiocManager) */
|
|
153
|
-
registerBuiltInFunctions(false, ['library.dynam', 'install.packages', 'install', 'install_github', 'install_gitlab', 'install_bitbucket', 'install_url', 'install_git', 'install_svn', 'install_local', 'install_version', 'update_packages'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
|
|
154
|
-
/* weird env attachments */
|
|
155
|
-
registerBuiltInFunctions(false, ['attach', 'detach', 'unname', 'rm', 'remove'], defaultBuiltInProcessor, { hasUnknownSideEffects: true });
|
|
156
|
-
/* they are all mapped to `<-` but we separate super assignments */
|
|
157
|
-
registerReplacementFunctions({ makeMaybe: true }, ['<-', '<<-'], '[', '[[', '$', '@', 'names', 'dimnames', 'attributes', 'attr', 'class', 'levels', 'rownames', 'colnames', 'body', 'environment', 'formals');
|
|
89
|
+
(0, built_in_config_1.registerBuiltInDefinitions)(default_builtin_config_1.DefaultBuiltinConfig);
|
|
158
90
|
//# sourceMappingURL=built-in.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cloneEnvironmentInformation =
|
|
3
|
+
exports.cloneEnvironmentInformation = cloneEnvironmentInformation;
|
|
4
4
|
const environment_1 = require("./environment");
|
|
5
5
|
function cloneEnvironment(environment, recurseParents) {
|
|
6
6
|
if (environment === undefined) {
|
|
@@ -9,6 +9,7 @@ function cloneEnvironment(environment, recurseParents) {
|
|
|
9
9
|
else if (environment.id === environment_1.BuiltInEnvironment.id) {
|
|
10
10
|
return environment_1.BuiltInEnvironment;
|
|
11
11
|
}
|
|
12
|
+
/* make sure the clone has the same id */
|
|
12
13
|
const clone = new environment_1.Environment(recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
|
|
13
14
|
clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
|
|
14
15
|
return clone;
|
|
@@ -19,5 +20,4 @@ function cloneEnvironmentInformation(environment, recurseParents = true) {
|
|
|
19
20
|
level: environment.level
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
|
-
exports.cloneEnvironmentInformation = cloneEnvironmentInformation;
|
|
23
23
|
//# sourceMappingURL=clone.js.map
|