npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@codependix/cli

v0.0.42

Published

Command-line tool for exporting and validating Nx, NestJS, and file-level dependency graphs and boundaries

Readme

🕸️ Codependix CLI

npm

Exports a project's dependency graphs — Nx, NestJS, and file-level imports — as JSON and Markdown diagrams, and gates the rules those graphs are judged against.

Codependix reads what each project depends on and renders it four ways: the Nx project graph, a NestJS project's module graph, a TypeScript project's own file-level import graph, and a Python project's own file-level import graph. Each graph is delivered to whichever destinations codependix.config.ts names for that project — a JSON file, a Markdown anchor block spliced into an existing file such as a README.md, or both. The same built graphs are then judged against whatever rules the configuration declares — see @codependix/boundaries.

pnpm add --filter <project> --save-dev @codependix/cli
codependix map --write --config projects/configuration/codependix.config.ts

Usage

One command, map, and no per-graph-type subcommand. Which graphs run for a project, where its export lands, and which rules judge it is entirely a function of the configuration file, which every run names with --config because nothing searches for it and there is no default; see projects/configuration/codependix.config.ts for this repository's own.

| Flag | Meaning | | ---- | ------- | | --check [check] | Fail on a comma-separated set drawn from boundaries and reports | | --config <config> | Required. Path to the codependix configuration file. Omitting it fails the run, naming the flag; nothing is searched for | | --dependencies | Build --check boundaries over the dependencies of the projects --projects or --tags named, reporting their findings as notes (default). No effect without --projects or --tags | | --no-dependencies | Build --check boundaries over only the projects --projects or --tags named, not their dependencies. No effect without --projects or --tags | | -d, --directory [directory] | Workspace root whose Nx project graph this run reads. Defaults to the working directory | | --exclude [exclude] | Comma-separated globs overriding the configured exclude. Refused when exclude was never configured | | --file-imports | Build, check, and write the fileImports graph type for this run | | --no-file-imports | Skip the fileImports graph type for this run | | -f, --format [format] | What to print to standard output, one of json and markdown (default: markdown). A graph type prints only when the run also configured a workspace destination for it, even if its own toggle flag enabled it. A --check boundaries run adds its findings, under a boundaries key in json and a Boundaries section in markdown | | --include [include] | Comma-separated globs overriding the configured include. Refused when include was never configured | | --json-output [jsonOutput] | Write every active graph type's data, combined into one JSON file at this path, keyed by graph type name. A type appears only when the run also configured a workspace destination for it. A --check boundaries run adds its findings under a boundaries key | | --markdown-output [markdownOutput] | Write every active graph type's rendered diagram, combined into one Markdown file at this path. A type appears only when the run also configured a workspace destination for it. A --check boundaries run adds its findings as a Boundaries section | | --nestjs-modules | Build, check, and write the nestjsModules graph type for this run | | --no-nestjs-modules | Skip the nestjsModules graph type for this run | | --nx-projects | Build, check, and write the nxProjects graph type for this run | | --no-nx-projects | Skip the nxProjects graph type for this run | | --projects [projects] | Comma-separated project names or roots to export for, as globs, beyond those include already selects. Also narrows the Workspace Graph to the named set, and --check boundaries to failing only on findings charged to it | | --tags [tags] | Comma-separated Nx tags to export for, beyond what include already selects. Narrows the Workspace Graph and --check boundaries to the tagged projects, as --projects does | | --write | Writes every configured export |

The two --check names

--check names which finding fails the run, because the two findings belong on opposite sides of a pull request.

| --check value | What fails the run | | --------------- | ------------------ | | boundaries | An edge, or a cycle, breaking a declared rule | | reports | A configured destination no longer holding what a fresh run would write |

A boundary violation is caused by the branch and fixed by the branch, so it gates every pull request, one project at a time — see The per-project gate. A stale export moves with the workspace it describes and would fail every branch that changed a project graph rather than anything the branch itself did, so it is published on the default branch and gated nowhere. That is the same split callidescope makes between --check depth and --check reports, and reports is deliberately spelled the same in both: it is the same finding, and two names for it would make the two reports unreadable together.

  • --check boundaries reads no destination and writes nothing, so it leaves every committed export exactly as it found it.
  • --write --check boundaries is legal — a boundary has no destination to be stale.
  • --write --check reports is refused: an export cannot be stale in the run that just wrote it.
  • A bare --check, or one whose value is only separators, is refused. Read as "gate nothing" it would be a gate that cannot fail, which is worse than no gate at all because it looks like protection.

Which project a boundary finding fails

