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

v0.0.35

Published

Configuration reader, schema validation, and template discovery for Conformetry

Readme

👔 Conformetry Configuration

npm

The configuration reference for Conformetry.

@conformetry/configuration reads a repository's conformetry.config.*, checks it, and turns it into the three things the rest of the toolchain works from: the generator registry, the instances validation walks, and the resolved inputs a generator renders with.

npm install --save-dev @conformetry/configuration

Most consumers never install this directly — @conformetry/cli and @conformetry/nx both depend on it. Install it when you are typing a configuration file, or embedding conformetry in a host of your own.

The configuration file

The file's extension may be any of .ts, .mts, .cts, .js, .mjs, .cjs, .json, or .jsonc. The path is always passed in explicitly — no filename is searched for. TypeScript and JavaScript files are loaded through jiti, so a .ts config needs no build step and may import from your workspace.

The path is resolved against the current directory first, then against the workspace root — located by walking upward for pnpm-workspace.yaml — so a config path written relative to the root still resolves from a nested directory.

The file default-exports an array of generator definitions. It is an array rather than a keyed record because a generator's name is already a field, and a record made the name true in two places at once.

import { type ConformetryConfiguration } from "@conformetry/configuration";

const conformetryConfiguration: ConformetryConfiguration = [
  {
    description: "Generate a NestJS service module",
    inputs: {
      name: { description: "Module name in kebab-case", type: "string" },
    },
    instances: [{ patterns: ["packages/*/src/modules/*"] }],
    name: "nestjs-service-module",
    templatePath: "templates/nestjs-service-module",
  },
];

export default conformetryConfiguration;

Generator fields

| Field | Required | Purpose | | ----- | -------- | ------- | | name | ✅ | How the generator is addressed, and the filename it is emitted under | | templatePath | ✅ | The template folder, relative to the workspace root | | inputs | | The values it substitutes, as JSON Schema fragments | | instances | | Where this generator's output already lives | | description | | Shown when a host lists or prompts for generators |

Both inputs and instances may be omitted. A generator with neither renders a fixed template nobody validates, which is legal.

What is rejected

The schema fails loudly rather than validating nothing, and reports every problem in one pass:

  • Two generators answering to the same name. A host resolves the first match, so a collision does not error where it is used — it silently shadows, and the losing generator becomes unreachable while still appearing in the configuration.
  • Two generators sharing a templatePath. Validation then finds instances that fit both equally and reports them as matching nothing.
  • A name containing a path separator. A generator is addressed by its name and emitted to a file named after it.
  • A key the schema does not declare. The generator object is strict, so a misspelled field — or aliases, which was removed outright — is rejected rather than stripped and left reading as though it took effect.

Instances

instances is what makes validation possible. It says where a generator's output already lives, so validation knows what to check without being told a second time.

instances: [
  { patterns: ["packages/*/src/modules/*"] },
  {
    patterns: ["applications/*/src/modules/*"],
    substitutions: { type: "applications" },
  },
];

| Field | Purpose | | ----- | ------- | | exclude | Workspace-relative globs naming paths that are never instances, applied with or without tags | | patterns | Globs locating this group's instances, workspace-relative | | substitutions | Values the template's placeholders are rendered with for this group | | tags | Labels selecting which hosts the group applies to, carried uninterpreted | | threshold | Lowest conformance score these instances may have, overriding the generator's |

Groups exist so substitutions can differ per glob. type is packages for one set of paths and applications for another, and no generic rule can tell them apart.

A placeholder these substitutions leave out is read from the instance. Validation renders a random stand-in for it, captures the text the instance holds where the template's first use of it aligns, renders the template again with that text, and compares as usual — so a later use holding different text is an ordinary difference. When nothing aligns, the instance fails with Could not infer {{…}}. name and its variants always come from the instance path, and a value supplied here always wins. Generation has no instance to read, so there a placeholder nobody supplied still raises MissingSubstitutionError — see @conformetry/generation for why, and for the section syntax a template uses to make a placeholder optional.

exclude drops any instance whose own path — the directory a pattern found, or the files of a file instance — matches one of its globs, whether or not the group has tags. It is how vendored or generated code living beside real instances, such as shadcn's component output, is left out of validation: exclude: ["projects/lexico/lexico-web/src/components/ui/**"].

tags is carried through untouched by this package, which has no notion of a host to match labels against. @conformetry/nx reads them as Nx project tags and resolves each group's globs inside every matching project; another host is free to read them as something else. A group naming only tags is legal — it selects without locating, which is what a template with no instances yet wants.

Directory globs versus file globs

The two behave differently on purpose, and the difference is what lets a small template win against a large one.

  • A directory glob leaves the match scope open, and the largest fitting template wins.
  • A file glob narrows the scope to the matched files, so a template describing exactly those files fits better than one describing the whole directory.

That is how a two-file template such as nestjs-service-file is matchable at all inside a directory a five-file module template also claims:

instances: [
  { patterns: ["src/modules/*/*.service.ts", "src/modules/*/*.service.unit.test.ts"] },
];

Where a template is laid down

A template that produces a folder contains that folder, so its instance path is the folder's parent: nestjs-service-module holds {{nameKebabCase}}/…, and its instances are …/src/modules. A template that produces loose files holds them at its root, and its instance path is the directory those files sit in.

