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

@conformetry/languages

v0.0.45

Published

Multi-language file comparison and syntax validators for Conformetry

Readme

👔 Conformetry Languages

npm

Every Language Conformetry compares files with, behind one import — plus the resolution that decides which of them a run needs.

npm install --save-dev @conformetry/languages

The Languages

A Language is the comparison engine for one family of file types. Each is a module of its own, exposing a NestJS module and a service, and each declares the extensions it claims.

| Module | Claims | What it compares | | ------ | ------ | ---------------- | | json | .json, .jsonc | Every key and value the template declares, addressed by JSON path rather than line number | | jupyter | .ipynb | A notebook's envelope, markdown cells, and code cells, by delegating to json, markdown, and python | | markdown | .md | The document's syntax tree — headings, lists, links — rather than its rendered text | | python | .py | Python's own abstract syntax tree, through the interpreter shipped in src/python/ | | text | .txt | Every template line, duplicate-aware and order-independent | | typescript | .ts, .tsx | Declarations, signatures, and comments, through the TypeScript compiler |

Every one of them is a lower bound rather than an exact specification: an instance may add what its template does not mention.

Resolution and the Fallback

LanguagesService takes the extensions a run's templates declare and returns the Languages that claim them, so a repository of JSON never reports a TypeScript result it had nothing to say about.

An extension no Language claims is not skipped. It is routed to the Fallback — the text Language, widened to also claim those extensions, and compared line by line. That is what stops a .toml or a .cfg in a template from going unchecked, and it is why the text Language is a floor under every run rather than one option among six.

Registering a Language is a single step: add it to claimingLanguages in LanguagesService. Its own descriptor says which extensions it claims, so there is no second list to keep in step.

The Python bridge

python/ holds a small Python package, and PythonBridgeService spawns python3 against it, because Python's syntax tree is only available from Python. The path is resolved from the service's own module location rather than from a working directory, so the bridge is found the same way whether conformetry runs from a checkout or from node_modules.

The interpreter is spawned inside a method, never at module scope, so importing this package on a machine without python3 is harmless. A missing interpreter surfaces as a reported Difference on the .py files — visible, rather than mistaken for conformance.

Exports

LanguagesModule and LanguagesService, each Language's module and service, and the helper services the Languages are built from — JsonComparisonService, JupyterNotebookService, MarkdownNodesService, MarkdownTreeService, PythonBridgeService, TypescriptCommentsService, TypescriptNodesService, and TypescriptTreeService.

A host almost always wants LanguagesModule, which imports and re-exports all six.

Why one package

These six Languages were six packages until the consolidation recorded in ADR 0006. That record is the place to read what installing this package costs a consumer who needs only one Language, why paying it won, and which three alternatives were weighed and rejected.

Test

nx run conformetry-languages:vitest

License

MIT — see LICENSE.

👔 Conformetry

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

🔭 Callidescope

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

| Measure | Value | | --- | --- | | Callables | 166 | | Files | 55 | | Calls traced | 216 | | Call stacks | 15 | | Deepest stack | 13 | | Stacks through recursion | 3 | | Unfollowable calls | 0 |

Limits

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

| Limit | Value | | --- | --- | | maximumDepth | 13 | | maximumBreadth | 11 |

Call stacks (depth)

1. JupyterService.validateDocument — depth 13 · orphan-root

🚀 JupyterService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:153]
   ↳ Reports every notebook difference: envelope, missing cells, cell contents.
  └─> JupyterService.map(…)(…): { error: { differenceType: "code"; expected: string; fix: string; language: "python"; message: string; weight: number; }; weight: number; } [projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:173]
    └─> JupyterService.weighMissingCell(args: { cell: PairedCells; document: PreparedValidationDocument; }): number [projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:140]
       ↳ Weighs a cell the notebook does not have.
      └─> JupyterService.validateCell(…): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:90]
         ↳ Validates one paired cell with the validator matching its kind.
        └─> MarkdownService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown.service.ts:48]
           ↳ Reports every markdown structure the template requires and the file lacks.
          └─> MarkdownTreeService.compareContainer(args: CompareNodeArguments): CompareNodeResult (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:80]
             ↳ Matches a container node, then descends into it.
            └─> MarkdownTreeService.map(…)(…): { captures: { [x: string]: string; }; differences: MarkdownComparisonError[]; lastMatchedNode: MarkdownNode; totalWeight: number; } (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:107]
              └─> MarkdownTreeService.compareChildren(args: CompareChildrenArguments): CompareChildrenResult (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:170]
                 ↳ Compares one level of two trees, descending into containers.
                └─> MarkdownTreeService.compareLeaf(args: CompareNodeArguments): CompareNodeResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135]
                   ↳ Matches a leaf node on its own identity, without descending.
                  └─> MarkdownTreeService.findCandidates(args: CompareNodeArguments): MarkdownNode[] [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:156]
                     ↳ Finds every instance sibling satisfying the template node.
                    └─> MarkdownTreeService.filter(…)(instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:157]
                      └─> MarkdownNodesService.capture(…): Record<string, string> | undefined [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116]
                         ↳ Matches an instance node against a template node, returning what any placeholder value in the template node's text…
                        └─> MarkdownNodesService.readText(node: MarkdownNode): string [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
                           ↳ Reads a node's rendered plain text.

2. JsonService.validateDocument — depth 12 · orphan-root

🚀 JsonService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json.service.ts:39]
   ↳ Reports every key or value the template requires and the instance lacks.
  └─> JsonComparisonService.compareArrayItem(…): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:103]
     ↳ Matches one required array entry against the instance array.
    └─> JsonComparisonService.map(…)(instanceItem: JsonValue, index: number): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:158]
      └─> JsonComparisonService.compare(args: CompareJsonArguments): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:304]
         ↳ Compares a template value against an instance value, returning every way the instance fails to contain what the…
        └─> JsonComparisonService.compareArrays(…): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:177]
           ↳ Compares two arrays.
          └─> JsonComparisonService.map(…)(templateItem: JsonValue): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:184]
            └─> JsonComparisonService.compareObjects(…): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:191]
               ↳ Compares two objects, requiring every template key to be present.
              └─> JsonComparisonService.map(…)([key, templateValue]: [string, JsonValue]): JsonComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:200]
                └─> JsonComparisonService.countNodes(value: JsonValue): number (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:243]
                   ↳ Counts a JSON value and every value nested inside it.
                  └─> JsonComparisonService.reduce(…)(total: number, item: JsonValue): number (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:245]
                    └─> JsonComparisonService.reduce(…)(total: number, nested: JsonValue): number (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:251]
                      └─> JsonComparisonService.isJsonObject(value: JsonValue): value is Record<string, JsonValue> [projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:271]
                         ↳ Returns whether a value is a plain JSON object.