Every finding is charged to the project or projects it belongs to: a cycle to every project owning a node on it, a forbidden edge to the project owning its source, a file- or NestJS-level finding to the project whose graph it was found in, and a container that cannot boot to that container's project — its message naming the project that owns the class it failed on, when the stack shows another one.

--projects and --tags name the projects a run judges. Graphs are built over those projects and everything they transitively depend on, and a finding fails the run only when it is charged to a named project. One charged only to a dependency is logged as a note, "in dependency", without failing: the named project is built on it, but it is not that project's to fix. --no-dependencies builds over the named projects alone. With neither flag every project is judged. A --projects/--tags selection that matches no project at all — a misspelled name, a tag nobody carries, or the workspace root — is refused as a rejected command line rather than run as a gate that judges nothing.

When no mode is named

Naming neither --check nor --write is asked about, as a three-item menu — boundaries, reports, write.

There is no flag that turns the prompt off, because there is nothing to turn off where it cannot be answered: a run whose stdin is not a terminal fails immediately, naming the flag it wanted, rather than drawing a menu. That refusal is load-bearing rather than defensive — prompts does not fail on a non-terminal stdin. It renders the menu, never resolves, and lets the process exit 0, which would turn a scripted run that forgot its mode flag into a silent success that wrote nothing. Dismissing the menu at a terminal is reported the same way, as a rejected command line rather than a crash.

No mode is ever inferred, which is the rule codometer's and callidescope's flags follow too.

In an Nx workspace the gate is a per-project codependix-gate target, and publishing is the one workspace-wide write run. This repository's guard-code reaches the first on every pull request, and its release workflow runs the second on the default branch:

nx run <project>:codependix-gate
nx run configuration:codependix:write

One project failing — a missing anchor, or a NestJS project that fails to boot its container — is reported and does not stop the rest: --write either fully succeeds or names exactly which projects failed while still completing every other one.

The per-project gate

--check boundaries --projects <name> is a gate for one project, and needs no task runner. @codependix/nx infers it for an Nx workspace as a cached codependix-gate target on every project but the workspace root, so nx affected -t codependix-gate selects the projects a change touched and a failure names the project it is charged to rather than one workspace-wide task. The target declares no configurations, so guard-code --configuration=check falls through to its defaults, as callidescope-gate does.

Publishing stays workspace-wide: one --write run produces every project's anchor blocks, which must reflect one commit, so configuration:codependix is write-only and is not part of guard-code.

Where the output goes

Printing and delivering are separate. --format decides what reaches standard output; the destinations under workspace in the configuration and --json-output/--markdown-output decide what reaches a file.

Markdown is the console default because it is the one rendering that reads in a terminal and pastes into an issue. --format json is for a machine reading standard output, so every diagnostic goes to standard error — keeping standard output clean and parseable as data.

The boundary report

--check boundaries logs its findings to standard error and, given --format, --json-output, or --markdown-output, also prints them as a report: under a boundaries key in JSON, and as a ### Boundaries section in Markdown. A --check boundaries-only run, which exports nothing, prints just that report; a run that also exports carries both in one document. Without one of those flags a boundaries-only run prints nothing, and a run that also exports prints its graphs exactly as it did before.

The JSON holds judgedProjects (the projects whose findings fail the run), violations (level, rule, message, source, target, cycle, the charged projects, and a verdict of fail or note) and failures (level, error, the charged projects, an ownerProject when the failing code belongs to another project, and a verdict). A note is a finding that lives in a dependency of a judged project and does not fail the run. The Markdown lists the same findings under each project they are charged to, a note marked as not failing.

Who a finding is charged to is worked through, with the report each case prints, in four examples: a cycle, a forbidden edge, a dependent of either, and a container that cannot boot.

Packages

| Package | Role | | ------- | ---- | | @codependix/cli | Orchestrates the four graph builders and delivers their exports | | @codependix/boundaries | Builds each level's graph for a workspace, judges it against the declared rules, and reports what breaks them. --check boundaries delegates to it wholesale | | @codependix/configuration | Reads codependix.config.ts and resolves per-project export destinations and boundary rules | | @codependix/examples | Twenty-one subjects built to be graphed, each with the guide codependix renders from it | | @codependix/nx | Nx plugin: infers a per-project codependix-gate target that runs --check boundaries over the project and its Nx dependencies | | @codependix/nx-projects | Builds a project's Nx Neighborhood and the whole-workspace Workspace Graph | | @codependix/nestjs-modules | Explores a NestJS project's container and builds its module graph | | @codependix/file-imports | Builds a project's file-level import graph — a typescript module walking its own ts.Program, and a python module parsing import/from ... import statements |

