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/nx

v0.0.27

Published

Nx plugin inferring a per-project codependix boundary gate, judged over each project's Nx dependency closure

Readme

🕸️🧬 Codependix Nx

npm

An Nx plugin that checks codependix boundaries per project, built over each project's Nx dependency closure.

Canonical documentation for graph exports, configuration, boundary rules, and how a finding is charged to a project is in the @codependix/cli README. @codependix/cli needs no Nx plugin: --projects and --tags already narrow a --check boundaries run to the projects it judges, from a plain shell. This package is the one place in the toolchain that depends on @nx/devkit, and it adds what only a task runner can:

  • A gate on every project, so nx affected, --projects=tag:…, and the task cache do the selecting.
  • A failure named after the project whose boundary broke, rather than one workspace-wide task that fails for all of them.

Install

npm install --save-dev @codependix/nx

Register it in nx.json:

{
  "plugins": [
    {
      "plugin": "@codependix/nx",
      "options": {
        "configurationPath": "projects/configuration/codependix.config.ts",
        "gateTargetName": "codependix-gate"
      }
    }
  ]
}

| Option | Meaning | | ------ | ------- | | configurationPath | Required. Where the codependix configuration lives. Registering the plugin without it fails inference, naming the option; there is no default path | | gateTargetName | Name of the inferred gate target. codependix-gate when omitted |

The gate runs the command line under the @swc-node/register hooks, which this plugin depends on and registers itself — the workspace does not need to install them. The workspace root does need a tsconfig.json that emits decorator metadata: the hooks read it from the working directory, the boundary check boots NestJS containers from their TypeScript sources, and constructor injection reads that metadata.

Usage

The gate is inferred onto every project described by a project.json, except the workspace root, whose dependency closure is the whole workspace. A project Nx infers from a package.json alone gets no gate until it is given a project.json as well.

nx run lexico-entities:codependix-gate          # one project
nx run-many -t codependix-gate                  # every project
nx affected -t codependix-gate                  # only what changed

The gate

Each gate runs, from the workspace root:

node --import <file URL of @codependix/nx/loader> <@codependix/cli/main> \
  map --directory <workspaceRoot> --config <configuration> \
  --check boundaries --projects <project>

@codependix/nx/loader registers the @swc-node/register hooks resolved from this plugin's own location. The hook's own @swc-node/register/esm-register would resolve them from the working directory instead — the consumer's root, where a package manager such as pnpm does not expose this plugin's dependencies. The loader and the command line's entry are both resolved through package exports, so the same gate runs the TypeScript sources inside this workspace and the built dist/ files from an installed copy. Its output is streamed to the task as it arrives, and the task passes only when it exits zero.

A dependency's broken boundary is that dependency's gate's business. The graphs are built over the project and everything it depends on, so a cycle reaching into a dependency is still seen — but only a finding charged to the project fails its gate. One charged to a dependency is printed as a note, and fails the dependency's own gate instead.

