/** * Framework Resolver * * Determines the `framework` field (a project's "libType" — the SET of runtime * environments it is validated to run in) written per project into * architecture/dependencies.json. A project carries a MULTI-VALUE env set drawn * from the atomic values: * * browser · react · angular · node · express * * A project lists every environment it promises to run in, e.g. * `framework:browser` + `framework:node`. This is the field the * `library-types-match-client` rule reads (via the up-set lattice) to keep an * express project from depending on a browser-only lib (and vice-versa). The * legacy single-value `all` "usable by any side" bucket is REMOVED — a project * must declare its actual env set. * * Resolution order: * 1. Explicit nx tags `framework:` on the project (project.json tags) — * any value is allowed so new frameworks need no code change here, and MANY * are allowed (the env set). This is the source of truth; every project * should carry at least one. * 2. Inference from the project's package.json dependencies (a single-element * set fallback). * 3. FAILURE: no tag and nothing inferable is a problem, never a silent 'all'. */ import { ProjectInfo } from './project-info'; export declare const FRAMEWORK_TAG_PREFIX = "framework:"; export declare class FrameworkResolution { /** Resolved env set (never empty), or null when resolution failed. */ readonly frameworks: string[] | null; /** Problem description when resolution failed, otherwise null */ readonly problem: string | null; constructor( /** Resolved env set (never empty), or null when resolution failed. */ frameworks: string[] | null, /** Problem description when resolution failed, otherwise null */ problem: string | null); } export declare function resolveFramework(info: ProjectInfo, workspaceRoot: string): FrameworkResolution;