Agent skills

Agent skills for coding agents working with codependix are published in @codependix/agents:

| Skill | Description | | ----- | ----------- | | codependix-export | Export dependency graphs and run boundary checks | | codependix-configure | Configure graph types, export destinations, and boundary rules in codependix.config.ts | | codependix-navigate | Query dependency paths and navigate package relationships | | codependix-triage | Triage boundary violations and report drift |

Examples

Every behavior described above — and every one that is not, because it lived only in a JSDoc comment until now — has a worked example rendered by the real tool in @codependix/examples:

  • README — one directory per example, each readable on its own, plus configuring a first export destination and adopting codependix in a workspace with no anchor blocks anywhere yet
  • AGENTS.md — a "codependix said X → open this example" table, weighted toward the refusals and toward --check staleness

Start

nx run codependix-cli:start

Test

nx run codependix-cli:vitest

👔 Conformetry

This project was generated from the nestjs-command-project conformetry template.

🕸️ Codependix

Dependency graphs exported by codependix, regenerated by nx run configuration:codependix:write.

Nx Neighborhood

graph LR
  codependix_boundaries["codependix-boundaries"]
  codependix_cli["codependix-cli"]
  codependix_configuration["codependix-configuration"]
  codependix_core["codependix-core"]
  codependix_examples["codependix-examples"]
  codependix_nx["codependix-nx"]
  codependix_output["codependix-output"]
  logging["logging"]
  codependix_cli --> codependix_boundaries
  codependix_cli --> codependix_configuration
  codependix_cli --> codependix_core
  codependix_cli --> codependix_output
  codependix_cli --> logging
  codependix_examples -.-> codependix_cli
  codependix_nx --> codependix_cli
  classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
  class codependix_cli subject

Dashed edges are dependencies Nx inferred from configuration rather than from code.

NestJS Module Graph

flowchart LR
  AnchorsModule
  BoundariesModule
  BoundaryCheckModule
  CombinedOutputModule
  ConfigModule([ConfigModule])
  ConfigurationModule
  DeliveryModule
  DiscoveryModule
  FileImportsWorkspaceGraphModule
  GraphRunModule
  InputModule
  LoggerModule([LoggerModule])
  MainModule
  MapModule
  ModuleGraphModule
  NeighborhoodModule
  NestjsModulesWorkspaceGraphModule
  NestjsProjectModule
  OverrideResolutionModule
  PathModule
  PathQueryModule
  ProjectGraphsModule
  PythonImportsModule
  PythonModule
  ReportingModule
  RunContextModule
  TypescriptModule
  WorkspaceGraphModule
  WorkspaceGraphsModule
  BoundaryCheckModule --> BoundariesModule
  BoundaryCheckModule --> ModuleGraphModule
  BoundaryCheckModule --> NeighborhoodModule
  BoundaryCheckModule --> NestjsProjectModule
  BoundaryCheckModule --> PythonModule
  BoundaryCheckModule --> TypescriptModule
  BoundaryCheckModule --> WorkspaceGraphModule
  CombinedOutputModule --> AnchorsModule
  CombinedOutputModule --> BoundaryCheckModule
  ConfigurationModule --> InputModule
  ConfigurationModule --> OverrideResolutionModule
  DeliveryModule --> AnchorsModule
  GraphRunModule --> NeighborhoodModule
  GraphRunModule --> ProjectGraphsModule
  GraphRunModule --> PythonImportsModule
  GraphRunModule --> WorkspaceGraphsModule
  MainModule --> DiscoveryModule
  MainModule --> MapModule
  MainModule --> PathModule
  MapModule --> BoundaryCheckModule
  MapModule --> CombinedOutputModule
  MapModule --> ConfigurationModule
  MapModule --> GraphRunModule
  MapModule --> ReportingModule
  MapModule --> RunContextModule
  PathModule --> ConfigurationModule
  PathModule --> PathQueryModule
  PathModule --> ReportingModule
  PathModule --> RunContextModule
  PathQueryModule --> FileImportsWorkspaceGraphModule
  PathQueryModule --> ModuleGraphModule
  PathQueryModule --> NestjsModulesWorkspaceGraphModule
  PathQueryModule --> NestjsProjectModule
  PathQueryModule --> PythonModule
  PathQueryModule --> TypescriptModule
  PathQueryModule --> WorkspaceGraphModule
  ProjectGraphsModule --> ConfigurationModule
  ProjectGraphsModule --> DeliveryModule
  ProjectGraphsModule --> ModuleGraphModule
  ProjectGraphsModule --> NeighborhoodModule
  ProjectGraphsModule --> NestjsProjectModule
  ProjectGraphsModule --> TypescriptModule
  PythonImportsModule --> ConfigurationModule
  PythonImportsModule --> DeliveryModule
  PythonImportsModule --> PythonModule
  ReportingModule --> BoundaryCheckModule
  RunContextModule --> ConfigurationModule
  RunContextModule --> NeighborhoodModule
  WorkspaceGraphModule --> NeighborhoodModule
  WorkspaceGraphsModule --> ConfigurationModule
  WorkspaceGraphsModule --> DeliveryModule
  WorkspaceGraphsModule --> FileImportsWorkspaceGraphModule
  WorkspaceGraphsModule --> ModuleGraphModule
  WorkspaceGraphsModule --> NestjsModulesWorkspaceGraphModule
  WorkspaceGraphsModule --> NestjsProjectModule
  WorkspaceGraphsModule --> PythonModule
  WorkspaceGraphsModule --> TypescriptModule
  WorkspaceGraphsModule --> WorkspaceGraphModule