The target is cached. Its inputs are the project's own sources and its dependencies' (default, ^default), the workspace configuration the rules live in, the project's own codependix.config.*, and the codependix command line itself — because no judged project depends on the code that decides its verdict, a change to that code would otherwise replay every cached pass:

  • When @codependix/cli is a package of the same workspace, two {workspaceRoot} inputs for it and for every workspace package it reaches through workspace: dependencies: <package>/package.json and <package>/src/**/!(*.test.*|*.spec.*) — the sources without their tests, so a test-only edit to the command line invalidates no gate beyond that package's own and its dependents'. File globs rather than { "input", "projects" } inputs, because Nx's affected computation follows {workspaceRoot} globs and ignores the latter — so a branch that changes the command line's sources selects every gate, and one that changes only its tests does not. The tests are excluded inside the glob rather than by a !-prefixed input, which the affected computation ignores.

  • When it is installed from a registry, an externalDependencies input naming it and the @codependix/* packages it depends on, so a version bump invalidates the cache. Nx hashes an external dependency together with everything it depends on, so the @codependix/* packages beneath those are covered too.

  • In either case, {workspaceRoot}/tsconfig.json and every tsconfig it extends. The loader (@swc-node/register) takes its compiler options — emitDecoratorMetadata among them, which decides how NestJS sources compile — from SWC_NODE_PROJECT or TS_NODE_PROJECT, else from the tsconfig.json in the gate's working directory, the workspace root, and never from a package's own. That file reaches its bases through extends, so inference follows the chain much as TypeScript resolves it — a string or an array, through every level, comments and trailing commas allowed, .json appended to a path naming no file, and a bare package name taken to its tsconfig.json or its exports (not to a tsconfig field in its manifest, which is rare):

    • A base in the workspace, by relative path or through a package of the same workspace, is another {workspaceRoot} input. So is one that is missing or cannot be parsed — the edit that fixes it invalidates the gate — though what it would extend cannot be followed, and Nx's logger warns naming it.
    • A base an installed package provides, such as @tsconfig/node24 — named by package or by a path into node_modules — is named in an externalDependencies input, so a version bump invalidates the cache, but only when the root package.json declares the package from a registry. Nx fails every task whose externalDependencies names a package missing from its graph, so one declared only by another package, or through workspace:, file:, link:, or portal:, is skipped with a warning instead: declare it in the root package.json to have it hashed.
    • A base outside the workspace, or a package base that resolves to no file, cannot be named by any input, and is skipped with a warning.

    A SWC_NODE_PROJECT or TS_NODE_PROJECT pointing elsewhere is not followed: add that file to the target's inputs yourself. Nor does a gitignored base, such as a generated framework tsconfig, invalidate anything: it is named, but Nx's file map leaves ignored files out.

Each workspace package is resolved on its own, through its entry rather than its manifest, so one that cannot be resolved costs only its own inputs: Nx's logger warns naming it, and every other package keeps its inputs. If the command line itself cannot be resolved while the graph is built, the tool inputs are left out and the warning names it — never failing the graph. The tsconfig chain is resolved apart from the command line, so either failing keeps the other's inputs. The target declares no configurations, so an aggregator run with --configuration=check falls through to the defaults.

A gate whose projects or tags select anything other than its own project is never replayed from the cache. Its inputs cover its own project and that project's dependencies, not the projects such a run judges, so a hash built from them could replay a pass after an edit to the very project that now fails. The executor's hasher gives such a run a hash no other run shares, whether the selection came from the command line, the target's options, or a configuration; a gate judging only its own project — including one whose projects names exactly that project — is hashed from its inputs exactly as Nx would hash it. Because the target has a hasher, nx show target inputs prints a custom-hasher warning instead of a file list — the inputs above still decide the hash.

Executor options

nx run lexico-api:codependix-gate --projects=lexico-entities,lexico-api
nx run logging:codependix-gate --tags=type:package --dependencies=false

| Option | Meaning | | ------ | ------- | | projects | Nx project names to judge, replacing the target's own project | | tags | Nx project tags, judging every project carrying any of them | | dependencies | Build over the judged projects' Nx dependency closure. true by default; false builds over the judged projects alone | | configuration | Overrides the registered configuration path. Required if the registration names none; a blank value is refused |

Nx hands plugin options to inference and to nothing else, so a gate given no configuration reads this plugin's configurationPath registration back out of nx.json, so the file a gate reads is the file its cache inputs named. A gate with neither fails, naming the option: no path is assumed. The executor option is not Nx's own --configuration flag, which selects a target configuration such as check or write.

Packages

| Package | Role | | ------- | ---- | | @codependix/nx | Nx plugin: a per-project boundary gate, built over the Nx dependency closure | | @codependix/cli | Orchestrates the four graph builders, delivers their exports, and runs --check boundaries | | @codependix/boundaries | Builds each level's graph, judges it against the declared rules, and charges each finding to a project | | @codependix/configuration | Reads codependix.config.ts and resolves per-project export destinations and boundary rules |

Test

nx run codependix-nx:vitest

Contributing

nx run codependix-nx:lint-code --configuration=check

License

MIT — see LICENSE.

👔 Conformetry

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

🕸️ Codependix

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

Nx Neighborhood

graph LR
  codependix_cli["codependix-cli"]
  codependix_configuration["codependix-configuration"]
  codependix_nx["codependix-nx"]
  codependix_nx --> codependix_cli
  codependix_nx --> codependix_configuration
  classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
  class codependix_nx subject

NestJS Module Graph

flowchart LR
  ConfigurationModule
  GateModule
  InputModule
  MainModule
  OverrideResolutionModule
  PluginModule
  ConfigurationModule --> InputModule
  ConfigurationModule --> OverrideResolutionModule
  GateModule --> ConfigurationModule
  GateModule --> PluginModule
  MainModule --> GateModule
  MainModule --> PluginModule
  PluginModule --> ConfigurationModule

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_nx_module_ts["src/codependix-nx.module.ts"]
  file_src_executors_gate_executor_integration_test_ts["src/executors/gate/executor.integration.test.ts"]
  file_src_executors_gate_executor_ts["src/executors/gate/executor.ts"]
  file_src_executors_gate_executor_types_ts["src/executors/gate/executor.types.ts"]
  file_src_executors_gate_executor_unit_test_ts["src/executors/gate/executor.unit.test.ts"]
  file_src_executors_gate_hasher_ts["src/executors/gate/hasher.ts"]
  file_src_executors_gate_hasher_unit_test_ts["src/executors/gate/hasher.unit.test.ts"]
  file_src_executors_gate_loader_unit_test_ts["src/executors/gate/loader.unit.test.ts"]
  file_src_index_ts["src/index.ts"]
  file_src_index_unit_test_ts["src/index.unit.test.ts"]
  file_src_modules_gate_gate_constants_ts["src/modules/gate/gate.constants.ts"]
  file_src_modules_gate_gate_module_ts["src/modules/gate/gate.module.ts"]
  file_src_modules_gate_gate_service_ts["src/modules/gate/gate.service.ts"]
  file_src_modules_gate_gate_service_unit_test_ts["src/modules/gate/gate.service.unit.test.ts"]
  file_src_modules_gate_gate_types_ts["src/modules/gate/gate.types.ts"]
  file_src_modules_plugin_plugin_context_utilities_ts["src/modules/plugin/plugin-context.utilities.ts"]
  file_src_modules_plugin_plugin_context_utilities_unit_test_ts["src/modules/plugin/plugin-context.utilities.unit.test.ts"]
  file_src_modules_plugin_plugin_inputs_utilities_ts["src/modules/plugin/plugin-inputs.utilities.ts"]
  file_src_modules_plugin_plugin_inputs_utilities_unit_test_ts["src/modules/plugin/plugin-inputs.utilities.unit.test.ts"]
  file_src_modules_plugin_plugin_tsconfig_utilities_ts["src/modules/plugin/plugin-tsconfig.utilities.ts"]
  file_src_modules_plugin_plugin_tsconfig_utilities_unit_test_ts["src/modules/plugin/plugin-tsconfig.utilities.unit.test.ts"]
  file_src_modules_plugin_plugin_constants_ts["src/modules/plugin/plugin.constants.ts"]
  file_src_modules_plugin_plugin_module_ts["src/modules/plugin/plugin.module.ts"]
  file_src_modules_plugin_plugin_service_ts["src/modules/plugin/plugin.service.ts"]
  file_src_modules_plugin_plugin_service_unit_test_ts["src/modules/plugin/plugin.service.unit.test.ts"]
  file_src_modules_plugin_plugin_types_ts["src/modules/plugin/plugin.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_nx_module_ts --> file_src_modules_gate_gate_module_ts
  file_src_codependix_nx_module_ts --> file_src_modules_plugin_plugin_module_ts
  file_src_executors_gate_executor_integration_test_ts --> file_src_executors_gate_executor_ts
  file_src_executors_gate_executor_integration_test_ts --> file_src_executors_gate_executor_types_ts
  file_src_executors_gate_executor_ts --> file_src_executors_gate_executor_types_ts
  file_src_executors_gate_executor_ts --> file_src_modules_plugin_plugin_context_utilities_ts
  file_src_executors_gate_executor_types_ts --> file_src_modules_gate_gate_types_ts
  file_src_executors_gate_executor_unit_test_ts --> file_src_executors_gate_executor_ts
  file_src_executors_gate_executor_unit_test_ts --> file_src_modules_gate_gate_service_ts
  file_src_executors_gate_hasher_ts --> file_src_modules_gate_gate_types_ts
  file_src_executors_gate_hasher_ts --> file_src_modules_plugin_plugin_context_utilities_ts
  file_src_executors_gate_hasher_unit_test_ts --> file_src_executors_gate_hasher_ts
  file_src_executors_gate_hasher_unit_test_ts --> file_src_modules_gate_gate_service_ts
  file_src_executors_gate_hasher_unit_test_ts --> file_src_modules_gate_gate_types_ts
  file_src_index_ts --> file_src_modules_plugin_plugin_context_utilities_ts
  file_src_index_ts --> file_src_modules_plugin_plugin_inputs_utilities_ts
  file_src_index_ts --> file_src_modules_plugin_plugin_tsconfig_utilities_ts
  file_src_index_ts --> file_src_modules_plugin_plugin_constants_ts
  file_src_index_unit_test_ts --> file_src_index_ts
  file_src_index_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_index_unit_test_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_gate_gate_module_ts --> file_src_modules_gate_gate_service_ts
  file_src_modules_gate_gate_module_ts --> file_src_modules_plugin_plugin_module_ts
  file_src_modules_gate_gate_service_ts --> file_src_modules_gate_gate_constants_ts
  file_src_modules_gate_gate_service_ts --> file_src_modules_gate_gate_types_ts
  file_src_modules_gate_gate_service_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_gate_gate_service_unit_test_ts --> file_src_modules_gate_gate_service_ts
  file_src_modules_gate_gate_service_unit_test_ts --> file_src_modules_gate_gate_types_ts
  file_src_modules_gate_gate_service_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_codependix_nx_module_ts
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_gate_gate_service_ts
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_plugin_plugin_constants_ts
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_plugin_plugin_context_utilities_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_context_utilities_unit_test_ts --> file_src_modules_gate_gate_service_ts
  file_src_modules_plugin_plugin_context_utilities_unit_test_ts --> file_src_modules_plugin_plugin_context_utilities_ts
  file_src_modules_plugin_plugin_context_utilities_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_plugin_plugin_inputs_utilities_ts --> file_src_modules_plugin_plugin_constants_ts
  file_src_modules_plugin_plugin_inputs_utilities_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_inputs_utilities_unit_test_ts --> file_src_modules_plugin_plugin_inputs_utilities_ts
  file_src_modules_plugin_plugin_inputs_utilities_unit_test_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_tsconfig_utilities_ts --> file_src_modules_plugin_plugin_inputs_utilities_ts
  file_src_modules_plugin_plugin_tsconfig_utilities_ts --> file_src_modules_plugin_plugin_constants_ts
  file_src_modules_plugin_plugin_tsconfig_utilities_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_tsconfig_utilities_unit_test_ts --> file_src_modules_plugin_plugin_tsconfig_utilities_ts
  file_src_modules_plugin_plugin_tsconfig_utilities_unit_test_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_module_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_plugin_plugin_service_ts --> file_src_modules_plugin_plugin_constants_ts
  file_src_modules_plugin_plugin_service_ts --> file_src_modules_plugin_plugin_types_ts
  file_src_modules_plugin_plugin_service_unit_test_ts --> file_src_modules_plugin_plugin_service_ts
  file_src_modules_plugin_plugin_types_ts --> file_src_modules_plugin_plugin_constants_ts

🔭 Callidescope

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

| Measure | Value | | --- | --- | | Callables | 74 | | Files | 22 | | Calls traced | 90 | | Call stacks | 3 | | Deepest stack | 6 | | Stacks through recursion | 0 | | Unfollowable calls | 6 |

Limits

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

| Limit | Value | | --- | --- | | maximumDepth | 6 | | maximumBreadth | 5 |

Call stacks (depth)

1. anonymous — depth ≥ 6 · orphan-root

🚀 anonymous(…): Promise<CreateNodesResultArray> [projects/ic-suite/codependix/codependix-nx/src/index.ts:45]
  └─> resolveToolInputs(args: ResolveToolInputsArguments): InferredInput[] [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:65]
     ↳ The cache inputs that tie a gate to the codependix command line it runs.
    └─> resolveWorkspaceInputs(…): InferredInput[] [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:209]
       ↳ Globs over the sources and manifest of the command line and of every workspace package it reaches, sorted so the cache…
      └─> collectWorkspacePackages(cliDirectory: string): WorkspacePackages [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:103]
         ↳ Collects a workspace package and every workspace package it reaches, development dependencies included: a package this…
        └─> readDependencies(directory: string): [string, unknown][] [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:41]
           ↳ Every dependency a package's manifest declares, in either map.
          └─> readManifest(directory: string): Record<string, unknown> [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:173]
             ↳ Reads a package directory's manifest, or an empty one when there is none or it cannot be parsed — which leaves that…

2. gateExecutor — depth ≥ 6 · orphan-root

🚀 gateExecutor(…): Promise<{ success: boolean; }> [projects/ic-suite/codependix/codependix-nx/src/executors/gate/executor.ts:21]
   ↳ Fails one project's task when a codependix boundary finding is charged to it.
  └─> GateService.run(args: RunGateArguments): Promise<boolean> [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:293]
     ↳ Runs one gate, and settles on whether it passed.
    └─> GateService.resolveConfigurationPath(args: { configuration?: string | undefined; workspaceRoot: string; }): string [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:246]
       ↳ Resolves the configuration path one gate runs with.
      └─> PluginService.resolvePluginOptions(args: ResolvePluginOptionsArguments): CodependixPluginOptions [projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:156]
         ↳ Resolves the effective plugin options from an untrusted value. `configurationPath` is required and never searched for:…
        └─> ConfigurationService.requireConfigurationPath(configurationPath: string | undefined, surface: string): string [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.service.ts:309]
           ↳ Returns the main configuration path, refusing one that is missing.
          └─> ConfigurationPathRequiredError.constructor(surface: string): ConfigurationPathRequiredError [projects/ic-suite/codependix/codependix-configuration/src/modules/configuration/configuration.constants.ts:304]

3. gateHasher — depth 6 · orphan-root

🚀 gateHasher(task: Task, context: GateHasherContext): Promise<Hash> [projects/ic-suite/codependix/codependix-nx/src/executors/gate/hasher.ts:17]
   ↳ Hashes one gate task for Nx's cache.
  └─> GateService.hashTask(args: HashGateTaskArguments): Promise<Hash> [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:220]
     ↳ Hashes one gate task for Nx's cache — or, when it judges any project but its own, gives it a hash no run shares, so its…
    └─> GateService.judgesOwnProject(args: HashGateTaskArguments): boolean [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:60]
       ↳ Whether a gate task judges exactly the project it belongs to.
      └─> GateService.resolveSelection(…): GateSelection [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:272]
         ↳ Resolves which projects one gate judges.
        └─> GateService.readNameList(value: readonly string[] | undefined): string[] [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:86]
           ↳ Reads a list of names out of an executor's options.
          └─> GateService.filter(…)(entry: string): boolean [projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:90]

Breadth

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | resolveToolInputs | 5 | locatePackage, warnUnresolved, isInsideWorkspace, resolveWorkspaceInputs, resolveExternalInputs | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:65 | | anonymous | 5 | resolvePluginService, PluginService.inferTargets, resolveToolInputs, resolveTsconfigInputs, flatMap(…) | projects/ic-suite/codependix/codependix-nx/src/index.ts:45 | | PluginService.readRegisteredOptions | 4 | PluginService.toRecord, PluginService.isUnknownArray, PluginService.find(…), PluginService.map(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:134 |

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | GateService.resolveConfigurationPath | 4 | ConfigurationService.requireConfigurationPath, PluginService.resolvePluginOptions, PluginService.readRegisteredOptions, GateService.readNxConfiguration | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:246 | | GateService.run | 4 | GateService.buildCommandArguments, GateService.resolveSelection, GateService.resolveConfigurationPath, GateService.spawnCommandLine | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:293 | | collectWorkspacePackages | 4 | map(…), filter(…), readDependencies, locatePackage | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:103 | | followExtendsChain | 4 | readRegistryDependencies, readExtends, resolveExtendedBase, warnSkipped | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:89 | | resolveExtendedBase | 4 | resolvePathBase, resolvePackageBase, isInsideWorkspace, readInstalledPackageName | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:204 | | PluginService.selectProjectRoots | 3 | PluginService.filter(…), PluginService.map(…), PluginService.filter(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:65 | | PluginService.inferTargets | 3 | PluginService.resolvePluginOptions, PluginService.map(…), PluginService.selectProjectRoots | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:99 | | PluginService.resolvePluginOptions | 3 | PluginService.toRecord, ConfigurationService.requireConfigurationPath, PluginService.readString | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:156 | | GateService.judgesOwnProject | 3 | GateService.readTaskOptions, GateService.resolveSelection, GateService.toNameList | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:60 | | GateService.readNameList | 3 | GateService.filter(…), GateService.map(…), GateService.flatMap(…) | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:86 | | GateService.anonymous | 3 | GateService.on(…), GateService.on(…), GateService.on(…) | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:148 | | resolveExternalInputs | 3 | filter(…), map(…), readDependencies | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:197 | | resolveWorkspaceInputs | 3 | collectWorkspacePackages, warnUnresolved, flatMap(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:209 | | readRegistryDependencies | 3 | map(…), filter(…), readDependencies | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:180 | | readDependencies | 2 | readManifest, toRecord | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:41 | | resolveTsconfigInputs | 2 | followExtendsChain, map(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:42 | | gateExecutor | 2 | resolveGateService, GateService.run | projects/ic-suite/codependix/codependix-nx/src/executors/gate/executor.ts:21 | | gateHasher | 2 | resolveGateService, GateService.hashTask | projects/ic-suite/codependix/codependix-nx/src/executors/gate/hasher.ts:17 | | PluginService.map(…) | 1 | PluginService.toRecord | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin.service.ts:142 | | GateService.readTaskOptions | 1 | GateService.toRecord | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:116 | | GateService.spawnCommandLine | 1 | GateService.anonymous | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:144 | | GateService.toNameList | 1 | GateService.filter(…) | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:167 | | GateService.hashTask | 1 | GateService.judgesOwnProject | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:220 | | GateService.resolveSelection | 1 | GateService.readNameList | projects/ic-suite/codependix/codependix-nx/src/modules/gate/gate.service.ts:272 | | resolveGateService | 1 | resolvePluginContext | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:16 | | resolvePluginService | 1 | resolvePluginContext | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-context.utilities.ts:23 | | locatePackage | 1 | readManifest | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:145 | | flatMap(…) | 1 | map(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-inputs.utilities.ts:224 | | readExtends | 1 | filter(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:133 | | filter(…) | 1 | some(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:184 | | resolvePackageBase | 1 | flatMap(…) | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:247 | | warnSkipped | 1 | describeSkippedBase | projects/ic-suite/codependix/codependix-nx/src/modules/plugin/plugin-tsconfig.utilities.ts:291 |

⏲️ Codometer

Project

Lines of Code Repository Size Folders Source Files

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 H5 H6 Paragraphs Lists List Items Task List Items Tables Table Rows Links Images Code Blocks Inline Code Block Quotes Thematic Breaks