@eagleoutice/flowr 2.6.2 → 2.7.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/README.md +36 -34
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.js +6 -6
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +4 -7
- package/abstract-interpretation/data-frame/dataframe-domain.js +5 -11
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +3 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +3 -2
- package/abstract-interpretation/data-frame/mappers/arguments.js +2 -2
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +3 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +3 -2
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +7 -7
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +28 -24
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +3 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +3 -2
- package/abstract-interpretation/data-frame/semantics.js +54 -41
- package/abstract-interpretation/data-frame/shape-inference.d.ts +3 -3
- package/abstract-interpretation/data-frame/shape-inference.js +3 -3
- package/abstract-interpretation/domains/abstract-domain.d.ts +1 -0
- package/abstract-interpretation/domains/abstract-domain.js +3 -2
- package/abstract-interpretation/domains/bounded-set-domain.js +1 -1
- package/abstract-interpretation/domains/interval-domain.d.ts +2 -2
- package/abstract-interpretation/domains/interval-domain.js +3 -6
- package/abstract-interpretation/domains/lattice.d.ts +2 -0
- package/abstract-interpretation/domains/lattice.js +3 -1
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +1 -1
- package/abstract-interpretation/domains/positive-interval-domain.js +1 -1
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +2 -2
- package/abstract-interpretation/domains/satisfiable-domain.js +2 -2
- package/abstract-interpretation/domains/set-range-domain.d.ts +98 -0
- package/abstract-interpretation/domains/set-range-domain.js +400 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +2 -2
- package/abstract-interpretation/domains/singleton-domain.js +2 -2
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -1
- package/benchmark/slicer.d.ts +3 -1
- package/benchmark/slicer.js +50 -27
- package/benchmark/stats/print.js +8 -5
- package/benchmark/stats/stats.d.ts +3 -2
- package/benchmark/summarizer/data.d.ts +11 -8
- package/benchmark/summarizer/first-phase/process.js +12 -9
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -1
- package/benchmark/summarizer/second-phase/graph.js +3 -1
- package/benchmark/summarizer/second-phase/process.js +24 -18
- package/cli/export-quads-app.js +1 -1
- package/cli/repl/commands/repl-dataflow.js +2 -1
- package/cli/repl/commands/repl-parse.js +16 -4
- package/cli/repl/commands/repl-query.js +1 -1
- package/cli/repl/core.js +16 -13
- package/cli/repl/server/connection.js +2 -1
- package/cli/script-core/statistics-helper-core.js +2 -1
- package/cli/slicer-app.js +3 -4
- package/cli/wiki.d.ts +4 -0
- package/cli/wiki.js +165 -0
- package/config.d.ts +4 -0
- package/config.js +6 -0
- package/control-flow/cfg-dead-code.js +14 -3
- package/control-flow/cfg-simplification.d.ts +5 -2
- package/control-flow/cfg-simplification.js +3 -0
- package/control-flow/extract-cfg.d.ts +9 -3
- package/control-flow/extract-cfg.js +44 -4
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -2
- package/control-flow/simple-visitor.js +2 -2
- package/control-flow/useless-loop.d.ts +3 -3
- package/control-flow/useless-loop.js +16 -5
- package/core/pipeline-executor.d.ts +3 -6
- package/core/pipeline-executor.js +4 -7
- package/core/print/normalize-printer.d.ts +1 -1
- package/core/print/normalize-printer.js +2 -2
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/00-parse.js +1 -1
- package/core/steps/all/core/10-normalize.d.ts +3 -9
- package/core/steps/all/core/10-normalize.js +1 -16
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +2 -3
- package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -4
- package/core/steps/all/core/20-dataflow.js +2 -2
- package/core/steps/all/static-slicing/00-slice.d.ts +4 -2
- package/core/steps/all/static-slicing/00-slice.js +3 -2
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
- package/core/steps/pipeline/default-pipelines.d.ts +94 -95
- package/core/steps/pipeline/default-pipelines.js +8 -8
- package/dataflow/cluster.js +2 -2
- package/dataflow/environments/append.d.ts +5 -0
- package/dataflow/environments/append.js +6 -20
- package/dataflow/environments/built-in.d.ts +2 -1
- package/dataflow/environments/clone.d.ts +1 -2
- package/dataflow/environments/clone.js +3 -17
- package/dataflow/environments/define.d.ts +7 -3
- package/dataflow/environments/define.js +9 -56
- package/dataflow/environments/diff.js +3 -3
- package/dataflow/environments/environment.d.ts +48 -28
- package/dataflow/environments/environment.js +187 -62
- package/dataflow/environments/overwrite.d.ts +1 -5
- package/dataflow/environments/overwrite.js +2 -61
- package/dataflow/environments/reference-to-maybe.d.ts +13 -0
- package/dataflow/environments/reference-to-maybe.js +54 -0
- package/dataflow/environments/resolve-by-name.d.ts +6 -1
- package/dataflow/environments/resolve-by-name.js +56 -4
- package/dataflow/environments/scoping.d.ts +8 -4
- package/dataflow/environments/scoping.js +13 -9
- package/dataflow/eval/resolve/alias-tracking.d.ts +10 -4
- package/dataflow/eval/resolve/alias-tracking.js +15 -13
- package/dataflow/eval/resolve/resolve-argument.d.ts +2 -1
- package/dataflow/eval/resolve/resolve-argument.js +10 -10
- package/dataflow/eval/resolve/resolve.d.ts +13 -11
- package/dataflow/eval/resolve/resolve.js +16 -15
- package/dataflow/eval/values/string/string-constants.d.ts +9 -3
- package/dataflow/eval/values/string/string-constants.js +9 -3
- package/dataflow/extractor.d.ts +2 -3
- package/dataflow/extractor.js +25 -28
- package/dataflow/fn/higher-order-function.d.ts +2 -1
- package/dataflow/fn/higher-order-function.js +4 -4
- package/dataflow/graph/dataflowgraph-builder.d.ts +9 -5
- package/dataflow/graph/dataflowgraph-builder.js +21 -11
- package/dataflow/graph/diff-dataflow-graph.js +2 -2
- package/dataflow/graph/graph.d.ts +13 -11
- package/dataflow/graph/graph.js +40 -24
- package/dataflow/graph/invert-dfg.d.ts +3 -2
- package/dataflow/graph/invert-dfg.js +3 -3
- package/dataflow/graph/resolve-graph.d.ts +2 -1
- package/dataflow/graph/resolve-graph.js +2 -2
- package/dataflow/graph/unknown-replacement.d.ts +4 -2
- package/dataflow/graph/unknown-replacement.js +4 -2
- package/dataflow/graph/vertex.d.ts +3 -3
- package/dataflow/graph/vertex.js +3 -3
- package/dataflow/info.d.ts +8 -1
- package/dataflow/info.js +21 -0
- package/dataflow/internal/linker.js +10 -11
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +2 -2
- package/dataflow/internal/process/functions/call/argument/make-argument.js +2 -3
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +7 -1
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +12 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +7 -7
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +6 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +14 -14
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +10 -8
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +4 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +2 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +10 -14
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +8 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-list.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +4 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +6 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +7 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +5 -5
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +6 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +15 -10
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +78 -75
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.js +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +5 -5
- package/dataflow/internal/process/functions/call/common.d.ts +1 -1
- package/dataflow/internal/process/functions/call/common.js +6 -7
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -1
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -1
- package/dataflow/internal/process/functions/call/known-call-handling.js +4 -4
- package/dataflow/internal/process/functions/call/named-call-handling.js +4 -4
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +1 -1
- package/dataflow/internal/process/functions/process-argument.js +1 -1
- package/dataflow/internal/process/functions/process-parameter.js +4 -4
- package/dataflow/internal/process/process-symbol.js +1 -1
- package/dataflow/internal/process/process-value.d.ts +1 -1
- package/dataflow/internal/process/process-value.js +7 -7
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +1 -1
- package/dataflow/origin/dfg-get-symbol-refs.js +1 -1
- package/dataflow/processor.d.ts +7 -16
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +0 -2
- package/documentation/data/faq/faqs.js +27 -18
- package/documentation/data/faq/recommended-configs.d.ts +36 -0
- package/documentation/data/faq/recommended-configs.js +40 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +1 -0
- package/documentation/data/faq/wiki-faq-store.js +10 -2
- package/documentation/data/server/doc-data-server-messages.js +1 -1
- package/documentation/doc-capabilities.d.ts +9 -0
- package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
- package/documentation/doc-readme.d.ts +9 -0
- package/documentation/{print-readme.js → doc-readme.js} +31 -35
- package/documentation/doc-util/doc-benchmarks.d.ts +6 -4
- package/documentation/doc-util/doc-benchmarks.js +6 -4
- package/documentation/doc-util/doc-cfg.js +5 -8
- package/documentation/doc-util/doc-dfg.d.ts +7 -7
- package/documentation/doc-util/doc-dfg.js +15 -14
- package/documentation/doc-util/doc-escape.d.ts +6 -0
- package/documentation/doc-util/doc-escape.js +11 -0
- package/documentation/doc-util/doc-general.d.ts +22 -2
- package/documentation/doc-util/doc-general.js +22 -2
- package/documentation/doc-util/doc-normalized-ast.d.ts +10 -5
- package/documentation/doc-util/doc-normalized-ast.js +14 -10
- package/documentation/doc-util/doc-query.d.ts +12 -4
- package/documentation/doc-util/doc-query.js +18 -11
- package/documentation/doc-util/doc-search.d.ts +0 -30
- package/documentation/doc-util/doc-search.js +2 -73
- package/documentation/doc-util/doc-server-message.d.ts +5 -5
- package/documentation/doc-util/doc-server-message.js +4 -4
- package/documentation/doc-util/doc-types.d.ts +69 -32
- package/documentation/doc-util/doc-types.js +109 -62
- package/documentation/index.d.ts +9 -9
- package/documentation/index.js +9 -9
- package/documentation/issue-linting-rule.d.ts +9 -0
- package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
- package/documentation/wiki-analyzer.d.ts +9 -0
- package/documentation/wiki-analyzer.js +425 -0
- package/documentation/wiki-cfg.d.ts +9 -0
- package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
- package/documentation/wiki-core.d.ts +14 -0
- package/documentation/{print-core-wiki.js → wiki-core.js} +164 -175
- package/documentation/wiki-dataflow-graph.d.ts +9 -0
- package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +146 -177
- package/documentation/wiki-engine.d.ts +9 -0
- package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
- package/documentation/wiki-faq.d.ts +8 -0
- package/documentation/wiki-faq.js +21 -0
- package/documentation/wiki-interface.d.ts +9 -0
- package/documentation/{print-interface-wiki.js → wiki-interface.js} +59 -56
- package/documentation/wiki-linter.d.ts +9 -0
- package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
- package/documentation/wiki-linting-and-testing.d.ts +9 -0
- package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
- package/documentation/wiki-mk/doc-context.d.ts +186 -0
- package/documentation/wiki-mk/doc-context.js +84 -0
- package/documentation/wiki-mk/doc-maker.d.ts +95 -0
- package/documentation/wiki-mk/doc-maker.js +134 -0
- package/documentation/wiki-normalized-ast.d.ts +9 -0
- package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
- package/documentation/wiki-onboarding.d.ts +8 -0
- package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
- package/documentation/wiki-query.d.ts +9 -0
- package/documentation/{print-query-wiki.js → wiki-query.js} +62 -47
- package/documentation/wiki-search.d.ts +9 -0
- package/documentation/wiki-search.js +61 -0
- package/linter/linter-executor.js +3 -2
- package/linter/linter-format.d.ts +2 -2
- package/linter/linter-rules.d.ts +15 -19
- package/linter/rules/absolute-path.d.ts +1 -2
- package/linter/rules/absolute-path.js +5 -5
- package/linter/rules/dataframe-access-validation.d.ts +2 -2
- package/linter/rules/dataframe-access-validation.js +13 -9
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -5
- package/linter/rules/file-path-validity.d.ts +1 -1
- package/linter/rules/file-path-validity.js +4 -4
- package/linter/rules/function-finder-util.d.ts +3 -7
- package/linter/rules/function-finder-util.js +1 -1
- package/linter/rules/naming-convention.d.ts +2 -2
- package/linter/rules/naming-convention.js +1 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +4 -3
- package/linter/rules/seeded-randomness.js +38 -18
- package/linter/rules/unused-definition.d.ts +1 -1
- package/linter/rules/useless-loop.d.ts +2 -2
- package/linter/rules/useless-loop.js +2 -2
- package/package.json +5 -17
- package/project/cache/flowr-analyzer-cache.d.ts +7 -10
- package/project/cache/flowr-analyzer-cache.js +17 -38
- package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
- package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
- package/project/context/flowr-analyzer-context.d.ts +37 -5
- package/project/context/flowr-analyzer-context.js +51 -4
- package/project/context/flowr-analyzer-environment-context.d.ts +47 -0
- package/project/context/flowr-analyzer-environment-context.js +50 -0
- package/project/context/flowr-analyzer-files-context.d.ts +63 -13
- package/project/context/flowr-analyzer-files-context.js +110 -39
- package/project/context/flowr-file.d.ts +32 -10
- package/project/context/flowr-file.js +30 -9
- package/project/flowr-analyzer-builder.d.ts +22 -28
- package/project/flowr-analyzer-builder.js +32 -70
- package/project/flowr-analyzer.d.ts +55 -14
- package/project/flowr-analyzer.js +53 -8
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +7 -1
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
- package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -3
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
- package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
- package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
- package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
- package/project/plugins/flowr-analyzer-plugin.js +2 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
- package/project/plugins/plugin-registry.d.ts +34 -0
- package/project/plugins/plugin-registry.js +62 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -1
- package/queries/catalog/call-context-query/call-context-query-executor.js +5 -6
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +5 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +25 -18
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +1 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.js +3 -2
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +1 -1
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +5 -5
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +1 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +2 -2
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +6 -6
- package/queries/catalog/df-shape-query/df-shape-query-format.js +8 -7
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +2 -1
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +2 -1
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +4 -4
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +1 -1
- package/queries/catalog/linter-query/linter-query-format.d.ts +1 -1
- package/queries/catalog/linter-query/linter-query-format.js +13 -2
- package/queries/catalog/location-map-query/location-map-query-executor.js +2 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +1 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +1 -1
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-format.d.ts +1 -1
- package/queries/catalog/project-query/project-query-executor.js +3 -1
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +2 -2
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +3 -3
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +1 -1
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +2 -2
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +13 -1
- package/queries/query.d.ts +26 -18
- package/queries/query.js +21 -1
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +4 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.d.ts +29 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -0
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +5 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +24 -11
- package/r-bridge/lang-4.x/ast/model/type.d.ts +2 -0
- package/r-bridge/lang-4.x/ast/model/type.js +2 -0
- package/r-bridge/lang-4.x/ast/parser/json/format.js +1 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +9 -8
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -10
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +3 -3
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +5 -4
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +3 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +14 -5
- package/r-bridge/parser.d.ts +15 -5
- package/r-bridge/parser.js +27 -13
- package/r-bridge/retriever.d.ts +9 -15
- package/r-bridge/retriever.js +14 -5
- package/r-bridge/shell.d.ts +1 -1
- package/r-bridge/shell.js +1 -1
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.js +1 -1
- package/reconstruct/reconstruct.d.ts +17 -9
- package/reconstruct/reconstruct.js +19 -8
- package/search/flowr-search.d.ts +12 -0
- package/search/search-executor/search-enrichers.d.ts +9 -2
- package/search/search-executor/search-enrichers.js +1 -3
- package/search/search-executor/search-generators.d.ts +1 -1
- package/search/search-executor/search-generators.js +9 -4
- package/slicing/criterion/collect-all.d.ts +3 -2
- package/slicing/criterion/collect-all.js +1 -1
- package/slicing/criterion/parse.js +4 -4
- package/slicing/static/slice-call.d.ts +3 -2
- package/slicing/static/slice-call.js +4 -4
- package/slicing/static/static-slicer.d.ts +3 -1
- package/slicing/static/static-slicer.js +6 -7
- package/statistics/features/supported/assignments/assignments.js +1 -1
- package/statistics/features/supported/control-flow/control-flow.js +2 -2
- package/statistics/features/supported/data-access/data-access.js +1 -1
- package/statistics/features/supported/defined-functions/defined-functions.js +1 -1
- package/statistics/features/supported/expression-list/statistics-expression-list.js +1 -1
- package/statistics/features/supported/loops/loops.js +1 -1
- package/statistics/features/supported/used-functions/used-functions.js +2 -2
- package/statistics/features/supported/variables/variables.js +3 -2
- package/statistics/statistics.js +3 -2
- package/util/assert.d.ts +4 -0
- package/util/assert.js +4 -0
- package/util/containers.js +1 -1
- package/util/files.d.ts +1 -1
- package/util/files.js +1 -1
- package/util/mermaid/ast.d.ts +4 -3
- package/util/mermaid/ast.js +36 -8
- package/util/mermaid/cfg.js +1 -1
- package/util/mermaid/dfg.d.ts +1 -0
- package/util/mermaid/dfg.js +3 -3
- package/util/simple-df/dfg-view.d.ts +2 -1
- package/util/simple-df/dfg-view.js +2 -2
- package/util/version.js +1 -1
- package/dataflow/environments/remove.d.ts +0 -12
- package/dataflow/environments/remove.js +0 -52
- package/documentation/print-analyzer-wiki.d.ts +0 -1
- package/documentation/print-analyzer-wiki.js +0 -141
- package/documentation/print-capabilities-markdown.d.ts +0 -1
- package/documentation/print-cfg-wiki.d.ts +0 -1
- package/documentation/print-core-wiki.d.ts +0 -5
- package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
- package/documentation/print-engines-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.js +0 -18
- package/documentation/print-interface-wiki.d.ts +0 -1
- package/documentation/print-linter-issue.d.ts +0 -1
- package/documentation/print-linter-wiki.d.ts +0 -1
- package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
- package/documentation/print-normalized-ast-wiki.d.ts +0 -1
- package/documentation/print-onboarding-wiki.d.ts +0 -1
- package/documentation/print-query-wiki.d.ts +0 -1
- package/documentation/print-readme.d.ts +0 -1
- package/documentation/print-search-wiki.d.ts +0 -1
- package/documentation/print-search-wiki.js +0 -74
- package/util/formats/adapter-format.d.ts +0 -6
- package/util/formats/adapter-format.js +0 -3
- package/util/formats/adapter.d.ts +0 -27
- package/util/formats/adapter.js +0 -58
- package/util/formats/adapters/r-adapter.d.ts +0 -4
- package/util/formats/adapters/r-adapter.js +0 -7
- package/util/formats/adapters/rmd-adapter.d.ts +0 -35
- package/util/formats/adapters/rmd-adapter.js +0 -100
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
+
/**
|
|
3
|
+
* Kinds of TypeScript type elements we can encounter.
|
|
4
|
+
* Please note, that a `function` is also a `variable` here.
|
|
5
|
+
*/
|
|
2
6
|
export type TypeElementKind = 'interface' | 'type' | 'enum' | 'class' | 'variable';
|
|
7
|
+
/**
|
|
8
|
+
* The full underlying information about a TypeScript type element found in source code.
|
|
9
|
+
*/
|
|
3
10
|
export interface TypeElementInSource {
|
|
4
11
|
name: string;
|
|
5
12
|
node: ts.Node;
|
|
@@ -12,46 +19,56 @@ export interface TypeElementInSource {
|
|
|
12
19
|
readonly properties?: string[];
|
|
13
20
|
}
|
|
14
21
|
/**
|
|
15
|
-
*
|
|
22
|
+
* Retrieve TypeScript source files from the given file names.
|
|
16
23
|
*/
|
|
17
24
|
export declare function getTypeScriptSourceFiles(fileNames: readonly string[]): {
|
|
18
25
|
files: ts.SourceFile[];
|
|
19
26
|
program: ts.Program;
|
|
20
27
|
};
|
|
21
28
|
/**
|
|
22
|
-
*
|
|
29
|
+
* Drop generics from a TypeScript type name.
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const typeName = 'MyType<T, U>';
|
|
33
|
+
* const cleanName = dropGenericsFromTypeName(typeName);
|
|
34
|
+
* console.log(cleanName); // 'MyType'
|
|
35
|
+
* ```
|
|
23
36
|
*/
|
|
24
37
|
export declare function dropGenericsFromTypeName(type: string): string;
|
|
25
38
|
/**
|
|
26
|
-
*
|
|
39
|
+
* Remove comment symbols from a TypeScript comment string.
|
|
40
|
+
* This also takes care of special JSDoc tags like `{@link ...}` and `{@see ...}`.
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const comment = '/**\n* This is a comment.\n* It has multiple lines.\n *\/'; // closing comment sadly escaped for ts doc
|
|
44
|
+
* const cleaned = removeCommentSymbolsFromTypeScriptComment(comment);
|
|
45
|
+
* console.log(cleaned);
|
|
46
|
+
* ```
|
|
47
|
+
* This will output:
|
|
48
|
+
* ```md
|
|
49
|
+
* This is a comment.
|
|
50
|
+
* It has multiple lines.
|
|
51
|
+
* ```
|
|
27
52
|
*/
|
|
28
53
|
export declare function removeCommentSymbolsFromTypeScriptComment(comment: string): string;
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
*/
|
|
32
|
-
export declare function getTextualCommentsFromTypeScript(node: ts.Node): string[];
|
|
33
54
|
/**
|
|
34
55
|
*
|
|
35
56
|
*/
|
|
36
57
|
export declare function getStartLineOfTypeScriptNode(node: ts.Node, sourceFile: ts.SourceFile): number;
|
|
37
58
|
/**
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
export declare function getType(node: ts.Node, typeChecker: ts.TypeChecker): string;
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
*/
|
|
44
|
-
export declare function followTypeReference(type: ts.TypeReferenceNode, sourceFile: ts.SourceFile): string[];
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
59
|
+
* Return the link to the type in the source code.
|
|
60
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
47
61
|
*/
|
|
48
|
-
export declare function
|
|
62
|
+
export declare function getTypePathLink(elem: Pick<TypeElementInSource, 'filePath' | 'lineNumber'>, prefix?: string): string;
|
|
49
63
|
/**
|
|
50
|
-
*
|
|
64
|
+
* Visualize the type hierarchy as a mermaid class diagram.
|
|
51
65
|
*/
|
|
52
|
-
export declare function
|
|
66
|
+
export declare function visualizeMermaidClassDiagram(hierarchyList: readonly TypeElementInSource[], options: {
|
|
67
|
+
typeNameForMermaid?: string;
|
|
68
|
+
inlineTypes?: readonly string[];
|
|
69
|
+
}): string | undefined;
|
|
53
70
|
export interface GetTypesAsMermaidOption {
|
|
54
|
-
readonly rootFolder?: string;
|
|
71
|
+
readonly rootFolder?: string | string[];
|
|
55
72
|
readonly files?: readonly string[];
|
|
56
73
|
/** if you request a type name, we will generate a mermaid diagram for that type */
|
|
57
74
|
readonly typeNameForMermaid?: string;
|
|
@@ -74,10 +91,6 @@ export declare function getTypesFromFolder(options: GetTypesAsMermaidOption & {
|
|
|
74
91
|
mermaid: undefined;
|
|
75
92
|
});
|
|
76
93
|
export declare function getTypesFromFolder(options: GetTypesAsMermaidOption): TypeReport;
|
|
77
|
-
/**
|
|
78
|
-
*
|
|
79
|
-
*/
|
|
80
|
-
export declare function implSnippet(node: TypeElementInSource | undefined, program: ts.Program, showName?: boolean, nesting?: number, open?: boolean): string;
|
|
81
94
|
export interface PrintHierarchyArguments {
|
|
82
95
|
readonly program: ts.Program;
|
|
83
96
|
readonly info: TypeElementInSource[];
|
|
@@ -86,26 +99,41 @@ export interface PrintHierarchyArguments {
|
|
|
86
99
|
readonly initialNesting?: number;
|
|
87
100
|
readonly maxDepth?: number;
|
|
88
101
|
readonly openTop?: boolean;
|
|
102
|
+
readonly showImplSnippet?: boolean;
|
|
89
103
|
}
|
|
90
104
|
export declare const mermaidHide: string[];
|
|
91
105
|
/**
|
|
92
|
-
*
|
|
106
|
+
* Print the hierarchy of types starting from the given root.
|
|
107
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
108
|
+
*/
|
|
109
|
+
export declare function printHierarchy({ program, info, root, collapseFromNesting, initialNesting, maxDepth, openTop, showImplSnippet }: PrintHierarchyArguments): string;
|
|
110
|
+
/**
|
|
111
|
+
* Options to print code of an element
|
|
93
112
|
*/
|
|
94
|
-
export
|
|
95
|
-
|
|
113
|
+
export interface FnElementInfo {
|
|
114
|
+
/** The type information collected from the source code */
|
|
96
115
|
info: TypeElementInSource[];
|
|
116
|
+
/** The TypeScript program used to extract the info */
|
|
97
117
|
program: ts.Program;
|
|
118
|
+
/** Number of lines to drop from the start of the code block */
|
|
98
119
|
dropLinesStart?: number;
|
|
120
|
+
/** Number of lines to drop from the end of the code block */
|
|
99
121
|
dropLinesEnd?: number;
|
|
122
|
+
/** Whether to not automatically gobble leading spaces */
|
|
100
123
|
doNotAutoGobble?: boolean;
|
|
124
|
+
/** Whether to hide the "Defined at ..." line */
|
|
101
125
|
hideDefinedAt?: boolean;
|
|
102
126
|
}
|
|
103
127
|
/**
|
|
128
|
+
* Print an element from the info as code block.
|
|
129
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
104
130
|
*
|
|
131
|
+
* This is great to show examples that are directly taken from the source code.
|
|
105
132
|
*/
|
|
106
|
-
export declare function printCodeOfElement({ program, info, dropLinesEnd, dropLinesStart, doNotAutoGobble, hideDefinedAt }:
|
|
133
|
+
export declare function printCodeOfElement({ program, info, dropLinesEnd, dropLinesStart, doNotAutoGobble, hideDefinedAt }: FnElementInfo, name: string): string;
|
|
107
134
|
/**
|
|
108
|
-
* Create a short link to a type in the documentation
|
|
135
|
+
* Create a short link to a type in the documentation.
|
|
136
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralDocContext}.
|
|
109
137
|
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
110
138
|
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
111
139
|
* @param hierarchy - The hierarchy of types to search in
|
|
@@ -114,7 +142,11 @@ export declare function printCodeOfElement({ program, info, dropLinesEnd, dropLi
|
|
|
114
142
|
*/
|
|
115
143
|
export declare function shortLink(name: string, hierarchy: readonly TypeElementInSource[], codeStyle?: boolean, realNameWrapper?: string): string;
|
|
116
144
|
/**
|
|
117
|
-
*
|
|
145
|
+
* Create a short link to a type in the documentation.
|
|
146
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
147
|
+
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
148
|
+
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
149
|
+
* @param hierarchy - The hierarchy of types to search in
|
|
118
150
|
*/
|
|
119
151
|
export declare function shortLinkFile(name: string, hierarchy: readonly TypeElementInSource[]): string;
|
|
120
152
|
export interface GetDocumentationForTypeFilters {
|
|
@@ -122,7 +154,12 @@ export interface GetDocumentationForTypeFilters {
|
|
|
122
154
|
type?: TypeElementKind;
|
|
123
155
|
}
|
|
124
156
|
/**
|
|
125
|
-
*
|
|
157
|
+
* Retrieve documentation comments for a type.
|
|
158
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
159
|
+
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
160
|
+
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
161
|
+
* @param hierarchy - The hierarchy of types to search in
|
|
162
|
+
* @param prefix - A prefix to add to each line of the documentation
|
|
163
|
+
* @param filter - Optional filters for retrieving the documentation
|
|
126
164
|
*/
|
|
127
165
|
export declare function getDocumentationForType(name: string, hierarchy: TypeElementInSource[], prefix?: string, filter?: GetDocumentationForTypeFilters): string;
|
|
128
|
-
export {};
|
|
@@ -7,14 +7,10 @@ exports.mermaidHide = void 0;
|
|
|
7
7
|
exports.getTypeScriptSourceFiles = getTypeScriptSourceFiles;
|
|
8
8
|
exports.dropGenericsFromTypeName = dropGenericsFromTypeName;
|
|
9
9
|
exports.removeCommentSymbolsFromTypeScriptComment = removeCommentSymbolsFromTypeScriptComment;
|
|
10
|
-
exports.getTextualCommentsFromTypeScript = getTextualCommentsFromTypeScript;
|
|
11
10
|
exports.getStartLineOfTypeScriptNode = getStartLineOfTypeScriptNode;
|
|
12
|
-
exports.getType = getType;
|
|
13
|
-
exports.followTypeReference = followTypeReference;
|
|
14
|
-
exports.getTypePathForTypeScript = getTypePathForTypeScript;
|
|
15
11
|
exports.getTypePathLink = getTypePathLink;
|
|
12
|
+
exports.visualizeMermaidClassDiagram = visualizeMermaidClassDiagram;
|
|
16
13
|
exports.getTypesFromFolder = getTypesFromFolder;
|
|
17
|
-
exports.implSnippet = implSnippet;
|
|
18
14
|
exports.printHierarchy = printHierarchy;
|
|
19
15
|
exports.printCodeOfElement = printCodeOfElement;
|
|
20
16
|
exports.shortLink = shortLink;
|
|
@@ -30,22 +26,36 @@ const doc_code_1 = require("./doc-code");
|
|
|
30
26
|
const doc_structure_1 = require("./doc-structure");
|
|
31
27
|
const html_hover_over_1 = require("../../util/html-hover-over");
|
|
32
28
|
const doc_general_1 = require("./doc-general");
|
|
29
|
+
const options = {
|
|
30
|
+
target: typescript_1.default.ScriptTarget.ESNext,
|
|
31
|
+
skipLibCheck: true,
|
|
32
|
+
skipDefaultLibCheck: true,
|
|
33
|
+
allowJs: true,
|
|
34
|
+
strict: false,
|
|
35
|
+
checkJs: false,
|
|
36
|
+
strictNullChecks: false,
|
|
37
|
+
noUncheckedIndexedAccess: false,
|
|
38
|
+
noUncheckedSideEffectImports: false,
|
|
39
|
+
noCheck: true,
|
|
40
|
+
noEmit: true,
|
|
41
|
+
noResolve: true,
|
|
42
|
+
noUnusedLocals: false,
|
|
43
|
+
alwaysStrict: true,
|
|
44
|
+
incremental: false,
|
|
45
|
+
types: [],
|
|
46
|
+
lib: [],
|
|
47
|
+
noLib: true,
|
|
48
|
+
moduleResolution: typescript_1.default.ModuleResolutionKind.Classic,
|
|
49
|
+
allowUnreachableCode: true,
|
|
50
|
+
allowUnusedLabels: true,
|
|
51
|
+
disableSolutionSearching: true,
|
|
52
|
+
};
|
|
33
53
|
/**
|
|
34
|
-
*
|
|
54
|
+
* Retrieve TypeScript source files from the given file names.
|
|
35
55
|
*/
|
|
36
56
|
function getTypeScriptSourceFiles(fileNames) {
|
|
37
57
|
try {
|
|
38
|
-
const program = typescript_1.default.createProgram(fileNames,
|
|
39
|
-
target: typescript_1.default.ScriptTarget.ESNext,
|
|
40
|
-
skipLibCheck: true,
|
|
41
|
-
skipDefaultLibCheck: true,
|
|
42
|
-
allowJs: true,
|
|
43
|
-
checkJs: false,
|
|
44
|
-
strictNullChecks: false,
|
|
45
|
-
noUncheckedIndexedAccess: false,
|
|
46
|
-
noUncheckedSideEffectImports: false,
|
|
47
|
-
noCheck: true
|
|
48
|
-
});
|
|
58
|
+
const program = typescript_1.default.createProgram(fileNames, options);
|
|
49
59
|
return { program, files: fileNames.map(fileName => program.getSourceFile(fileName)).filter(file => !!file) };
|
|
50
60
|
}
|
|
51
61
|
catch (err) {
|
|
@@ -53,31 +63,49 @@ function getTypeScriptSourceFiles(fileNames) {
|
|
|
53
63
|
return { files: [], program: undefined };
|
|
54
64
|
}
|
|
55
65
|
}
|
|
66
|
+
const DropGenericsPattern = /<.*>/g;
|
|
56
67
|
/**
|
|
57
|
-
*
|
|
68
|
+
* Drop generics from a TypeScript type name.
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const typeName = 'MyType<T, U>';
|
|
72
|
+
* const cleanName = dropGenericsFromTypeName(typeName);
|
|
73
|
+
* console.log(cleanName); // 'MyType'
|
|
74
|
+
* ```
|
|
58
75
|
*/
|
|
59
76
|
function dropGenericsFromTypeName(type) {
|
|
60
77
|
let previous;
|
|
61
78
|
do {
|
|
62
79
|
previous = type;
|
|
63
|
-
type = type.replace(
|
|
80
|
+
type = type.replace(DropGenericsPattern, '');
|
|
64
81
|
} while (type !== previous);
|
|
65
82
|
return type;
|
|
66
83
|
}
|
|
84
|
+
const PruneDocCommentPattern = /^\/\*\*?|\*\/$|^\s*\*\s?|\s*\*$/gm;
|
|
85
|
+
const PrunedocLinkPattern = /\{@[a-zA-Z]+ ([^}]+\|)?(?<name>[^}]+)}/gm;
|
|
67
86
|
/**
|
|
68
|
-
*
|
|
87
|
+
* Remove comment symbols from a TypeScript comment string.
|
|
88
|
+
* This also takes care of special JSDoc tags like `{@link ...}` and `{@see ...}`.
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const comment = '/**\n* This is a comment.\n* It has multiple lines.\n *\/'; // closing comment sadly escaped for ts doc
|
|
92
|
+
* const cleaned = removeCommentSymbolsFromTypeScriptComment(comment);
|
|
93
|
+
* console.log(cleaned);
|
|
94
|
+
* ```
|
|
95
|
+
* This will output:
|
|
96
|
+
* ```md
|
|
97
|
+
* This is a comment.
|
|
98
|
+
* It has multiple lines.
|
|
99
|
+
* ```
|
|
69
100
|
*/
|
|
70
101
|
function removeCommentSymbolsFromTypeScriptComment(comment) {
|
|
71
102
|
return comment
|
|
72
103
|
// remove '/** \n * \n */...
|
|
73
|
-
.replace(
|
|
74
|
-
|
|
75
|
-
.replace(
|
|
104
|
+
.replace(PruneDocCommentPattern, '')
|
|
105
|
+
// replace {@key foo|bar} with `bar` and {@key foo} with `foo`
|
|
106
|
+
.replace(PrunedocLinkPattern, '<code>$<name></code>')
|
|
76
107
|
.trim();
|
|
77
108
|
}
|
|
78
|
-
/**
|
|
79
|
-
*
|
|
80
|
-
*/
|
|
81
109
|
function getTextualCommentsFromTypeScript(node) {
|
|
82
110
|
const comments = typescript_1.default.getJSDocCommentsAndTags(node);
|
|
83
111
|
const out = [];
|
|
@@ -100,17 +128,11 @@ function getStartLineOfTypeScriptNode(node, sourceFile) {
|
|
|
100
128
|
const lineStart = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line;
|
|
101
129
|
return lineStart + 1;
|
|
102
130
|
}
|
|
103
|
-
/**
|
|
104
|
-
*
|
|
105
|
-
*/
|
|
106
131
|
function getType(node, typeChecker) {
|
|
107
132
|
const tryDirect = typeChecker.getTypeAtLocation(node);
|
|
108
133
|
return tryDirect ? typeChecker.typeToString(tryDirect) : 'unknown';
|
|
109
134
|
}
|
|
110
135
|
const defaultSkip = ['Pick', 'Partial', 'Required', 'Readonly', 'Omit', 'DeepPartial', 'DeepReadonly', 'DeepWritable', 'StrictOmit'];
|
|
111
|
-
/**
|
|
112
|
-
*
|
|
113
|
-
*/
|
|
114
136
|
function followTypeReference(type, sourceFile) {
|
|
115
137
|
const node = type.typeName;
|
|
116
138
|
if (typescript_1.default.isQualifiedName(node)) {
|
|
@@ -136,7 +158,7 @@ function collectHierarchyInformation(sourceFiles, options) {
|
|
|
136
158
|
const baseTypes = node.heritageClauses?.flatMap(clause => clause.types
|
|
137
159
|
.map(type => type.getText(sourceFile) ?? '')
|
|
138
160
|
.map(dropGenericsFromTypeName)) ?? [];
|
|
139
|
-
const generics = node.typeParameters?.map(param => param.getText(sourceFile) ?? '')
|
|
161
|
+
const generics = node.typeParameters?.map(param => param.getText(sourceFile) ?? '') ?? [];
|
|
140
162
|
hierarchyList.push({
|
|
141
163
|
name: dropGenericsFromTypeName(interfaceName),
|
|
142
164
|
node,
|
|
@@ -162,7 +184,7 @@ function collectHierarchyInformation(sourceFiles, options) {
|
|
|
162
184
|
.map(dropGenericsFromTypeName);
|
|
163
185
|
}
|
|
164
186
|
else if (typescript_1.default.isTypeReferenceNode(node.type)) {
|
|
165
|
-
baseTypes =
|
|
187
|
+
baseTypes = followTypeReference(node.type, sourceFile).map(dropGenericsFromTypeName);
|
|
166
188
|
}
|
|
167
189
|
const generics = node.typeParameters?.map(param => param.getText(sourceFile) ?? '') ?? [];
|
|
168
190
|
hierarchyList.push({
|
|
@@ -266,19 +288,17 @@ function collectHierarchyInformation(sourceFiles, options) {
|
|
|
266
288
|
}
|
|
267
289
|
typescript_1.default.forEachChild(node, child => visit(child, sourceFile));
|
|
268
290
|
};
|
|
269
|
-
|
|
270
|
-
visit(
|
|
271
|
-
}
|
|
291
|
+
for (const sf of sourceFiles) {
|
|
292
|
+
visit(sf, sf);
|
|
293
|
+
}
|
|
272
294
|
return hierarchyList;
|
|
273
295
|
}
|
|
274
|
-
/**
|
|
275
|
-
*
|
|
276
|
-
*/
|
|
277
296
|
function getTypePathForTypeScript({ filePath }) {
|
|
278
297
|
return filePath.replace(/^.*\/src\//, 'src/').replace(/^.*\/test\//, 'test/');
|
|
279
298
|
}
|
|
280
299
|
/**
|
|
281
|
-
*
|
|
300
|
+
* Return the link to the type in the source code.
|
|
301
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
282
302
|
*/
|
|
283
303
|
function getTypePathLink(elem, prefix = doc_files_1.RemoteFlowrFilePathBaseRef) {
|
|
284
304
|
const fromSource = getTypePathForTypeScript(elem);
|
|
@@ -335,6 +355,9 @@ function generateMermaidClassDiagram(hierarchyList, rootName, options, visited =
|
|
|
335
355
|
}
|
|
336
356
|
return collect;
|
|
337
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Visualize the type hierarchy as a mermaid class diagram.
|
|
360
|
+
*/
|
|
338
361
|
function visualizeMermaidClassDiagram(hierarchyList, options) {
|
|
339
362
|
if (!options.typeNameForMermaid) {
|
|
340
363
|
return undefined;
|
|
@@ -363,21 +386,24 @@ function getTypesFromFileAsMermaid(fileNames, options) {
|
|
|
363
386
|
*/
|
|
364
387
|
function getTypesFromFolder(options) {
|
|
365
388
|
(0, assert_1.guard)(options.rootFolder !== undefined || options.files !== undefined, 'Either rootFolder or files must be provided');
|
|
366
|
-
|
|
389
|
+
let files = [...options.files ?? []];
|
|
367
390
|
if (options.rootFolder) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
391
|
+
const folders = Array.isArray(options.rootFolder) ? options.rootFolder : [options.rootFolder];
|
|
392
|
+
for (const folder of folders) {
|
|
393
|
+
files = files.concat(fs_1.default.readdirSync(folder, { recursive: true })
|
|
394
|
+
.filter(f => {
|
|
395
|
+
const p = f.toString();
|
|
396
|
+
return p.endsWith('.ts')
|
|
397
|
+
&& !p.endsWith('.test.ts')
|
|
398
|
+
&& !p.endsWith('-app.ts')
|
|
399
|
+
&& !p.endsWith('.d.ts');
|
|
400
|
+
})
|
|
401
|
+
.map(f => path_1.default.join(folder, f.toString())));
|
|
373
402
|
}
|
|
374
403
|
}
|
|
375
404
|
return getTypesFromFileAsMermaid(files, options);
|
|
376
405
|
}
|
|
377
|
-
|
|
378
|
-
*
|
|
379
|
-
*/
|
|
380
|
-
function implSnippet(node, program, showName = true, nesting = 0, open = false) {
|
|
406
|
+
function implSnippet(node, program, showName = true, nesting = 0, open = false, showImplSnippet = true) {
|
|
381
407
|
(0, assert_1.guard)(node !== undefined, 'Node must be defined => invalid change of type name?');
|
|
382
408
|
const indent = ' '.repeat(nesting * 2);
|
|
383
409
|
const bold = node.kind === 'interface' || node.kind === 'enum' ? '**' : '';
|
|
@@ -386,16 +412,22 @@ function implSnippet(node, program, showName = true, nesting = 0, open = false)
|
|
|
386
412
|
if (text.trim() !== '') {
|
|
387
413
|
text = ' ' + text;
|
|
388
414
|
}
|
|
389
|
-
|
|
390
|
-
|
|
415
|
+
if (showImplSnippet) {
|
|
416
|
+
const code = node.node.getFullText(program.getSourceFile(node.node.getSourceFile().fileName));
|
|
417
|
+
text += `\n<details${open ? ' open' : ''}><summary style="color:gray">Defined at <a href="${getTypePathLink(node)}">${getTypePathLink(node, '.')}</a></summary>\n\n${(0, doc_code_1.codeBlock)('ts', code)}\n\n</details>\n`;
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
text += `\n<br/><i>(Defined at <a href="${getTypePathLink(node)}">${getTypePathLink(node, '.')}</a>)</i>\n`;
|
|
421
|
+
}
|
|
391
422
|
const init = showName ? `* ${bold}[${node.name}](${getTypePathLink(node)})${bold} ${sep}${indent}` : '';
|
|
392
423
|
return ` ${indent}${showName ? init : ''} ${text.replaceAll('\t', ' ').split(/\n/g).join(`\n${indent} `)}`;
|
|
393
424
|
}
|
|
394
425
|
exports.mermaidHide = ['Leaf', 'Location', 'Namespace', 'Base', 'WithChildren', 'Partial', 'RAccessBase'];
|
|
395
426
|
/**
|
|
396
|
-
*
|
|
427
|
+
* Print the hierarchy of types starting from the given root.
|
|
428
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
397
429
|
*/
|
|
398
|
-
function printHierarchy({ program, info, root, collapseFromNesting = 1, initialNesting = 0, maxDepth = 20, openTop }) {
|
|
430
|
+
function printHierarchy({ program, info, root, collapseFromNesting = 1, initialNesting = 0, maxDepth = 20, openTop, showImplSnippet = true }) {
|
|
399
431
|
if (initialNesting > maxDepth) {
|
|
400
432
|
return '';
|
|
401
433
|
}
|
|
@@ -403,13 +435,13 @@ function printHierarchy({ program, info, root, collapseFromNesting = 1, initialN
|
|
|
403
435
|
if (!node) {
|
|
404
436
|
return '';
|
|
405
437
|
}
|
|
406
|
-
const thisLine = implSnippet(node, program, true, initialNesting, initialNesting === 0 && openTop);
|
|
438
|
+
const thisLine = implSnippet(node, program, true, initialNesting, initialNesting === 0 && openTop, showImplSnippet);
|
|
407
439
|
const result = [];
|
|
408
440
|
for (const baseType of node.extends) {
|
|
409
441
|
if (exports.mermaidHide.includes(baseType)) {
|
|
410
442
|
continue;
|
|
411
443
|
}
|
|
412
|
-
const res = printHierarchy({ program, info: info, root: baseType, collapseFromNesting, initialNesting: initialNesting + 1, maxDepth });
|
|
444
|
+
const res = printHierarchy({ program, info: info, root: baseType, collapseFromNesting, initialNesting: initialNesting + 1, maxDepth, showImplSnippet });
|
|
413
445
|
result.push(res);
|
|
414
446
|
}
|
|
415
447
|
const out = result.join('\n');
|
|
@@ -421,7 +453,10 @@ function printHierarchy({ program, info, root, collapseFromNesting = 1, initialN
|
|
|
421
453
|
}
|
|
422
454
|
}
|
|
423
455
|
/**
|
|
456
|
+
* Print an element from the info as code block.
|
|
457
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
424
458
|
*
|
|
459
|
+
* This is great to show examples that are directly taken from the source code.
|
|
425
460
|
*/
|
|
426
461
|
function printCodeOfElement({ program, info, dropLinesEnd = 0, dropLinesStart = 0, doNotAutoGobble, hideDefinedAt }, name) {
|
|
427
462
|
const node = info.find(e => e.name === name);
|
|
@@ -442,7 +477,7 @@ function printCodeOfElement({ program, info, dropLinesEnd = 0, dropLinesStart =
|
|
|
442
477
|
const lines = code.replaceAll('\t', ' ').split(/\n/g);
|
|
443
478
|
let gobble = Number.POSITIVE_INFINITY;
|
|
444
479
|
for (const line of lines) {
|
|
445
|
-
const match = line.match(/^(\s
|
|
480
|
+
const match = line.match(/^(\s*)\S+/);
|
|
446
481
|
if (match) {
|
|
447
482
|
gobble = Math.min(gobble, match[1].length);
|
|
448
483
|
}
|
|
@@ -487,7 +522,8 @@ function retrieveNode(name, hierarchy, fuzzy = false, type = undefined) {
|
|
|
487
522
|
return [container, name, node[0]];
|
|
488
523
|
}
|
|
489
524
|
/**
|
|
490
|
-
* Create a short link to a type in the documentation
|
|
525
|
+
* Create a short link to a type in the documentation.
|
|
526
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralDocContext}.
|
|
491
527
|
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
492
528
|
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
493
529
|
* @param hierarchy - The hierarchy of types to search in
|
|
@@ -507,10 +543,15 @@ function shortLink(name, hierarchy, codeStyle = true, realNameWrapper = 'b') {
|
|
|
507
543
|
}
|
|
508
544
|
const comments = node.comments?.join('\n').replace(/\\?\n|```[a-zA-Z]*|\s\s*/g, ' ').replace(/<\/?code>|`/g, '').replace(/<\/?p\/?>/g, ' ').replace(/"/g, '\'') ?? '';
|
|
509
545
|
return `<a href="${getTypePathLink(node)}">${codeStyle ? '<code>' : ''}${(node.comments?.length ?? 0) > 0 ?
|
|
510
|
-
(0, html_hover_over_1.textWithTooltip)(pkg ? `${pkg}::<${realNameWrapper}>${mainName}</${realNameWrapper}>` : mainName, comments.length > 400 ? comments.slice(0, 400) + '...' : comments) :
|
|
546
|
+
(0, html_hover_over_1.textWithTooltip)(pkg ? `${pkg}::<${realNameWrapper}>${mainName}</${realNameWrapper}>` : mainName, comments.length > 400 ? comments.slice(0, 400) + '...' : comments) :
|
|
547
|
+
pkg ? `${pkg}::<${realNameWrapper}>${mainName}</${realNameWrapper}>` : mainName}${codeStyle ? '</code>' : ''}</a>`;
|
|
511
548
|
}
|
|
512
549
|
/**
|
|
513
|
-
*
|
|
550
|
+
* Create a short link to a type in the documentation.
|
|
551
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
552
|
+
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
553
|
+
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
554
|
+
* @param hierarchy - The hierarchy of types to search in
|
|
514
555
|
*/
|
|
515
556
|
function shortLinkFile(name, hierarchy) {
|
|
516
557
|
const res = retrieveNode(name, hierarchy);
|
|
@@ -522,7 +563,13 @@ function shortLinkFile(name, hierarchy) {
|
|
|
522
563
|
return `<a href="${getTypePathLink(node)}">${getTypePathForTypeScript(node)}</a>`;
|
|
523
564
|
}
|
|
524
565
|
/**
|
|
525
|
-
*
|
|
566
|
+
* Retrieve documentation comments for a type.
|
|
567
|
+
* If you create a wiki, please refer to the functions provided by the {@link GeneralWikiContext}.
|
|
568
|
+
* @param name - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
|
|
569
|
+
* Use `:::` if you want to access a scoped function, but the name should be displayed without the scope
|
|
570
|
+
* @param hierarchy - The hierarchy of types to search in
|
|
571
|
+
* @param prefix - A prefix to add to each line of the documentation
|
|
572
|
+
* @param filter - Optional filters for retrieving the documentation
|
|
526
573
|
*/
|
|
527
574
|
function getDocumentationForType(name, hierarchy, prefix = '', filter) {
|
|
528
575
|
const res = retrieveNode(name, hierarchy, filter?.fuzzy, filter?.type);
|
package/documentation/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
1
|
+
export * from './wiki-core';
|
|
2
|
+
export * from './wiki-query';
|
|
3
|
+
export * from './wiki-search';
|
|
4
|
+
export * from './wiki-engine';
|
|
5
|
+
export * from './wiki-interface';
|
|
6
|
+
export * from './wiki-dataflow-graph';
|
|
7
|
+
export * from './wiki-normalized-ast';
|
|
8
|
+
export * from './doc-capabilities';
|
|
9
|
+
export * from './wiki-linting-and-testing';
|
package/documentation/index.js
CHANGED
|
@@ -14,13 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
21
|
-
__exportStar(require("./
|
|
22
|
-
__exportStar(require("./
|
|
23
|
-
__exportStar(require("./
|
|
24
|
-
__exportStar(require("./
|
|
25
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./wiki-core"), exports);
|
|
18
|
+
__exportStar(require("./wiki-query"), exports);
|
|
19
|
+
__exportStar(require("./wiki-search"), exports);
|
|
20
|
+
__exportStar(require("./wiki-engine"), exports);
|
|
21
|
+
__exportStar(require("./wiki-interface"), exports);
|
|
22
|
+
__exportStar(require("./wiki-dataflow-graph"), exports);
|
|
23
|
+
__exportStar(require("./wiki-normalized-ast"), exports);
|
|
24
|
+
__exportStar(require("./doc-capabilities"), exports);
|
|
25
|
+
__exportStar(require("./wiki-linting-and-testing"), exports);
|
|
26
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DocMakerArgs } from './wiki-mk/doc-maker';
|
|
2
|
+
import { DocMaker } from './wiki-mk/doc-maker';
|
|
3
|
+
/**
|
|
4
|
+
* https://github.com/flowr-analysis/flowr/blob/main/.github/ISSUE_TEMPLATE/linting-rule.yaml
|
|
5
|
+
*/
|
|
6
|
+
export declare class IssueLintingRule extends DocMaker {
|
|
7
|
+
constructor();
|
|
8
|
+
text({ ctx }: DocMakerArgs): string;
|
|
9
|
+
}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
const doc_types_1 = require("./doc-util/doc-types");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
3
|
+
exports.IssueLintingRule = void 0;
|
|
9
4
|
const linter_tags_1 = require("../linter/linter-tags");
|
|
10
5
|
const doc_general_1 = require("./doc-util/doc-general");
|
|
11
6
|
const doc_files_1 = require("./doc-util/doc-files");
|
|
12
7
|
const linter_rules_1 = require("../linter/linter-rules");
|
|
8
|
+
const doc_maker_1 = require("./wiki-mk/doc-maker");
|
|
13
9
|
/* this prints the yaml configuration for the GitHub issue template to request a new linter rule / an update */
|
|
14
10
|
function summarizeIfTooLong(text, maxLength = 52) {
|
|
15
11
|
if (text.length <= maxLength) {
|
|
@@ -17,11 +13,15 @@ function summarizeIfTooLong(text, maxLength = 52) {
|
|
|
17
13
|
}
|
|
18
14
|
return text.slice(0, maxLength - 1) + '…';
|
|
19
15
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
/**
|
|
17
|
+
* https://github.com/flowr-analysis/flowr/blob/main/.github/ISSUE_TEMPLATE/linting-rule.yaml
|
|
18
|
+
*/
|
|
19
|
+
class IssueLintingRule extends doc_maker_1.DocMaker {
|
|
20
|
+
constructor() {
|
|
21
|
+
super('.github/ISSUE_TEMPLATE/linting-rule.yaml', module.filename, '', false);
|
|
22
|
+
}
|
|
23
|
+
text({ ctx }) {
|
|
24
|
+
return `
|
|
25
25
|
name: Linting Rule
|
|
26
26
|
description: Suggest either a new linting rule or an improvement to an existing one.
|
|
27
27
|
title: "[Linter]: "
|
|
@@ -48,9 +48,9 @@ body:
|
|
|
48
48
|
options:
|
|
49
49
|
- New Rule
|
|
50
50
|
${(0, doc_general_1.prefixLines)(Object.keys(linter_rules_1.LintingRules).sort().map(name => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
const rule = linter_rules_1.LintingRules[name];
|
|
52
|
+
return `- ${rule.info.name}`;
|
|
53
|
+
}).join('\n'), ' ')}
|
|
54
54
|
default: 0
|
|
55
55
|
- type: checkboxes
|
|
56
56
|
id: tags
|
|
@@ -59,13 +59,10 @@ ${(0, doc_general_1.prefixLines)(Object.keys(linter_rules_1.LintingRules).sort()
|
|
|
59
59
|
description: Select any tags that you think apply to the linting rule you are suggesting. If you try to suggest a new linting rule, please only select those that you think apply after your suggestions.
|
|
60
60
|
options:
|
|
61
61
|
${(0, doc_general_1.prefixLines)(Object.entries(linter_tags_1.LintingRuleTag).map(([name]) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
`.trim();
|
|
65
|
-
}
|
|
66
|
-
/** if we run this script, we want a Markdown representation of the capabilities */
|
|
67
|
-
if (require.main === module) {
|
|
68
|
-
(0, log_1.setMinLevelOfAllLogs)(6 /* LogLevel.Fatal */);
|
|
69
|
-
console.log(getText());
|
|
62
|
+
return `- label: '**${name}**: ${summarizeIfTooLong(ctx.doc('LintingRuleTag::' + name).replaceAll(/\n/g, ' ').replaceAll('\'', '\\\'').trim())}'\n required: false`;
|
|
63
|
+
}).join('\n'), ' ')}
|
|
64
|
+
`.trim();
|
|
65
|
+
}
|
|
70
66
|
}
|
|
71
|
-
|
|
67
|
+
exports.IssueLintingRule = IssueLintingRule;
|
|
68
|
+
//# sourceMappingURL=issue-linting-rule.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DocMakerArgs } from './wiki-mk/doc-maker';
|
|
2
|
+
import { DocMaker } from './wiki-mk/doc-maker';
|
|
3
|
+
/**
|
|
4
|
+
* https://github.com/flowr-analysis/flowr/wiki/Analyzer
|
|
5
|
+
*/
|
|
6
|
+
export declare class WikiAnalyzer extends DocMaker {
|
|
7
|
+
constructor();
|
|
8
|
+
text({ ctx }: DocMakerArgs): string;
|
|
9
|
+
}
|