Rounded modules are global: every module can inject them, so their edges are left out.

File Imports

graph LR
  file_callidescope_config_ts["callidescope.config.ts"]
  file_codependix_config_ts["codependix.config.ts"]
  file_codometer_config_ts["codometer.config.ts"]
  file_eslint_config_ts["eslint.config.ts"]
  file_src_codependix_cli_constants_ts["src/codependix-cli.constants.ts"]
  file_src_codependix_cli_main_end_to_end_test_ts["src/codependix-cli.main.end-to-end.test.ts"]
  file_src_codependix_cli_main_ts["src/codependix-cli.main.ts"]
  file_src_codependix_cli_main_unit_test_ts["src/codependix-cli.main.unit.test.ts"]
  file_src_codependix_cli_module_ts["src/codependix-cli.module.ts"]
  file_src_codependix_cli_repl_ts["src/codependix-cli.repl.ts"]
  file_src_codependix_cli_repl_unit_test_ts["src/codependix-cli.repl.unit.test.ts"]
  file_src_index_ts["src/index.ts"]
  file_src_index_unit_test_ts["src/index.unit.test.ts"]
  file_src_modules_map_map_command_integration_test_ts["src/modules/map/map.command.integration.test.ts"]
  file_src_modules_map_map_command_ts["src/modules/map/map.command.ts"]
  file_src_modules_map_map_command_unit_test_ts["src/modules/map/map.command.unit.test.ts"]
  file_src_modules_map_map_constants_ts["src/modules/map/map.constants.ts"]
  file_src_modules_map_map_module_ts["src/modules/map/map.module.ts"]
  file_src_modules_map_map_module_unit_test_ts["src/modules/map/map.module.unit.test.ts"]
  file_src_modules_map_map_types_ts["src/modules/map/map.types.ts"]
  file_src_modules_path_path_command_integration_test_ts["src/modules/path/path.command.integration.test.ts"]
  file_src_modules_path_path_command_ts["src/modules/path/path.command.ts"]
  file_src_modules_path_path_command_unit_test_ts["src/modules/path/path.command.unit.test.ts"]
  file_src_modules_path_path_constants_ts["src/modules/path/path.constants.ts"]
  file_src_modules_path_path_module_ts["src/modules/path/path.module.ts"]
  file_src_modules_path_path_module_unit_test_ts["src/modules/path/path.module.unit.test.ts"]
  file_src_modules_path_path_types_ts["src/modules/path/path.types.ts"]
  file_testing_mocks_ts["testing/mocks.ts"]
  file_testing_setup_ts["testing/setup.ts"]
  file_vite_config_ts["vite.config.ts"]
  file_vitest_config_ts["vitest.config.ts"]
  file_src_codependix_cli_main_end_to_end_test_ts --> file_src_codependix_cli_constants_ts
  file_src_codependix_cli_main_ts --> file_src_codependix_cli_module_ts
  file_src_codependix_cli_module_ts --> file_src_codependix_cli_constants_ts
  file_src_codependix_cli_module_ts --> file_src_modules_map_map_module_ts
  file_src_codependix_cli_module_ts --> file_src_modules_path_path_module_ts
  file_src_codependix_cli_repl_ts --> file_src_codependix_cli_module_ts
  file_src_index_unit_test_ts --> file_src_index_ts
  file_src_modules_map_map_command_integration_test_ts --> file_src_codependix_cli_module_ts
  file_src_modules_map_map_command_integration_test_ts --> file_src_modules_map_map_command_ts
  file_src_modules_map_map_command_ts --> file_src_modules_map_map_constants_ts
  file_src_modules_map_map_command_unit_test_ts --> file_src_modules_map_map_command_ts
  file_src_modules_map_map_module_ts --> file_src_modules_map_map_command_ts
  file_src_modules_map_map_module_unit_test_ts --> file_src_modules_map_map_command_ts
  file_src_modules_map_map_module_unit_test_ts --> file_src_modules_map_map_module_ts
  file_src_modules_path_path_command_integration_test_ts --> file_src_codependix_cli_module_ts
  file_src_modules_path_path_command_integration_test_ts --> file_src_modules_path_path_command_ts
  file_src_modules_path_path_command_integration_test_ts --> file_src_modules_path_path_types_ts
  file_src_modules_path_path_command_ts --> file_src_modules_path_path_constants_ts
  file_src_modules_path_path_command_ts --> file_src_modules_path_path_types_ts
  file_src_modules_path_path_command_unit_test_ts --> file_src_modules_path_path_command_ts
  file_src_modules_path_path_command_unit_test_ts --> file_src_modules_path_path_constants_ts
  file_src_modules_path_path_module_ts --> file_src_modules_path_path_command_ts
  file_src_modules_path_path_module_unit_test_ts --> file_src_modules_path_path_command_ts
  file_src_modules_path_path_module_unit_test_ts --> file_src_modules_path_path_module_ts