Thresholds

An instance passes when its conformance score reaches the threshold that applies to it. Three levels set it, and the narrowest wins:

instances[].threshold ?? generator.threshold ?? runThreshold ?? 1

A level left unset stays unset rather than being filled with the default — that is what lets a host's own --threshold reach an instance whose generator has no opinion. The default of 1 is applied only at the end of the chain, so nothing configured is quietly overridden, and a level nobody set is not quietly treated as if they had.

{
  name: "nestjs-service-module",
  templatePath: "templates/nestjs-service-module",
  threshold: 1,                               // strict everywhere by default
  instances: [
    { patterns: ["packages/*/src/modules/*"] },
    {
      patterns: ["applications/legacy/src/modules/*"],
      threshold: 0.75,                        // …except while migrating this one
    },
  ],
}

When two groups locate the same instance with different thresholds the strictest wins: nothing makes one group more specific than another, and letting order decide would mean a lenient group could silently relax a bar someone else set.

Inputs

Each entry in inputs is a JSON Schema fragment. Only properties and required are read — enough to know an input's name, whether it must be supplied, and what to say when prompting for it.

Authoring them by hand is verbose, so deriving them from a schema library is the usual approach:

import { z } from "zod";

function defineInputs(shape: z.ZodRawShape) {
  return z.toJSONSchema(z.object(shape)).properties ?? {};
}

inputs: defineInputs({
  name: z.string().describe("Module name in kebab-case"),
  project: z.string().describe("Parent project name in kebab-case"),
});

Values are resolved in order: flags passed on the command line first, then interactive prompts for anything still missing. Prompting is skipped entirely when stdin is not a TTY or CI is true, so a missing input fails the command rather than hanging it.

Matching

Validation does not record which template produced a file. It works it out: every instance is weighed against every template by the share of the template's files the instance already has, and the best fit wins.

Two outcomes are reported rather than skipped, because a glob is the author asserting that these paths are instances:

| Reason | Meaning | | ------ | ------- | | no-match | No template explains this instance well enough | | ambiguous | Two or more templates tied, so they are indistinguishable here |

Exports

| Export | Purpose | | ------ | ------- | | ConfigurationService | Everything this layer answers: loading a configuration file, reading templates, expanding globs into instances, matching the two, rendering placeholders, and resolving generator inputs | | ConfigurationModule | The NestJS module that provides it | | ConfigurationPathRequiredError | Thrown by ConfigurationService.requireConfigurationPath for an absent or blank path, naming the flag or option the caller passed as the surface | | ConformetryConfiguration | The loaded configuration type — author your config as this | | ConformetryInstanceGroup, ConformetryGeneratorDefinition | Field-level types for the above |

One service and one module, and no other collaborator — the same pair @callidescope/configuration, @codependix/configuration and @codometer/configuration publish, so learning one of the four teaches you all of them.

Behind the facade, template discovery, instance discovery, rendering, instance groups, and input resolution stay six separate classes in six separate files, because they are six different jobs. What they are not is six entry points a host has to know the names of: a consumer imports ConfigurationModule and injects ConfigurationService.

Whether a configuration path is required, and what the refusal says, is decided here and nowhere else: ConfigurationService.requireConfigurationPath(path, surface) returns the trimmed path or throws ConfigurationPathRequiredError. The CLI passes the --config flag, and the Nx plugin passes its own option names; neither keeps a guard or a message of its own.

Loading a configuration file is the one job ConfigurationService holds itself; everything that touches paths is a one-line hand-off to the collaborator that owns it.

Test

nx run conformetry-configuration: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-configuration, deepest first. Each frame shows what it takes, what it returns, and what its documentation says.

| Measure | Value | | --- | --- | | Callables | 183 | | Files | 38 | | Calls traced | 167 | | Call stacks | 5 | | Deepest stack | 10 | | Stacks through recursion | 0 | | Unfollowable calls | 7 |

Limits

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

| Limit | Value | | --- | --- | | maximumDepth | 14 | | maximumBreadth | 5 |

Call stacks (depth)

1. InstanceDiscoveryService.matchTemplates — depth ≥ 10 · orphan-root

🚀 InstanceDiscoveryService.matchTemplates(…): TemplateMatch[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:131]
   ↳ Ranks every template that shares a file with one instance, best first.
  └─> InstanceDiscoveryMatchingService.matchTemplates(…): TemplateMatch[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:180]
     ↳ Weighs every template that shares at least one file with the instance, best-first.
    └─> InstanceDiscoveryMatchingService.map(…)(…): { matchedFileCount: number; matchRatio: number; template: TemplateDefinition; placeholderValues: Substitutions; substitutions: Substitutions; } [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:186]
      └─> TemplateDiscoveryService.countMatchingFiles(…): number [projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:146]
         ↳ Counts how many of a template's files the instance path already has.
        └─> TemplateDiscoveryService.filter(…)(templateFilePath: string): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:155]
          └─> TemplateDiscoveryService.resolveInstanceFilePath(…): string [projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:204]
             ↳ Maps a template file path to the instance file path it governs.
            └─> RenderingService.renderPath(…): string [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:142]
               ↳ Renders a template path with mustache, the same way contents are rendered.
              └─> RenderingService.assertEverySubstitutionSupplied(…): void [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:35]
                 ↳ Refuses to render a template asking for a value nobody supplied.
                └─> RenderingService.collectInterpolatedNames(template: string): string[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:80]
                   ↳ Every placeholder a template interpolates, deduplicated.
                  └─> RenderingService.walk(spans: TemplateSpans): void [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:82]