3. TypescriptService.validateDocument — depth 12 · orphan-root

🚀 TypescriptService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:170]
   ↳ Reports every declaration and comment the template requires.
  └─> TypescriptService.validateStructure(…): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:107]
     ↳ Compares the syntax trees and describes each missing declaration.
    └─> TypescriptTreeService.compareBestCandidate(…): TreeComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:69]
       ↳ Descends into whichever candidate explains the template best.
      └─> TypescriptTreeService.map(…)(…): { captures: { [x: string]: string; }; differences: TypescriptComparisonError[]; totalWeight: number; } (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:74]
        └─> TypescriptTreeService.compareTree(args: CompareTreeArguments): TreeComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:179]
           ↳ Compares one level of two trees, descending into every match.
          └─> TypescriptTreeService.map(…)(templateChild: Node): TreeComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:186]
            └─> TypescriptTreeService.compareChild(…): TreeComparison (cycle) [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:95]
               ↳ Matches one template child against the instance's children.
              └─> TypescriptTreeService.flatMap(…)(…): { captures: Record<string, string>; node: Node; }[] [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:101]
                └─> TypescriptTreeService.matchKey(…): Record<string, string> | undefined [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:144]
                   ↳ Matches a template node on its key, returning what any placeholder value in the key captured, or `undefined` when the…
                  └─> TypescriptNodesService.readKey(node: Node): null | string [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:201]
                     ↳ Reads a node's identity, or `null` when it has none.
                    └─> TypescriptNodesService.readDecoratorKey(node: Decorator): null | string [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:75]
                       ↳ Keys a decorator by its callee, so `@Injectable()` matches `@Injectable`.
                      └─> TypescriptNodesService.buildDottedName(callee: Node): null | string [projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:46]
                         ↳ Builds a dotted name such as `Nest.Injectable` from a callee expression.

4. PythonService.validateDocument — depth 6 · orphan-root

🚀 PythonService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python.service.ts:38]
   ↳ Reports every declaration and comment the template requires.
  └─> PythonBridgeService.validatePythonSource(args: RunPythonBridgeArguments): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:162]
     ↳ Compares one Python source against its rendered template.
    └─> PythonBridgeService.map(…)(error: Readonly<Record<string, unknown>>): ConformetryDifference [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:187]
      └─> PythonBridgeService.toConformetryDifference(error: PythonBridgeError): ConformetryDifference [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:134]
         ↳ Maps one snake_case bridge error onto the shared error shape.
        └─> PythonBridgeService.readValues(error: PythonBridgeError): Partial<ConformetryDifference> [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:123]
           ↳ Reads the optional expected and actual values.
          └─> PythonBridgeService.readString(error: PythonBridgeError, key: string): string | undefined [projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:113]
             ↳ Narrows an untrusted string field from the bridge payload.

5. LanguagesService.validateDocument — depth 5 · orphan-root

🚀 LanguagesService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:80]
  └─> TextService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:113]
     ↳ Reports every template line missing from the instance.
    └─> TextService.findMissingLines(document: PreparedValidationDocument): LineComparison [projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:74]
       ↳ Finds template lines the instance does not supply often enough.
      └─> TextService.captureLine(…): Record<string, string> | undefined [projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:39]
         ↳ Captures what a template line's placeholder values stand for, taking the first unclaimed instance line that fits it as…
        └─> capturePlaceholderValues(…): Record<string, string> | undefined [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.utilities.ts:21]
           ↳ Reads what each placeholder value in `templateText` stands for in `instanceText`.

6. MarkdownNodesService.table — depth 3 · orphan-root

🚀 MarkdownNodesService.table(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:69]
  └─> MarkdownNodesService.readColumnCount(node: MarkdownNode): number [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:92]
     ↳ Counts a table's columns from its first row.
    └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:185]
       ↳ Reads a node's children, or an empty list for a leaf.