🔭 Callidescope

Call stacks traced through projects/ic-suite/codependix/codependix-cli, deepest first. Each frame shows what it takes, what it returns, and what its documentation says.

| Measure | Value | | --- | --- | | Callables | 48 | | Files | 19 | | Calls traced | 44 | | Call stacks | 19 | | Deepest stack | 15 | | Stacks through recursion | 0 | | Unfollowable calls | 2 |

Limits

What this project is judged against, as declared in its own callidescope.config.ts.

| Limit | Value | | --- | --- | | maximumDepth | 15 | | maximumBreadth | 7 |

Call stacks (depth)

1. MapCommand.run — depth ≥ 15 · decorated-method

🚀 MapCommand.run(_passedParameters: string[], options?: MapCommandOptions): Promise<void> [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:479]
   ↳ Runs whatever the command line asked for: exports, boundaries, or both.
  └─> MapCommand.runMode(…): Promise<void> [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:193]
     ↳ Runs the passes a resolved mode selected, and reports what they found.
    └─> MapCommand.runExports(context: GraphRunContext): Promise<MapRunResult> [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:174]
       ↳ Runs the export pass, warning when nothing was selected.
      └─> GraphRunService.run(context: GraphRunContext): Promise<MapRunResult> [projects/ic-suite/codependix/codependix-output/src/modules/graph-run/graph-run.service.ts:144]
         ↳ Runs every configured graph export against an already-resolved context.
        └─> GraphRunService.runPythonImportGraphs(context: GraphRunContext): GraphRunOutcome [projects/ic-suite/codependix/codependix-output/src/modules/graph-run/graph-run.service.ts:266]
           ↳ Builds and delivers every configured Python file-level import graph export.
          └─> PythonImportsService.runGraphs(context: GraphRunContext): GraphRunOutcome [projects/ic-suite/codependix/codependix-output/src/modules/python-imports/python-imports.service.ts:135]
             ↳ Builds and delivers every configured Python file-level import graph export.
            └─> PythonImportsService.runProject(…): ProjectRunResult [projects/ic-suite/codependix/codependix-output/src/modules/python-imports/python-imports.service.ts:99]
               ↳ Builds, renders, and delivers one project's Python import graph.
              └─> PythonService.buildGraph(project: PythonProject): PythonImportGraph [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python.service.ts:39]
                 ↳ Builds a Python project's internal file-level import Graph.
                └─> PythonImportGraphService.buildGraph(project: PythonProject): PythonImportGraph [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:180]
                   ↳ Builds a Python project's internal file-level import Graph.
                  └─> PythonImportGraphService.flatMap(…)(this: undefined, sourceFileName: string): PythonImportGraphEdge[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:185]
                    └─> PythonImportGraphService.collectEdgesForFile(…): PythonImportGraphEdge[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:64]
                       ↳ Collects every internal import edge one source file declares.
                      └─> PythonImportParserService.parseImportSpecifiers(source: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:158]
                         ↳ Parses every module-level import statement in a Python source file.
                        └─> PythonImportParserService.parseStatement(statement: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:126]
                           ↳ Parses one joined statement into the module(s) it names.
                          └─> PythonImportParserService.parseImportStatement(statement: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:105]
                             ↳ Parses a joined `import <specifiers>` statement.
                            └─> PythonImportParserService.map(…)(modulePath: string): { level: number; modulePath: string; } [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:122]