2. InputService.resolveInputsFromValues — depth ≥ 8 · orphan-root

🚀 InputService.resolveInputsFromValues(args: ResolveInputsFromValuesArguments): Promise<Record<string, string>> [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:195]
   ↳ Resolves inputs from values the caller already parsed.
  └─> InputService.resolveInputs(…): Promise<Record<string, string>> [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:53]
     ↳ Walks a schema, taking each value from the resolver or a prompt.
    └─> InputService.acceptProvidedValue(args: { input: SchemaInput; value: string; }): string [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:39]
       ↳ Validates a value the caller already had, throwing if it is invalid.
      └─> InputSchemaService.validateValue(args: { input: SchemaInput; value: unknown; }): string | true [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:158]
         ↳ Validates a value, returning `true` or the reason it failed.
        └─> InputSchemaService.validateEnum(args: { input: SchemaInput; value: string; }): string | true [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:39]
           ↳ Validates a value against a schema `enum`, when one is declared.
          └─> InputSchemaService.readEnumValues(propertySchema: unknown): string[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:123]
             ↳ Reads the string members of a schema `enum`.
            └─> InputSchemaService.readSchemaProperty(propertySchema: unknown, key: string): unknown [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:26]
               ↳ Reads one property off a schema fragment when it is an object.
              └─> InputSchemaService.find(…)([entryKey]: [string, any]): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:31]

3. InputPromptingService.validate — depth 6 · orphan-root

🚀 InputPromptingService.validate(value: unknown): string | true [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:105]
  └─> InputSchemaService.validateValue(args: { input: SchemaInput; value: unknown; }): string | true [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:158]
     ↳ Validates a value, returning `true` or the reason it failed.
    └─> InputSchemaService.validateEnum(args: { input: SchemaInput; value: string; }): string | true [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:39]
       ↳ Validates a value against a schema `enum`, when one is declared.
      └─> InputSchemaService.readEnumValues(propertySchema: unknown): string[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:123]
         ↳ Reads the string members of a schema `enum`.
        └─> InputSchemaService.readSchemaProperty(propertySchema: unknown, key: string): unknown [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:26]
           ↳ Reads one property off a schema fragment when it is an object.
          └─> InputSchemaService.find(…)([entryKey]: [string, any]): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:31]

4. assertNoCollisions — depth ≥ 3 · orphan-root

🚀 assertNoCollisions(…): void [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:28]
   ↳ Fails when two generators would answer to the same thing.
  └─> findDuplicates(…): { message: string; path: (string | number)[]; }[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:62]
     ↳ Reports every key more than one generator claims.
    └─> map(…)(…): { message: string; path: number[]; } [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:84]

5. InstanceDiscoveryService.buildSubstitutions — depth 3 · orphan-root

🚀 InstanceDiscoveryService.buildSubstitutions(…): Substitutions [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:111]
   ↳ Builds the substitutions an instance's template is rendered with.
  └─> InstanceDiscoveryMatchingService.buildSubstitutions(instance: Instance): Substitutions [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:97]
     ↳ Builds the substitutions an instance's template is rendered with.
    └─> RenderingService.buildNameSubstitutions(name: string): Substitutions [projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:60]
       ↳ Derives the case variants every template can reference from one name.