7. MarkdownNodesService.matches — depth 3 · orphan-root

🚀 MarkdownNodesService.matches(args: { instanceNode: MarkdownNode; templateNode: MarkdownNode; }): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:177]
   ↳ Returns whether an instance node satisfies a template node.
  └─> MarkdownNodesService.capture(…): Record<string, string> | undefined [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116]
     ↳ Matches an instance node against a template node, returning what any placeholder value in the template node's text…
    └─> MarkdownNodesService.readText(node: MarkdownNode): string [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
       ↳ Reads a node's rendered plain text.

8. MarkdownNodesService.code — depth 2 · orphan-root

🚀 MarkdownNodesService.code(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:36]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

9. MarkdownNodesService.heading — depth 2 · orphan-root

🚀 MarkdownNodesService.heading(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:42]
  └─> MarkdownNodesService.readText(node: MarkdownNode): string [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
     ↳ Reads a node's rendered plain text.

10. MarkdownNodesService.html — depth 2 · orphan-root

🚀 MarkdownNodesService.html(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:48]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

11. MarkdownNodesService.image — depth 2 · orphan-root

🚀 MarkdownNodesService.image(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:51]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

12. MarkdownNodesService.inlineCode — depth 2 · orphan-root

🚀 MarkdownNodesService.inlineCode(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:57]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

13. MarkdownNodesService.link — depth 2 · orphan-root

🚀 MarkdownNodesService.link(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:60]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

14. MarkdownNodesService.tableRow — depth 2 · orphan-root

🚀 MarkdownNodesService.tableRow(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:75]
  └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:185]
     ↳ Reads a node's children, or an empty list for a leaf.

15. MarkdownNodesService.text — depth 2 · orphan-root

🚀 MarkdownNodesService.text(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:81]
  └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
     ↳ Compares two optional string fields, treating absent as empty.

Breadth

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | JupyterService.validateDocument | 11 | JupyterNotebookService.parseNotebook, JupyterNotebookService.pairCells, JsonComparisonService.compare, JupyterService.readEnvelope, JupyterService.map(…), JupyterService.map(…), JupyterService.map(…), JupyterService.flatMap(…), JupyterService.reduce(…), JupyterService.map(…), JupyterService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:153 | | JsonComparisonService.compareArrayItem | 8 | JsonComparisonService.formatPath, JsonComparisonService.countNodes, JsonComparisonService.isJsonPrimitive, JsonComparisonService.find(…), JsonComparisonService.map(…), JsonComparisonService.buildError, JsonComparisonService.pickClosestMatch, JsonComparisonService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:103 | | JsonComparisonService.compare | 8 | JsonComparisonService.countContainer, JsonComparisonService.compareArrays, JsonComparisonService.isJsonObject, JsonComparisonService.compareObjects, JsonComparisonService.countNodes, JsonComparisonService.captureString, JsonComparisonService.formatPath, JsonComparisonService.buildError | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:304 |

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | MarkdownTreeService.compareContainer | 6 | MarkdownTreeService.findCandidates, MarkdownTreeService.buildError, MarkdownNodesService.readChildren, MarkdownTreeService.captureFirst, MarkdownTreeService.reduce(…), MarkdownTreeService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:80 | | PythonBridgeService.toConformetryDifference | 6 | PythonBridgeService.readValues, PythonBridgeService.readLocations, DifferencesService.resolveDifferenceType, PythonBridgeService.readString, DifferencesService.resolveErrorLanguage, PythonBridgeService.readNumber | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:134 | | TypescriptNodesService.readKey | 6 | TypescriptNodesService.readImportKey, TypescriptNodesService.readExportKey, TypescriptNodesService.readDecoratorKey, TypescriptNodesService.readExpressionStatementKey, TypescriptNodesService.readLiteralKey, TypescriptNodesService.readNamedKey | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:201 | | LanguagesService.resolveValidators | 5 | LanguagesService.filter(…), LanguagesService.claimingLanguages, LanguagesService.flatMap(…), LanguagesService.filter(…), LanguagesService.widenFallback | projects/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:95 | | JsonComparisonService.map(…) | 4 | JsonComparisonService.formatPath, JsonComparisonService.countNodes, JsonComparisonService.buildError, JsonComparisonService.compare | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:200 | | MarkdownTreeService.compareLeaf | 4 | MarkdownTreeService.findCandidates, MarkdownNodesService.countSubtree, MarkdownTreeService.buildError, MarkdownTreeService.captureFirst | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135 | | TypescriptTreeService.compareChild | 4 | TypescriptNodesService.readKey, TypescriptTreeService.flatMap(…), TypescriptTreeService.buildError, TypescriptTreeService.compareBestCandidate | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:95 | | FilesService.checkInstanceFiles | 3 | ConfigurationService.resolveInstanceFiles, FilesService.buildMissingDifference, FilesService.countExpectedFiles | projects/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:96 | | JsonComparisonService.countNodes | 3 | JsonComparisonService.reduce(…), JsonComparisonService.isJsonObject, JsonComparisonService.reduce(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:243 | | JupyterNotebookService.pairCells | 3 | JupyterNotebookService.groupSourcesByKind, JupyterNotebookService.readCellKind, JupyterNotebookService.readCellSource | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:82 | | MarkdownTreeService.map(…) | 3 | MarkdownTreeService.compareChildren, MarkdownNodesService.readChildren, MarkdownTreeService.captureFirst | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:107 | | MarkdownService.validateDocument | 3 | MarkdownTreeService.compareChildren, MarkdownNodesService.filterNodes, MarkdownService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown.service.ts:48 | | PythonBridgeService.validatePythonSource | 3 | PythonBridgeService.buildBridgeError, PythonBridgeService.map(…), ScoringService.sumWeights | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:162 | | JupyterService.validateCell | 3 | MarkdownService.validateDocument, JupyterService.attributeToCell, PythonBridgeService.validatePythonSource | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:90 | | TypescriptTreeService.compareTree | 3 | TypescriptNodesService.readChildren, TypescriptTreeService.reduce(…), TypescriptTreeService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:179 | | TypescriptService.validateDocument | 3 | TypescriptService.parseSourceFile, TypescriptService.validateStructure, TypescriptService.validateComments | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:170 | | FilesService.buildMissingDifference | 2 | DifferencesService.buildMissingFileDifference, DifferencesService.buildMissingDirectoryDifference | projects/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:52 | | JsonComparisonService.compareArrays | 2 | JsonComparisonService.combine, JsonComparisonService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:177 | | JsonComparisonService.compareObjects | 2 | JsonComparisonService.combine, JsonComparisonService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:191 | | JupyterNotebookService.groupSourcesByKind | 2 | JupyterNotebookService.readCellKind, JupyterNotebookService.readCellSource | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:31 | | MarkdownNodesService.link | 2 | MarkdownNodesService.sameField, MarkdownNodesService.readText | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:60 | | MarkdownNodesService.capture | 2 | MarkdownNodesService.readText, capturePlaceholderValues | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116 | | MarkdownNodesService.countSubtree | 2 | MarkdownNodesService.reduce(…), MarkdownNodesService.readChildren | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:155 | | MarkdownTreeService.buildError | 2 | MarkdownNodesService.readText, MarkdownNodesService.countSubtree | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:45 | | MarkdownTreeService.compareChildren | 2 | MarkdownTreeService.compareContainer, MarkdownTreeService.compareLeaf | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:170 | | TextService.findMissingLines | 2 | TextService.countLines, TextService.captureLine | projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:74 | | TextService.validateDocument | 2 | TextService.findMissingLines, TextService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:113 | | TypescriptCommentsService.compareComments | 2 | TypescriptCommentsService.extractComments, TypescriptCommentsService.findIndex(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-comments.service.ts:46 | | TypescriptCommentsService.extractComments | 2 | TypescriptCommentsService.visit, TypescriptCommentsService.toSorted(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-comments.service.ts:87 | | TypescriptNodesService.readExpressionStatementKey | 2 | TypescriptNodesService.buildDottedName, TypescriptNodesService.readLiteralKey | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:98 | | TypescriptNodesService.countSubtree | 2 | TypescriptNodesService.reduce(…), TypescriptNodesService.readChildren | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:176 | | TypescriptTreeService.buildError | 2 | TypescriptNodesService.readKindLabel, TypescriptNodesService.countSubtree | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:44 | | TypescriptTreeService.compareBestCandidate | 2 | TypescriptTreeService.reduce(…), TypescriptTreeService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:69 | | TypescriptTreeService.flatMap(…) | 2 | TypescriptTreeService.matchKind, TypescriptTreeService.matchKey | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:101 | | TypescriptTreeService.matchKey | 2 | TypescriptNodesService.readKey, capturePlaceholderValues | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:144 | | TypescriptService.validateComments | 2 | TypescriptCommentsService.compareComments, TypescriptService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:75 | | TypescriptService.validateStructure | 2 | TypescriptTreeService.compareTree, TypescriptService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:107 | | DifferencesService.resolveDifferenceType | 1 | DifferencesService.find(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/differences/differences.service.ts:78 | | DifferencesService.resolveErrorLanguage | 1 | DifferencesService.find(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/differences/differences.service.ts:91 | | FilesService.countExpectedFiles | 1 | FilesService.filter(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:78 | | ScoringService.sumWeights | 1 | ScoringService.reduce(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/scoring/scoring.service.ts:53 | | JsonComparisonService.captureString | 1 | capturePlaceholderValues | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:71 | | JsonComparisonService.combine | 1 | JsonComparisonService.reduce(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:89 | | JsonComparisonService.map(…) | 1 | JsonComparisonService.captureString | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:117 | | JsonComparisonService.map(…) | 1 | JsonComparisonService.compare | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:158 | | JsonComparisonService.map(…) | 1 | JsonComparisonService.compareArrayItem | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:184 | | JsonComparisonService.reduce(…) | 1 | JsonComparisonService.countNodes | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:245 | | JsonComparisonService.reduce(…) | 1 | JsonComparisonService.countNodes | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:251 | | JsonComparisonService.formatPath | 1 | JsonComparisonService.reduce(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:260 | | JsonComparisonService.pickClosestMatch | 1 | JsonComparisonService.reduce(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:289 | | JsonComparisonService.reduce(…) | 1 | ScoringService.sumWeights | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:290 | | JsonService.validateDocument | 1 | JsonComparisonService.compare | projects/ic-suite/conformetry/conformetry-languages/src/modules/json/json.service.ts:39 | | JupyterNotebookService.readCellSource | 1 | JupyterNotebookService.filter(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:57 | | JupyterNotebookService.parseNotebook | 1 | JupyterNotebookService.filter(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:122 | | MarkdownNodesService.code | 1 | MarkdownNodesService.sameField | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:36 | | MarkdownNodesService.heading | 1 | MarkdownNodesService.readText | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:42 | | MarkdownNodesService.html | 1 | MarkdownNodesService.sameField | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:48 | | MarkdownNodesService.image | 1 | MarkdownNodesService.sameField | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:51 | | MarkdownNodesService.inlineCode | 1 | MarkdownNodesService.sameField | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:57 | | MarkdownNodesService.table | 1 | MarkdownNodesService.readColumnCount | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:69 | | MarkdownNodesService.tableRow | 1 | MarkdownNodesService.readChildren | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:75 | | MarkdownNodesService.text | 1 | MarkdownNodesService.sameField | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:81 | | MarkdownNodesService.readColumnCount | 1 | MarkdownNodesService.readChildren | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:92 | | MarkdownNodesService.reduce(…) | 1 | MarkdownNodesService.countSubtree | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:160 | | MarkdownNodesService.filterNodes | 1 | MarkdownNodesService.filter(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:166 | | MarkdownNodesService.matches | 1 | MarkdownNodesService.capture | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:177 | | MarkdownTreeService.captureFirst | 1 | MarkdownNodesService.capture | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:60 | | MarkdownTreeService.reduce(…) | 1 | ScoringService.sumWeights | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:124 | | MarkdownTreeService.findCandidates | 1 | MarkdownTreeService.filter(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:156 | | MarkdownTreeService.filter(…) | 1 | MarkdownNodesService.capture | projects/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:157 | | PythonBridgeService.readLocations | 1 | PythonBridgeService.readNumber | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:86 | | PythonBridgeService.readValues | 1 | PythonBridgeService.readString | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:123 | | PythonBridgeService.map(…) | 1 | PythonBridgeService.toConformetryDifference | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:187 | | PythonService.validateDocument | 1 | PythonBridgeService.validatePythonSource | projects/ic-suite/conformetry/conformetry-languages/src/modules/python/python.service.ts:38 | | JupyterService.attributeToCell | 1 | JupyterService.map(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:52 | | JupyterService.weighMissingCell | 1 | JupyterService.validateCell | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:140 | | JupyterService.map(…) | 1 | JupyterService.weighMissingCell | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:173 | | JupyterService.map(…) | 1 | JupyterService.validateCell | projects/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:188 | | TextService.captureLine | 1 | capturePlaceholderValues | projects/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:39 | | TypescriptNodesService.readDecoratorKey | 1 | TypescriptNodesService.buildDottedName | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:75 | | TypescriptNodesService.readNamedKey | 1 | TypescriptNodesService.isNode | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:143 | | TypescriptNodesService.reduce(…) | 1 | TypescriptNodesService.countSubtree | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:177 | | TypescriptNodesService.readChildren | 1 | TypescriptNodesService.forEachChild(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:183 | | TypescriptTreeService.map(…) | 1 | TypescriptTreeService.compareTree | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:74 | | TypescriptTreeService.reduce(…) | 1 | ScoringService.sumWeights | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:86 | | TypescriptTreeService.map(…) | 1 | TypescriptTreeService.compareChild | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:186 | | TypescriptService.map(…) | 1 | TypescriptService.readLocation | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:81 | | TypescriptService.map(…) | 1 | TypescriptService.readLocation | projects/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:116 | | LanguagesService.validateDocument | 1 | TextService.validateDocument | projects/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:80 | | LanguagesService.filter(…) | 1 | LanguagesService.some(…) | projects/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:98 |

🕸️ Codependix

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

Nx Neighborhood

graph LR
  conformetry_configuration["conformetry-configuration"]
  conformetry_core["conformetry-core"]
  conformetry_languages["conformetry-languages"]
  conformetry_output["conformetry-output"]
  conformetry_validation["conformetry-validation"]
  conformetry_languages --> conformetry_configuration
  conformetry_languages --> conformetry_core
  conformetry_output --> conformetry_languages
  conformetry_validation --> conformetry_languages
  classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
  class conformetry_languages subject

NestJS Module Graph

flowchart LR
  ConfigurationModule
  DifferencesModule
  FilesModule
  InputModule
  InstanceDiscoveryModule
  InstanceGroupModule
  JsonModule
  JupyterModule
  LanguagesModule
  MarkdownModule
  PythonModule
  RenderingModule
  ScoringModule
  TemplateDiscoveryModule
  TextModule
  TypescriptModule
  ConfigurationModule --> InputModule
  ConfigurationModule --> InstanceDiscoveryModule
  ConfigurationModule --> InstanceGroupModule
  ConfigurationModule --> RenderingModule
  ConfigurationModule --> TemplateDiscoveryModule
  FilesModule --> ConfigurationModule
  FilesModule --> DifferencesModule
  InstanceDiscoveryModule --> InstanceGroupModule
  InstanceDiscoveryModule --> RenderingModule
  InstanceDiscoveryModule --> TemplateDiscoveryModule
  JsonModule --> ScoringModule
  JupyterModule --> JsonModule
  JupyterModule --> MarkdownModule
  JupyterModule --> PythonModule
  LanguagesModule --> JsonModule
  LanguagesModule --> JupyterModule
  LanguagesModule --> MarkdownModule
  LanguagesModule --> PythonModule
  LanguagesModule --> TextModule
  LanguagesModule --> TypescriptModule
  MarkdownModule --> ScoringModule
  PythonModule --> DifferencesModule
  PythonModule --> ScoringModule
  TemplateDiscoveryModule --> RenderingModule
  TypescriptModule --> ScoringModule

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_index_ts["src/index.ts"]
  file_src_modules_differences_differences_constants_ts["src/modules/differences/differences.constants.ts"]
  file_src_modules_differences_differences_module_ts["src/modules/differences/differences.module.ts"]
  file_src_modules_differences_differences_module_unit_test_ts["src/modules/differences/differences.module.unit.test.ts"]
  file_src_modules_differences_differences_service_ts["src/modules/differences/differences.service.ts"]
  file_src_modules_differences_differences_service_unit_test_ts["src/modules/differences/differences.service.unit.test.ts"]
  file_src_modules_differences_differences_types_ts["src/modules/differences/differences.types.ts"]
  file_src_modules_files_files_constants_ts["src/modules/files/files.constants.ts"]
  file_src_modules_files_files_module_ts["src/modules/files/files.module.ts"]
  file_src_modules_files_files_module_unit_test_ts["src/modules/files/files.module.unit.test.ts"]
  file_src_modules_files_files_service_ts["src/modules/files/files.service.ts"]
  file_src_modules_files_files_service_unit_test_ts["src/modules/files/files.service.unit.test.ts"]
  file_src_modules_files_files_types_ts["src/modules/files/files.types.ts"]
  file_src_modules_json_json_comparison_service_ts["src/modules/json/json-comparison.service.ts"]
  file_src_modules_json_json_comparison_service_unit_test_ts["src/modules/json/json-comparison.service.unit.test.ts"]
  file_src_modules_json_json_constants_ts["src/modules/json/json.constants.ts"]
  file_src_modules_json_json_module_ts["src/modules/json/json.module.ts"]
  file_src_modules_json_json_module_unit_test_ts["src/modules/json/json.module.unit.test.ts"]
  file_src_modules_json_json_service_ts["src/modules/json/json.service.ts"]
  file_src_modules_json_json_service_unit_test_ts["src/modules/json/json.service.unit.test.ts"]
  file_src_modules_json_json_types_ts["src/modules/json/json.types.ts"]
  file_src_modules_jupyter_jupyter_notebook_service_ts["src/modules/jupyter/jupyter-notebook.service.ts"]
  file_src_modules_jupyter_jupyter_notebook_service_unit_test_ts["src/modules/jupyter/jupyter-notebook.service.unit.test.ts"]
  file_src_modules_jupyter_jupyter_constants_ts["src/modules/jupyter/jupyter.constants.ts"]
  file_src_modules_jupyter_jupyter_module_ts["src/modules/jupyter/jupyter.module.ts"]
  file_src_modules_jupyter_jupyter_module_unit_test_ts["src/modules/jupyter/jupyter.module.unit.test.ts"]
  file_src_modules_jupyter_jupyter_service_ts["src/modules/jupyter/jupyter.service.ts"]
  file_src_modules_jupyter_jupyter_service_unit_test_ts["src/modules/jupyter/jupyter.service.unit.test.ts"]
  file_src_modules_jupyter_jupyter_types_ts["src/modules/jupyter/jupyter.types.ts"]
  file_src_modules_languages_languages_constants_ts["src/modules/languages/languages.constants.ts"]
  file_src_modules_languages_languages_module_ts["src/modules/languages/languages.module.ts"]
  file_src_modules_languages_languages_module_unit_test_ts["src/modules/languages/languages.module.unit.test.ts"]
  file_src_modules_languages_languages_service_ts["src/modules/languages/languages.service.ts"]
  file_src_modules_languages_languages_service_unit_test_ts["src/modules/languages/languages.service.unit.test.ts"]
  file_src_modules_languages_languages_types_ts["src/modules/languages/languages.types.ts"]
  file_src_modules_markdown_markdown_nodes_service_ts["src/modules/markdown/markdown-nodes.service.ts"]
  file_src_modules_markdown_markdown_nodes_service_unit_test_ts["src/modules/markdown/markdown-nodes.service.unit.test.ts"]
  file_src_modules_markdown_markdown_tree_service_ts["src/modules/markdown/markdown-tree.service.ts"]
  file_src_modules_markdown_markdown_tree_service_unit_test_ts["src/modules/markdown/markdown-tree.service.unit.test.ts"]
  file_src_modules_markdown_markdown_constants_ts["src/modules/markdown/markdown.constants.ts"]
  file_src_modules_markdown_markdown_module_ts["src/modules/markdown/markdown.module.ts"]
  file_src_modules_markdown_markdown_module_unit_test_ts["src/modules/markdown/markdown.module.unit.test.ts"]
  file_src_modules_markdown_markdown_service_ts["src/modules/markdown/markdown.service.ts"]
  file_src_modules_markdown_markdown_service_unit_test_ts["src/modules/markdown/markdown.service.unit.test.ts"]
  file_src_modules_markdown_markdown_types_ts["src/modules/markdown/markdown.types.ts"]
  file_src_modules_python_python_bridge_service_ts["src/modules/python/python-bridge.service.ts"]
  file_src_modules_python_python_bridge_service_unit_test_ts["src/modules/python/python-bridge.service.unit.test.ts"]
  file_src_modules_python_python_constants_ts["src/modules/python/python.constants.ts"]
  file_src_modules_python_python_module_ts["src/modules/python/python.module.ts"]
  file_src_modules_python_python_module_unit_test_ts["src/modules/python/python.module.unit.test.ts"]
  file_src_modules_python_python_service_ts["src/modules/python/python.service.ts"]
  file_src_modules_python_python_service_unit_test_ts["src/modules/python/python.service.unit.test.ts"]
  file_src_modules_python_python_types_ts["src/modules/python/python.types.ts"]
  file_src_modules_scoring_scoring_constants_ts["src/modules/scoring/scoring.constants.ts"]
  file_src_modules_scoring_scoring_module_ts["src/modules/scoring/scoring.module.ts"]
  file_src_modules_scoring_scoring_module_unit_test_ts["src/modules/scoring/scoring.module.unit.test.ts"]
  file_src_modules_scoring_scoring_service_ts["src/modules/scoring/scoring.service.ts"]
  file_src_modules_scoring_scoring_service_unit_test_ts["src/modules/scoring/scoring.service.unit.test.ts"]
  file_src_modules_scoring_scoring_types_ts["src/modules/scoring/scoring.types.ts"]
  file_src_modules_text_text_constants_ts["src/modules/text/text.constants.ts"]
  file_src_modules_text_text_module_ts["src/modules/text/text.module.ts"]
  file_src_modules_text_text_module_unit_test_ts["src/modules/text/text.module.unit.test.ts"]
  file_src_modules_text_text_service_ts["src/modules/text/text.service.ts"]
  file_src_modules_text_text_service_unit_test_ts["src/modules/text/text.service.unit.test.ts"]
  file_src_modules_text_text_types_ts["src/modules/text/text.types.ts"]
  file_src_modules_typescript_typescript_comments_service_ts["src/modules/typescript/typescript-comments.service.ts"]
  file_src_modules_typescript_typescript_comments_service_unit_test_ts["src/modules/typescript/typescript-comments.service.unit.test.ts"]
  file_src_modules_typescript_typescript_nodes_service_ts["src/modules/typescript/typescript-nodes.service.ts"]
  file_src_modules_typescript_typescript_nodes_service_unit_test_ts["src/modules/typescript/typescript-nodes.service.unit.test.ts"]
  file_src_modules_typescript_typescript_tree_service_ts["src/modules/typescript/typescript-tree.service.ts"]
  file_src_modules_typescript_typescript_tree_service_unit_test_ts["src/modules/typescript/typescript-tree.service.unit.test.ts"]
  file_src_modules_typescript_typescript_constants_ts["src/modules/typescript/typescript.constants.ts"]
  file_src_modules_typescript_typescript_module_ts["src/modules/typescript/typescript.module.ts"]
  file_src_modules_typescript_typescript_module_unit_test_ts["src/modules/typescript/typescript.module.unit.test.ts"]
  file_src_modules_typescript_typescript_service_ts["src/modules/typescript/typescript.service.ts"]
  file_src_modules_typescript_typescript_service_unit_test_ts["src/modules/typescript/typescript.service.unit.test.ts"]
  file_src_modules_typescript_typescript_types_ts["src/modules/typescript/typescript.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_modules_differences_differences_module_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_differences_differences_module_unit_test_ts --> file_src_modules_differences_differences_module_ts
  file_src_modules_differences_differences_module_unit_test_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_differences_differences_service_ts --> file_src_modules_differences_differences_constants_ts
  file_src_modules_differences_differences_service_ts --> file_src_modules_differences_differences_types_ts
  file_src_modules_differences_differences_service_unit_test_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_files_files_module_ts --> file_src_modules_differences_differences_module_ts
  file_src_modules_files_files_module_ts --> file_src_modules_files_files_service_ts
  file_src_modules_files_files_module_unit_test_ts --> file_src_modules_files_files_module_ts
  file_src_modules_files_files_module_unit_test_ts --> file_src_modules_files_files_service_ts
  file_src_modules_files_files_service_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_files_files_service_ts --> file_src_modules_files_files_types_ts
  file_src_modules_files_files_service_unit_test_ts --> file_src_modules_differences_differences_module_ts
  file_src_modules_files_files_service_unit_test_ts --> file_src_modules_files_files_service_ts
  file_src_modules_json_json_comparison_service_ts --> file_src_modules_json_json_types_ts
  file_src_modules_json_json_comparison_service_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_json_json_comparison_service_unit_test_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_json_json_comparison_service_unit_test_ts --> file_src_modules_json_json_types_ts
  file_src_modules_json_json_comparison_service_unit_test_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_json_json_module_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_json_json_module_ts --> file_src_modules_json_json_service_ts
  file_src_modules_json_json_module_ts --> file_src_modules_scoring_scoring_module_ts
  file_src_modules_json_json_module_unit_test_ts --> file_src_modules_json_json_module_ts
  file_src_modules_json_json_module_unit_test_ts --> file_src_modules_json_json_service_ts
  file_src_modules_json_json_service_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_json_json_service_ts --> file_src_modules_json_json_constants_ts
  file_src_modules_json_json_service_ts --> file_src_modules_json_json_types_ts
  file_src_modules_json_json_service_unit_test_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_json_json_service_unit_test_ts --> file_src_modules_json_json_service_ts
  file_src_modules_json_json_service_unit_test_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_jupyter_jupyter_notebook_service_ts --> file_src_modules_jupyter_jupyter_types_ts
  file_src_modules_jupyter_jupyter_notebook_service_unit_test_ts --> file_src_modules_jupyter_jupyter_notebook_service_ts
  file_src_modules_jupyter_jupyter_module_ts --> file_src_modules_json_json_module_ts
  file_src_modules_jupyter_jupyter_module_ts --> file_src_modules_jupyter_jupyter_notebook_service_ts
  file_src_modules_jupyter_jupyter_module_ts --> file_src_modules_jupyter_jupyter_service_ts
  file_src_modules_jupyter_jupyter_module_ts --> file_src_modules_markdown_markdown_module_ts
  file_src_modules_jupyter_jupyter_module_ts --> file_src_modules_python_python_module_ts
  file_src_modules_jupyter_jupyter_module_unit_test_ts --> file_src_modules_jupyter_jupyter_module_ts
  file_src_modules_jupyter_jupyter_module_unit_test_ts --> file_src_modules_jupyter_jupyter_service_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_json_json_types_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_jupyter_jupyter_notebook_service_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_jupyter_jupyter_constants_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_jupyter_jupyter_types_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_jupyter_jupyter_service_ts --> file_src_modules_python_python_bridge_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_json_json_comparison_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_jupyter_jupyter_notebook_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_jupyter_jupyter_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_markdown_markdown_tree_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_python_python_bridge_service_ts
  file_src_modules_jupyter_jupyter_service_unit_test_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_json_json_module_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_jupyter_jupyter_module_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_languages_languages_service_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_markdown_markdown_module_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_python_python_module_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_text_text_module_ts
  file_src_modules_languages_languages_module_ts --> file_src_modules_typescript_typescript_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_json_json_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_jupyter_jupyter_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_languages_languages_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_languages_languages_service_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_markdown_markdown_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_python_python_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_text_text_module_ts
  file_src_modules_languages_languages_module_unit_test_ts --> file_src_modules_typescript_typescript_module_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_json_json_service_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_jupyter_jupyter_service_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_languages_languages_types_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_python_python_service_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_text_text_service_ts
  file_src_modules_languages_languages_service_ts --> file_src_modules_typescript_typescript_service_ts
  file_src_modules_languages_languages_service_unit_test_ts --> file_src_modules_languages_languages_module_ts
  file_src_modules_languages_languages_service_unit_test_ts --> file_src_modules_languages_languages_service_ts
  file_src_modules_markdown_markdown_nodes_service_ts --> file_src_modules_markdown_markdown_constants_ts
  file_src_modules_markdown_markdown_nodes_service_ts --> file_src_modules_markdown_markdown_types_ts
  file_src_modules_markdown_markdown_nodes_service_unit_test_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_nodes_service_unit_test_ts --> file_src_modules_markdown_markdown_types_ts
  file_src_modules_markdown_markdown_tree_service_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_tree_service_ts --> file_src_modules_markdown_markdown_constants_ts
  file_src_modules_markdown_markdown_tree_service_ts --> file_src_modules_markdown_markdown_types_ts
  file_src_modules_markdown_markdown_tree_service_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_markdown_markdown_tree_service_unit_test_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_tree_service_unit_test_ts --> file_src_modules_markdown_markdown_tree_service_ts
  file_src_modules_markdown_markdown_tree_service_unit_test_ts --> file_src_modules_markdown_markdown_types_ts
  file_src_modules_markdown_markdown_tree_service_unit_test_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_markdown_markdown_module_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_module_ts --> file_src_modules_markdown_markdown_tree_service_ts
  file_src_modules_markdown_markdown_module_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_markdown_markdown_module_ts --> file_src_modules_scoring_scoring_module_ts
  file_src_modules_markdown_markdown_module_unit_test_ts --> file_src_modules_markdown_markdown_module_ts
  file_src_modules_markdown_markdown_module_unit_test_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_markdown_markdown_service_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_service_ts --> file_src_modules_markdown_markdown_tree_service_ts
  file_src_modules_markdown_markdown_service_ts --> file_src_modules_markdown_markdown_constants_ts
  file_src_modules_markdown_markdown_service_unit_test_ts --> file_src_modules_markdown_markdown_nodes_service_ts
  file_src_modules_markdown_markdown_service_unit_test_ts --> file_src_modules_markdown_markdown_tree_service_ts
  file_src_modules_markdown_markdown_service_unit_test_ts --> file_src_modules_markdown_markdown_service_ts
  file_src_modules_markdown_markdown_service_unit_test_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_python_python_bridge_service_ts --> file_src_modules_differences_differences_service_ts
  file_src_modules_python_python_bridge_service_ts --> file_src_modules_python_python_constants_ts
  file_src_modules_python_python_bridge_service_ts --> file_src_modules_python_python_types_ts
  file_src_modules_python_python_bridge_service_ts --> file_src_modules_scoring_scoring_service_ts
  file_src_modules_python_python_bridge_service_unit_test_ts --> file_src_modules_differences_differences_module_ts
  file_src_modules_pyt