2. PathCommand.run — depth ≥ 12 · decorated-method

🚀 PathCommand.run(passedParameters: string[], options?: PathCommandOptions): Promise<void> [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:218]
   ↳ Runs the path query between two nodes across active graph levels.
  └─> PathQueryService.query(args: PathQueryArguments): Promise<CombinedPathResults> [projects/ic-suite/codependix/codependix-output/src/modules/path-query/path-query.service.ts:300]
     ↳ Queries every enabled graph type for a connecting path between two nodes.
    └─> PathQueryService.queryFileImports(args: PathQueryArguments): null | string[] [projects/ic-suite/codependix/codependix-output/src/modules/path-query/path-query.service.ts:118]
       ↳ Queries the file-imports workspace graph for a path between two files.
      └─> PathQueryService.map(…)(project: PythonProject): PythonImportGraph [projects/ic-suite/codependix/codependix-output/src/modules/path-query/path-query.service.ts:121]
        └─> PythonService.buildGraph(project: PythonProject): PythonImportGraph [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python.service.ts:39]
           ↳ Builds a Python project's internal file-level import Graph.
          └─> PythonImportGraphService.buildGraph(project: PythonProject): PythonImportGraph [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:180]
             ↳ Builds a Python project's internal file-level import Graph.
            └─> PythonImportGraphService.flatMap(…)(this: undefined, sourceFileName: string): PythonImportGraphEdge[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:185]
              └─> PythonImportGraphService.collectEdgesForFile(…): PythonImportGraphEdge[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-graph.service.ts:64]
                 ↳ Collects every internal import edge one source file declares.
                └─> PythonImportParserService.parseImportSpecifiers(source: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:158]
                   ↳ Parses every module-level import statement in a Python source file.
                  └─> PythonImportParserService.parseStatement(statement: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:126]
                     ↳ Parses one joined statement into the module(s) it names.
                    └─> PythonImportParserService.parseImportStatement(statement: string): PythonImportSpecifier[] [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:105]
                       ↳ Parses a joined `import <specifiers>` statement.
                      └─> PythonImportParserService.map(…)(modulePath: string): { level: number; modulePath: string; } [projects/ic-suite/codependix/codependix-file-imports/src/modules/python/python-import-parser.service.ts:122]

3. MapCommand.parseDirectory — depth 4 · decorated-method

🚀 MapCommand.parseDirectory(value: string | undefined): string [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:278]
   ↳ Parses the directory whose Nx workspace this run reads.
  └─> ConfigurationService.parsePathOption(value: string | undefined): string [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:297]
     ↳ Parses a path option that falls back to the working directory.
    └─> InputService.parsePathOption(value: string | undefined): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:87]
       ↳ Parses a path option that falls back to the working directory.
      └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
         ↳ Trims an optional string option, treating blank as absent.

4. MapCommand.parseExclude — depth 4 · decorated-method

🚀 MapCommand.parseExclude(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:294]
   ↳ Parses `--exclude`, a comma-separated list of globs overriding the configured `exclude`.
  └─> ConfigurationService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:282]
     ↳ Parses a comma-separated list option, dropping blank entries.
    └─> InputService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:54]
       ↳ Parses a comma-separated list option, dropping blank entries.
      └─> InputService.map(…)(entry: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:59]

5. MapCommand.parseInclude — depth 4 · decorated-method

🚀 MapCommand.parseInclude(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:333]
   ↳ Parses `--include`, a comma-separated list of globs overriding the configured `include`.
  └─> ConfigurationService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:282]
     ↳ Parses a comma-separated list option, dropping blank entries.
    └─> InputService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:54]
       ↳ Parses a comma-separated list option, dropping blank entries.
      └─> InputService.map(…)(entry: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:59]

6. PathCommand.parseDirectory — depth 4 · decorated-method

🚀 PathCommand.parseDirectory(value: string | undefined): string [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:102]
   ↳ Parses the directory whose Nx workspace this run reads.
  └─> ConfigurationService.parsePathOption(value: string | undefined): string [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:297]
     ↳ Parses a path option that falls back to the working directory.
    └─> InputService.parsePathOption(value: string | undefined): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:87]
       ↳ Parses a path option that falls back to the working directory.
      └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
         ↳ Trims an optional string option, treating blank as absent.

7. PathCommand.parseExclude — depth 4 · decorated-method