Breadth

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | InstanceDiscoveryLocatingService.findInstances | 5 | InstanceDiscoveryLocatingService.resolveGlobSuffix, InstanceDiscoveryLocatingService.globEntries, InstanceDiscoveryLocatingService.resolveNameStem, InstanceDiscoveryLocatingService.map(…), InstanceDiscoveryLocatingService.toSorted(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:156 | | InstanceDiscoveryMatchingService.matchInstances | 5 | InstanceDiscoveryMatchingService.buildSubstitutions, InstanceDiscoveryMatchingService.matchTemplates, InstanceDiscoveryMatchingService.filter(…), InstanceDiscoveryMatchingService.map(…), InstanceDiscoveryMatchingService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:118 | | InputPromptingService.promptForInput | 4 | InputPromptingService.assertCanPrompt, InputSchemaService.readEnumValues, InputPromptingService.map(…), InputSchemaService.readPromptMessage | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:90 |

| Callable | Breadth | Calls directly | Location | | --- | --- | --- | --- | | InputService.resolveInputs | 4 | InputSchemaService.readPropertyNames, InputSchemaService.describeInput, InputService.acceptProvidedValue, InputService.resolveMissingValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:53 | | InputService.resolveMissingValue | 4 | InputPromptingService.isAtTerminal, missingInputError, InputPromptingService.promptForInput, InputSchemaService.validateValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:94 | | InstanceDiscoveryService.resolveInventoriedInstances | 4 | InstanceDiscoveryService.takeInventory, InstanceDiscoveryService.map(…), InstanceDiscoveryService.filter(…), InstanceDiscoveryService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:219 | | InstanceDiscoveryService.resolveInventoriedTemplates | 4 | InstanceDiscoveryService.takeInventory, InstanceDiscoveryService.filter(…), InstanceDiscoveryService.map(…), InstanceDiscoveryService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:244 | | InstanceDiscoveryService.takeInventory | 4 | TemplateDiscoveryService.collectTemplates, InstanceDiscoveryService.findInstances, InstanceDiscoveryService.readInventoryGlobs, InstanceDiscoveryService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:283 | | ConfigurationService.loadConformetryConfiguration | 4 | ConfigurationService.resolveConfigurationPath, UnknownConfigurationFileTypeError.constructor, ConfigurationService.loadConfigurationModule, ConfigurationService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:244 | | assertNoCollisions | 3 | findDuplicates, findUnusableNames, findReservedNames | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:28 | | findReservedNames | 3 | map(…), filter(…), map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:97 | | findUnusableNames | 3 | map(…), filter(…), map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:112 | | InputOptionsService.collectOneInput | 3 | InputOptionsService.readOptionName, InputOptionsService.resolvePropertyName, InputOptionsService.readOptionValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-options.service.ts:34 | | InputSchemaService.validateValue | 3 | InputSchemaService.validateEnum, InputSchemaService.validateLength, InputSchemaService.validatePattern | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:158 | | RenderingService.assertEverySubstitutionSupplied | 3 | RenderingService.filter(…), RenderingService.collectInterpolatedNames, MissingSubstitutionError.constructor | projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:35 | | InstanceDiscoveryMatchingService.matchTemplates | 3 | InstanceDiscoveryMatchingService.toSorted(…), InstanceDiscoveryMatchingService.filter(…), InstanceDiscoveryMatchingService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:180 | | InstanceDiscoveryService.readInventoryGlobs | 3 | InstanceDiscoveryService.flatMap(…), InstanceDiscoveryService.flatMap(…), InstanceDiscoveryService.flatMap(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:62 | | InstanceDiscoveryService.weighInstance | 3 | InstanceDiscoveryService.map(…), InstanceDiscoveryMatchingService.matchTemplates, InstanceDiscoveryMatchingService.buildSubstitutions | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:84 | | InstanceDiscoveryService.map(…) | 3 | InstanceDiscoveryService.filter(…), InstanceDiscoveryService.map(…), InstanceDiscoveryService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:146 | | findDuplicates | 2 | map(…), filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.utilities.ts:62 | | InputSchemaService.readEnumValues | 2 | InputSchemaService.readSchemaProperty, InputSchemaService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:123 | | InputPromptingService.assertCanPrompt | 2 | InputPromptingService.isAtTerminal, missingInputError | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:50 | | InputPromptingService.promptForTemplates | 2 | InputPromptingService.map(…), InputPromptingService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:144 | | InputService.parseCommaDelimitedOption | 2 | InputService.filter(…), InputService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:118 | | InputService.resolveGeneratorInputs | 2 | InputOptionsService.collectGeneratorInputs, InputService.resolveInputs | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:180 | | TemplateDiscoveryService.collectTemplate | 2 | TemplateDiscoveryService.collectFilePaths, TemplateDiscoveryService.collectPlaceholderNames | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:97 | | TemplateDiscoveryService.prepareDocument | 2 | TemplateDiscoveryService.resolveInstanceFilePath, RenderingService.renderContent | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:178 | | InstanceDiscoveryMatchingService.fillPlaceholders | 2 | InstanceDiscoveryMatchingService.map(…), InstanceDiscoveryMatchingService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:73 | | InstanceDiscoveryMatchingService.map(…) | 2 | InstanceDiscoveryMatchingService.fillPlaceholders, TemplateDiscoveryService.countMatchingFiles | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:186 | | missingInputError | 1 | InputError.constructor | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.constants.ts:55 | | missingDirectoryError | 1 | InputError.constructor | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.constants.ts:70 | | InputOptionsService.resolvePropertyName | 1 | InputOptionsService.find(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-options.service.ts:100 | | InputOptionsService.collectGeneratorInputs | 1 | InputOptionsService.collectOneInput | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-options.service.ts:120 | | InputSchemaService.readSchemaProperty | 1 | InputSchemaService.find(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:26 | | InputSchemaService.validateEnum | 1 | InputSchemaService.readEnumValues | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:39 | | InputSchemaService.validateLength | 1 | InputSchemaService.readSchemaProperty | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:53 | | InputSchemaService.validatePattern | 1 | InputSchemaService.readSchemaProperty | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:85 | | InputSchemaService.readPromptMessage | 1 | InputSchemaService.readSchemaProperty | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-schema.service.ts:136 | | InputPromptingService.validate | 1 | InputSchemaService.validateValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:105 | | InputPromptingService.promptForTemplate | 1 | InputPromptingService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:122 | | InputPromptingService.map(…) | 1 | InputPromptingService.describeChoice | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:126 | | InputPromptingService.map(…) | 1 | InputPromptingService.describeChoice | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input-prompting.service.ts:154 | | InputService.acceptProvidedValue | 1 | InputSchemaService.validateValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:39 | | InputService.parseThresholdOption | 1 | InputService.parseOptionalOption | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:161 | | InputService.resolveInputsFromValues | 1 | InputService.resolveInputs | projects/ic-suite/conformetry/conformetry-configuration/src/modules/input/input.service.ts:195 | | MissingSubstitutionError.constructor | 1 | MissingSubstitutionError.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.constants.ts:31 | | RenderingService.collectInterpolatedNames | 1 | RenderingService.walk | projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:80 | | RenderingService.renderContent | 1 | RenderingService.assertEverySubstitutionSupplied | projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:115 | | RenderingService.renderPath | 1 | RenderingService.assertEverySubstitutionSupplied | projects/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.service.ts:142 | | TemplateDiscoveryService.collectPlaceholderNames | 1 | TemplateDiscoveryService.flatMap(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:71 | | TemplateDiscoveryService.flatMap(…) | 1 | TemplateDiscoveryService.flatMap(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:77 | | TemplateDiscoveryService.flatMap(…) | 1 | RenderingService.collectInterpolatedNames | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:81 | | TemplateDiscoveryService.collectTemplates | 1 | TemplateDiscoveryService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:123 | | TemplateDiscoveryService.map(…) | 1 | TemplateDiscoveryService.collectTemplate | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:127 | | TemplateDiscoveryService.countMatchingFiles | 1 | TemplateDiscoveryService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:146 | | TemplateDiscoveryService.filter(…) | 1 | TemplateDiscoveryService.resolveInstanceFilePath | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:155 | | TemplateDiscoveryService.resolveInstanceFilePath | 1 | RenderingService.renderPath | projects/ic-suite/conformetry/conformetry-configuration/src/modules/template-discovery/template-discovery.service.ts:204 | | InstanceDiscoveryLocatingService.globEntries | 1 | InstanceDiscoveryLocatingService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:66 | | InstanceDiscoveryLocatingService.filter(…) | 1 | InstanceDiscoveryLocatingService.isExcluded | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:76 | | InstanceDiscoveryLocatingService.isExcluded | 1 | InstanceDiscoveryLocatingService.some(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:85 | | InstanceDiscoveryLocatingService.resolveGlobSuffix | 1 | InstanceDiscoveryLocatingService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:108 | | InstanceDiscoveryLocatingService.map(…) | 1 | InstanceDiscoveryLocatingService.deriveLocationSubstitutions | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-locating.service.ts:195 | | InstanceDiscoveryMatchingService.map(…) | 1 | createPlaceholderValue | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:80 | | InstanceDiscoveryMatchingService.buildSubstitutions | 1 | RenderingService.buildNameSubstitutions | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:97 | | InstanceDiscoveryMatchingService.toSorted(…) | 1 | InstanceDiscoveryMatchingService.compareMatches | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery-matching.service.ts:211 | | InstanceDiscoveryService.flatMap(…) | 1 | InstanceDiscoveryService.readWorkspaceGroups | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:72 | | InstanceDiscoveryService.buildSubstitutions | 1 | InstanceDiscoveryMatchingService.buildSubstitutions | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:111 | | InstanceDiscoveryService.findInstances | 1 | InstanceDiscoveryLocatingService.findInstances | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:118 | | InstanceDiscoveryService.matchInstances | 1 | InstanceDiscoveryMatchingService.matchInstances | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:123 | | InstanceDiscoveryService.matchTemplates | 1 | InstanceDiscoveryMatchingService.matchTemplates | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:131 | | InstanceDiscoveryService.prepareDocuments | 1 | InstanceDiscoveryService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:141 | | InstanceDiscoveryService.map(…) | 1 | TemplateDiscoveryService.prepareDocument | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:152 | | InstanceDiscoveryService.readWorkspaceGroups | 1 | InstanceDiscoveryService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:186 | | InstanceDiscoveryService.filter(…) | 1 | InstanceGroupService.isProjectScoped | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:189 | | InstanceDiscoveryService.resolveInstanceFiles | 1 | InstanceDiscoveryService.flatMap(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:195 | | InstanceDiscoveryService.flatMap(…) | 1 | InstanceDiscoveryService.map(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:196 | | InstanceDiscoveryService.map(…) | 1 | TemplateDiscoveryService.resolveInstanceFilePath | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:197 | | InstanceDiscoveryService.map(…) | 1 | InstanceDiscoveryService.filter(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:228 | | InstanceDiscoveryService.map(…) | 1 | InstanceDiscoveryService.flatMap(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:256 | | InstanceDiscoveryService.flatMap(…) | 1 | InstanceDiscoveryService.find(…) | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:257 | | InstanceDiscoveryService.map(…) | 1 | InstanceDiscoveryService.weighInstance | projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:295 | | ConfigurationService.loadConfigurationModule | 1 | ConfigurationService.loadJsonConfiguration | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:136 | | ConfigurationService.resolveConfigurationPath | 1 | ConfigurationService.findWorkspaceRoot | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:175 | | ConfigurationService.buildNameSubstitutions | 1 | RenderingService.buildNameSubstitutions | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:203 | | ConfigurationService.collectTemplate | 1 | TemplateDiscoveryService.collectTemplate | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:208 | | ConfigurationService.collectTemplates | 1 | TemplateDiscoveryService.collectTemplates | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:215 | | ConfigurationService.findInstances | 1 | InstanceDiscoveryService.findInstances | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:223 | | ConfigurationService.isAtTerminal | 1 | InputPromptingService.isAtTerminal | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:228 | | ConfigurationService.isProjectScoped | 1 | InstanceGroupService.isProjectScoped | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:233 | | ConfigurationService.map(…) | 1 | ConfigurationService.applyGeneratorDefaults | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:260 | | ConfigurationService.matchInstances | 1 | InstanceDiscoveryService.matchInstances | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:264 | | ConfigurationService.parseCommaDelimitedOption | 1 | InputService.parseCommaDelimitedOption | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:272 | | ConfigurationService.parseOptionalOption | 1 | InputService.parseOptionalOption | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:279 | | ConfigurationService.parseThresholdOption | 1 | InputService.parseThresholdOption | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:284 | | ConfigurationService.prepareDocuments | 1 | InstanceDiscoveryService.prepareDocuments | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:292 | | ConfigurationService.promptForTemplate | 1 | InputPromptingService.promptForTemplate | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:299 | | ConfigurationService.promptForTemplates | 1 | InputPromptingService.promptForTemplates | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:306 | | ConfigurationService.readWorkspaceGroups | 1 | InstanceDiscoveryService.readWorkspaceGroups | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:313 | | ConfigurationService.renderContent | 1 | RenderingService.renderContent | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:320 | | ConfigurationService.renderPath | 1 | RenderingService.renderPath | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:327 | | ConfigurationService.requireConfigurationPath | 1 | ConfigurationPathRequiredError.constructor | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:342 | | ConfigurationService.resolveGeneratorInputs | 1 | InputService.resolveGeneratorInputs | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:356 | | ConfigurationService.resolveInstanceFiles | 1 | InstanceDiscoveryService.resolveInstanceFiles | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:363 | | ConfigurationService.resolveInventoriedInstances | 1 | InstanceDiscoveryService.resolveInventoriedInstances | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:368 | | ConfigurationService.resolveInventoriedTemplates | 1 | InstanceDiscoveryService.resolveInventoriedTemplates | projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:375 |

🕸️ Codependix

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

Nx Neighborhood

graph LR
  conformetry_cli["conformetry-cli"]
  conformetry_configuration["conformetry-configuration"]
  conformetry_core["conformetry-core"]
  conformetry_examples["conformetry-examples"]
  conformetry_generation["conformetry-generation"]
  conformetry_languages["conformetry-languages"]
  conformetry_nx["conformetry-nx"]
  conformetry_validation["conformetry-validation"]
  synchronization["synchronization"]
  conformetry_cli --> conformetry_configuration
  conformetry_configuration --> conformetry_core
  conformetry_examples --> conformetry_configuration
  conformetry_generation --> conformetry_configuration
  conformetry_languages --> conformetry_configuration
  conformetry_nx --> conformetry_configuration
  conformetry_validation --> conformetry_configuration
  synchronization --> conformetry_configuration
  classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
  class conformetry_configuration subject

NestJS Module Graph

flowchart LR
  ConfigurationModule
  InputModule
  InstanceDiscoveryModule
  InstanceGroupModule
  RenderingModule
  TemplateDiscoveryModule
  ConfigurationModule --> InputModule
  ConfigurationModule --> InstanceDiscoveryModule
  ConfigurationModule --> InstanceGroupModule
  ConfigurationModule --> RenderingModule
  ConfigurationModule --> TemplateDiscoveryModule
  InstanceDiscoveryModule --> InstanceGroupModule
  InstanceDiscoveryModule --> RenderingModule
  InstanceDiscoveryModule --> TemplateDiscoveryModule
  TemplateDiscoveryModule --> RenderingModule

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_index_unit_test_ts["src/index.unit.test.ts"]
  file_src_modules_configuration_configuration_constants_ts["src/modules/configuration/configuration.constants.ts"]
  file_src_modules_configuration_configuration_module_ts["src/modules/configuration/configuration.module.ts"]
  file_src_modules_configuration_configuration_module_unit_test_ts["src/modules/configuration/configuration.module.unit.test.ts"]
  file_src_modules_configuration_configuration_service_ts["src/modules/configuration/configuration.service.ts"]
  file_src_modules_configuration_configuration_service_unit_test_ts["src/modules/configuration/configuration.service.unit.test.ts"]
  file_src_modules_configuration_configuration_types_ts["src/modules/configuration/configuration.types.ts"]
  file_src_modules_configuration_configuration_utilities_ts["src/modules/configuration/configuration.utilities.ts"]
  file_src_modules_input_input_options_service_ts["src/modules/input/input-options.service.ts"]
  file_src_modules_input_input_options_service_unit_test_ts["src/modules/input/input-options.service.unit.test.ts"]
  file_src_modules_input_input_prompting_service_ts["src/modules/input/input-prompting.service.ts"]
  file_src_modules_input_input_prompting_service_unit_test_ts["src/modules/input/input-prompting.service.unit.test.ts"]
  file_src_modules_input_input_schema_service_ts["src/modules/input/input-schema.service.ts"]
  file_src_modules_input_input_schema_service_unit_test_ts["src/modules/input/input-schema.service.unit.test.ts"]
  file_src_modules_input_input_constants_ts["src/modules/input/input.constants.ts"]
  file_src_modules_input_input_constants_unit_test_ts["src/modules/input/input.constants.unit.test.ts"]
  file_src_modules_input_input_module_ts["src/modules/input/input.module.ts"]
  file_src_modules_input_input_service_ts["src/modules/input/input.service.ts"]
  file_src_modules_input_input_service_unit_test_ts["src/modules/input/input.service.unit.test.ts"]
  file_src_modules_input_input_types_ts["src/modules/input/input.types.ts"]
  file_src_modules_instance_discovery_instance_discovery_locating_service_ts["src/modules/instance-discovery/instance-discovery-locating.service.ts"]
  file_src_modules_instance_discovery_instance_discovery_locating_service_unit_test_ts["src/modules/instance-discovery/instance-discovery-locating.service.unit.test.ts"]
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts["src/modules/instance-discovery/instance-discovery-matching.service.ts"]
  file_src_modules_instance_discovery_instance_discovery_matching_service_unit_test_ts["src/modules/instance-discovery/instance-discovery-matching.service.unit.test.ts"]
  file_src_modules_instance_discovery_instance_discovery_constants_ts["src/modules/instance-discovery/instance-discovery.constants.ts"]
  file_src_modules_instance_discovery_instance_discovery_module_ts["src/modules/instance-discovery/instance-discovery.module.ts"]
  file_src_modules_instance_discovery_instance_discovery_service_ts["src/modules/instance-discovery/instance-discovery.service.ts"]
  file_src_modules_instance_discovery_instance_discovery_service_unit_test_ts["src/modules/instance-discovery/instance-discovery.service.unit.test.ts"]
  file_src_modules_instance_discovery_instance_discovery_types_ts["src/modules/instance-discovery/instance-discovery.types.ts"]
  file_src_modules_instance_group_instance_group_constants_ts["src/modules/instance-group/instance-group.constants.ts"]
  file_src_modules_instance_group_instance_group_module_ts["src/modules/instance-group/instance-group.module.ts"]
  file_src_modules_instance_group_instance_group_service_ts["src/modules/instance-group/instance-group.service.ts"]
  file_src_modules_instance_group_instance_group_service_unit_test_ts["src/modules/instance-group/instance-group.service.unit.test.ts"]
  file_src_modules_instance_group_instance_group_types_ts["src/modules/instance-group/instance-group.types.ts"]
  file_src_modules_rendering_rendering_constants_ts["src/modules/rendering/rendering.constants.ts"]
  file_src_modules_rendering_rendering_module_ts["src/modules/rendering/rendering.module.ts"]
  file_src_modules_rendering_rendering_service_ts["src/modules/rendering/rendering.service.ts"]
  file_src_modules_rendering_rendering_service_unit_test_ts["src/modules/rendering/rendering.service.unit.test.ts"]
  file_src_modules_rendering_rendering_types_ts["src/modules/rendering/rendering.types.ts"]
  file_src_modules_rendering_rendering_utilities_ts["src/modules/rendering/rendering.utilities.ts"]
  file_src_modules_rendering_rendering_utilities_unit_test_ts["src/modules/rendering/rendering.utilities.unit.test.ts"]
  file_src_modules_template_discovery_template_discovery_constants_ts["src/modules/template-discovery/template-discovery.constants.ts"]
  file_src_modules_template_discovery_template_discovery_module_ts["src/modules/template-discovery/template-discovery.module.ts"]
  file_src_modules_template_discovery_template_discovery_service_ts["src/modules/template-discovery/template-discovery.service.ts"]
  file_src_modules_template_discovery_template_discovery_service_unit_test_ts["src/modules/template-discovery/template-discovery.service.unit.test.ts"]
  file_src_modules_template_discovery_template_discovery_types_ts["src/modules/template-discovery/template-discovery.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_index_unit_test_ts --> file_src_index_ts
  file_src_modules_configuration_configuration_constants_ts --> file_src_modules_configuration_configuration_utilities_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_configuration_configuration_service_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_input_input_module_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_instance_discovery_instance_discovery_module_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_instance_group_instance_group_module_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_rendering_rendering_module_ts
  file_src_modules_configuration_configuration_module_ts --> file_src_modules_template_discovery_template_discovery_module_ts
  file_src_modules_configuration_configuration_module_unit_test_ts --> file_src_modules_configuration_configuration_module_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_configuration_configuration_constants_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_input_input_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_input_input_types_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_instance_discovery_instance_discovery_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_instance_discovery_instance_discovery_types_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_instance_group_instance_group_types_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_rendering_rendering_types_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_configuration_configuration_service_ts --> file_src_modules_template_discovery_template_discovery_types_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_configuration_configuration_constants_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_configuration_configuration_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_input_input_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_instance_discovery_instance_discovery_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_configuration_configuration_service_unit_test_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_configuration_configuration_types_ts --> file_src_modules_configuration_configuration_constants_ts
  file_src_modules_configuration_configuration_types_ts --> file_src_modules_instance_group_instance_group_types_ts
  file_src_modules_configuration_configuration_utilities_ts --> file_src_modules_input_input_constants_ts
  file_src_modules_input_input_options_service_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_input_input_options_service_ts --> file_src_modules_input_input_constants_ts
  file_src_modules_input_input_options_service_unit_test_ts --> file_src_modules_input_input_options_service_ts
  file_src_modules_input_input_prompting_service_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_prompting_service_ts --> file_src_modules_input_input_constants_ts
  file_src_modules_input_input_prompting_service_ts --> file_src_modules_input_input_types_ts
  file_src_modules_input_input_prompting_service_unit_test_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_input_input_prompting_service_unit_test_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_schema_service_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_input_input_schema_service_ts --> file_src_modules_input_input_types_ts
  file_src_modules_input_input_schema_service_unit_test_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_constants_unit_test_ts --> file_src_modules_input_input_constants_ts
  file_src_modules_input_input_module_ts --> file_src_modules_input_input_options_service_ts
  file_src_modules_input_input_module_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_input_input_module_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_module_ts --> file_src_modules_input_input_service_ts
  file_src_modules_input_input_service_ts --> file_src_modules_input_input_options_service_ts
  file_src_modules_input_input_service_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_input_input_service_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_service_ts --> file_src_modules_input_input_constants_ts
  file_src_modules_input_input_service_ts --> file_src_modules_input_input_types_ts
  file_src_modules_input_input_service_unit_test_ts --> file_src_modules_input_input_options_service_ts
  file_src_modules_input_input_service_unit_test_ts --> file_src_modules_input_input_prompting_service_ts
  file_src_modules_input_input_service_unit_test_ts --> file_src_modules_input_input_schema_service_ts
  file_src_modules_input_input_service_unit_test_ts --> file_src_modules_input_input_service_ts
  file_src_modules_input_input_types_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_instance_discovery_instance_discovery_locating_service_ts --> file_src_modules_instance_discovery_instance_discovery_constants_ts
  file_src_modules_instance_discovery_instance_discovery_locating_service_ts --> file_src_modules_instance_discovery_instance_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_locating_service_unit_test_ts --> file_src_modules_instance_discovery_instance_discovery_locating_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_instance_discovery_instance_discovery_constants_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_instance_discovery_instance_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_rendering_rendering_types_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_rendering_rendering_utilities_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_ts --> file_src_modules_template_discovery_template_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_unit_test_ts --> file_src_modules_instance_discovery_instance_discovery_matching_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_unit_test_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_unit_test_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_instance_discovery_instance_discovery_matching_service_unit_test_ts --> file_src_modules_template_discovery_template_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_instance_discovery_instance_discovery_locating_service_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_instance_discovery_instance_discovery_matching_service_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_instance_discovery_instance_discovery_service_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_instance_group_instance_group_module_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_rendering_rendering_module_ts
  file_src_modules_instance_discovery_instance_discovery_module_ts --> file_src_modules_template_discovery_template_discovery_module_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_instance_discovery_instance_discovery_locating_service_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_instance_discovery_instance_discovery_matching_service_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_instance_discovery_instance_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_instance_group_instance_group_types_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_instance_discovery_instance_discovery_service_ts --> file_src_modules_template_discovery_template_discovery_types_ts
  file_src_modules_instance_discovery_instance_discovery_service_unit_test_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_instance_discovery_instance_discovery_service_unit_test_ts --> file_src_modules_instance_discovery_instance_discovery_module_ts
  file_src_modules_instance_discovery_instance_discovery_service_unit_test_ts --> file_src_modules_instance_discovery_instance_discovery_service_ts
  file_src_modules_instance_discovery_instance_discovery_service_unit_test_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_instance_discovery_instance_discovery_types_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_instance_discovery_instance_discovery_types_ts --> file_src_modules_rendering_rendering_types_ts
  file_src_modules_instance_discovery_instance_discovery_types_ts --> file_src_modules_template_discovery_template_discovery_types_ts
  file_src_modules_instance_group_instance_group_module_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_instance_group_instance_group_service_ts --> file_src_modules_instance_group_instance_group_types_ts
  file_src_modules_instance_group_instance_group_service_unit_test_ts --> file_src_modules_instance_group_instance_group_service_ts
  file_src_modules_rendering_rendering_module_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_rendering_rendering_service_ts --> file_src_modules_rendering_rendering_constants_ts
  file_src_modules_rendering_rendering_service_ts --> file_src_modules_rendering_rendering_types_ts
  file_src_modules_rendering_rendering_service_unit_test_ts --> file_src_modules_rendering_rendering_constants_ts
  file_src_modules_rendering_rendering_service_unit_test_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_rendering_rendering_utilities_ts --> file_src_modules_rendering_rendering_constants_ts
  file_src_modules_rendering_rendering_utilities_unit_test_ts --> file_src_modules_rendering_rendering_utilities_ts
  file_src_modules_template_discovery_template_discovery_module_ts --> file_src_modules_rendering_rendering_module_ts
  file_src_modules_template_discovery_template_discovery_module_ts --> file_src_modules_template_discovery_template_discovery_service_ts
  file_src_modules_template_discovery_template_discovery_service_ts --> file_src_modules_configuration_configuration_types_ts
  file_src_modules_template_discovery_template_discovery_service_ts --> file_src_modules_rendering_rendering_service_ts
  file_src_modules_template_discovery_template_discovery_service_ts --> file_src_