🚀 PathCommand.parseExclude(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:111]
   ↳ Parses `--exclude`, a comma-separated list of globs overriding the configured `exclude`.
  └─> ConfigurationService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:282]
     ↳ Parses a comma-separated list option, dropping blank entries.
    └─> InputService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:54]
       ↳ Parses a comma-separated list option, dropping blank entries.
      └─> InputService.map(…)(entry: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:59]

8. PathCommand.parseInclude — depth 4 · decorated-method

🚀 PathCommand.parseInclude(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:143]
   ↳ Parses `--include`, a comma-separated list of globs overriding the configured `include`.
  └─> ConfigurationService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:282]
     ↳ Parses a comma-separated list option, dropping blank entries.
    └─> InputService.parseCommaDelimitedOption(value: string | undefined): string[] [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:54]
       ↳ Parses a comma-separated list option, dropping blank entries.
      └─> InputService.map(…)(entry: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:59]

9. MapCommand.parseConfig — depth 3 · decorated-method

🚀 MapCommand.parseConfig(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:254]
   ↳ Parses the required configuration path from command-line input.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

10. MapCommand.parseFormat — depth 3 · decorated-method

🚀 MapCommand.parseFormat(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:318]
   ↳ Parses what `--format` prints to standard output.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

11. MapCommand.parseJsonOutput — depth 3 · decorated-method

🚀 MapCommand.parseJsonOutput(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:346]
   ↳ Parses `--json-output`, the path to write every active graph type's combined JSON data to, keyed by graph type name.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

12. MapCommand.parseMarkdownOutput — depth 3 · decorated-method

🚀 MapCommand.parseMarkdownOutput(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:359]
   ↳ Parses `--markdown-output`, the path to write every active graph type's combined, anchor-spliced Markdown diagram to.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

13. MapCommand.parseProjects — depth 3 · decorated-method

🚀 MapCommand.parseProjects(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:438]
   ↳ Parses the projects a run exports for beyond `include`. **Widening, and narrowing.** A named project is added to…
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

14. MapCommand.parseTags — depth 3 · decorated-method

🚀 MapCommand.parseTags(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:451]
   ↳ Parses the Nx tags a run exports for, matched exactly against a project's own tags.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

15. MapCommand.parseWrite — depth 3 · decorated-method

🚀 MapCommand.parseWrite(value: boolean | undefined): boolean [projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:461]
   ↳ Parses the `--write` flag from command-line input.
  └─> ConfigurationService.parseFlagOption(value: boolean | undefined): boolean [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:287]
     ↳ Parses a valueless boolean flag, which is present or it is not.
    └─> InputService.parseFlagOption(value: boolean | undefined): boolean [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:70]
       ↳ Parses a valueless boolean flag, which is present or it is not.

16. PathCommand.parseConfig — depth 3 · decorated-method

🚀 PathCommand.parseConfig(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:92]
   ↳ Parses the required configuration path from command-line input.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

17. PathCommand.parseFormat — depth 3 · decorated-method

🚀 PathCommand.parseFormat(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:134]
   ↳ Parses what `--format` prints to standard output. Defaults to Markdown when the flag was left off entirely.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

18. PathCommand.parseProjects — depth 3 · decorated-method

🚀 PathCommand.parseProjects(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:198]
   ↳ Parses the projects a query searches across beyond `include`.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

19. PathCommand.parseTags — depth 3 · decorated-method

🚀 PathCommand.parseTags(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:208]
   ↳ Parses the Nx tags a query searches across, matched exactly against project tags.
  └─> ConfigurationService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:292]
     ↳ Trims an optional string option, treating blank as absent.
    └─> InputService.parseOptionalOption(value: string | undefined): string | undefined [projects/ic-suite/codependix/codependix-configuration/src/modules/input/input.service.ts:75]
       ↳ Trims an optional string option, treating blank as absent.

Breadth

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | MapCommand.runMode | 7 | MapCommand.resolveContext, ConfigurationService.touchesFiles, MapCommand.runExports, BoundaryCheckService.run, MapCommand.runCombinedOutput, ReportingService.reportPassOutcomes, ReportingService.reportSuccess | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:193 | | PathCommand.run | 6 | PathCommand.validateInputs, RunContextService.build, ConfigurationService.requireConfigurationPath, PathQueryService.query, PathQueryService.render, ReportingService.reportFailure | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:218 | | MapCommand.resolveContext | 4 | RunContextService.build, ConfigurationService.requireConfigurationPath, ReportingService.reportUnmatchedSelection, RunContextService.findUnmatchedSelection | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:116 |

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | MapCommand.run | 4 | ConfigurationService.selectMode, CombinedOutputService.resolveFormat, MapCommand.runMode, ReportingService.reportFailure | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:479 | | MapCommand.runCombinedOutput | 2 | MapCommand.buildBoundaryReport, CombinedOutputService.run | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:141 | | MapCommand.runExports | 2 | GraphRunService.run, ReportingService.reportEmptySelection | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:174 | | MapCommand.buildBoundaryReport | 1 | MapCommand.map(…) | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:89 | | MapCommand.parseConfig | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:254 | | MapCommand.parseDirectory | 1 | ConfigurationService.parsePathOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:278 | | MapCommand.parseExclude | 1 | ConfigurationService.parseCommaDelimitedOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:294 | | MapCommand.parseFormat | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:318 | | MapCommand.parseInclude | 1 | ConfigurationService.parseCommaDelimitedOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:333 | | MapCommand.parseJsonOutput | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:346 | | MapCommand.parseMarkdownOutput | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:359 | | MapCommand.parseProjects | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:438 | | MapCommand.parseTags | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:451 | | MapCommand.parseWrite | 1 | ConfigurationService.parseFlagOption | projects/ic-suite/codependix/codependix-cli/src/modules/map/map.command.ts:461 | | PathCommand.validateInputs | 1 | PathQueryService.resolveFormat | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:56 | | PathCommand.parseConfig | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:92 | | PathCommand.parseDirectory | 1 | ConfigurationService.parsePathOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:102 | | PathCommand.parseExclude | 1 | ConfigurationService.parseCommaDelimitedOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:111 | | PathCommand.parseFormat | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:134 | | PathCommand.parseInclude | 1 | ConfigurationService.parseCommaDelimitedOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:143 | | PathCommand.parseProjects | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:198 | | PathCommand.parseTags | 1 | ConfigurationService.parseOptionalOption | projects/ic-suite/codependix/codependix-cli/src/modules/path/path.command.ts:208 |

⏲️ Codometer

Project

Lines of Code Repository Size Folders Source Files

Measured Targets

Compiled JavaScript Size

TypeScript

TypeScript Files Interfaces Generic Declarations Enums Decorators Doc Comments Static Methods

JavaScript

JavaScript Files Test Files External Packages Classes Functions Methods Sync Functions Async Functions Constants Imports Exported Symbols Comments Comment Lines TODO Comments

Python

Python Files Python Lines Python Classes Python Functions Python Protocols Python Constants Python Imports Python Decorators Docstrings Docstring Lines Python Comments Python Comment Lines

JSON

JSON Files JSON Lines JSON Objects JSON Arrays JSON Properties JSON Strings JSON Numbers JSON Booleans JSON Nulls JSON Items JSON Nodes JSON Max Depth

YAML

YAML Files YAML Lines YAML Documents YAML Mappings YAML Sequences YAML Keys YAML Scalars YAML Anchors YAML Aliases YAML Comments YAML Max Depth

TOML

TOML Files TOML Lines TOML Tables TOML Array Tables TOML Keys TOML Arrays TOML Comments

Shell

Shell Files Shell Lines Shell Functions Shell Variables Shell Exports Shell Conditionals Shell Loops Shell Pipelines Shebangs Shell Comments Shell Comment Lines

SQL

SQL Files SQL Lines SQL Statements SQL Selects SQL Inserts SQL Updates SQL Deletes SQL Creates SQL Joins SQL CTEs SQL Comments

HCL

HCL Files HCL Lines HCL Blocks HCL Resources HCL Variables HCL Outputs HCL Attributes HCL Interpolations HCL Comments

CSS

CSS Files CSS Lines CSS Rules CSS Selectors CSS Declarations CSS At Rules CSS Media Queries CSS Custom Properties CSS Comments

Conventions

Module Files Service Files Command Files Constants Files Types Files Utilities Files TypeORM Entities Unit Tests Integration Tests End To End Tests CSS Comment Budget HCL Comment Budget Python Comment Budget SQL Comment Budget TOML Comment Budget TypeScript Comment Budget YAML Comment Budget Shell Comment Budget

Jupyter

Notebooks Notebook Cells Code Cells Markdown Cells Raw Cells Executed Cells Cell Outputs Notebook Code Lines Notebook Classes Notebook Functions Notebook Imports Notebook Decorators Notebook Prose Lines Notebook Headings Notebook Links Notebook Images Notebook Code Blocks Notebook Properties Notebook Nodes Notebook Max Depth

Markdown

Markdown Files Markdown Lines H1 H2 H3 ![H4](https://img.shi