Files
rea/src/application/JavaScriptArtifactAnalysisTypes.ts
T

110 lines
3.9 KiB
TypeScript

import type {
JavaScriptSourceRange,
JavaScriptStaticAnalysis,
} from "../domain/javascriptStaticAnalysisTypes.js";
import type {
JavaScriptSemanticIr,
JavaScriptSemanticLimits,
} from "../domain/javascriptSemanticIr.js";
import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js";
/** Parsed package metadata used only for static entrypoint discovery. */
export interface JavaScriptPackageObservation {
readonly path: string;
readonly sha256: string;
readonly status: "included" | "invalid" | "unavailable";
readonly name: string | null;
readonly version: string | null;
readonly main: string | null;
readonly renderer: string | null;
readonly limitation: string | null;
}
/** One HTML script source observed without building or executing a DOM. */
export interface JavaScriptHtmlScriptObservation {
readonly html_path: string;
readonly script_path: string;
readonly base_href: string | null;
readonly location: JavaScriptSourceRange;
}
/** One original source declared by an approved local source map. */
export interface JavaScriptSourceMapOriginal {
readonly source: string;
readonly content: string | null;
readonly content_sha256: string | null;
}
/** Bounded local source-map parse result. */
export interface JavaScriptSourceMapObservation {
readonly path: string;
readonly sha256: string;
readonly status: "included" | "truncated" | "invalid" | "not-approved";
readonly sources: readonly JavaScriptSourceMapOriginal[];
readonly omitted_sources: number | null;
readonly limitation: string | null;
}
/** Bounded parse status for one inventoried JSON module. */
export interface JavaScriptJsonModuleObservation {
readonly path: string;
readonly sha256: string;
readonly status: "included" | "invalid" | "unavailable";
readonly top_level_keys: readonly string[];
readonly omitted_top_level_keys: number | null;
readonly limitation: string | null;
}
/** One bounded entry recovered from a bundler manifest or metafile. */
export interface JavaScriptBundlerManifestEntry {
readonly key: string;
readonly source: string | null;
readonly file: string | null;
readonly entry: boolean | null;
readonly imports: readonly string[];
readonly dynamic_imports: readonly string[];
readonly css: readonly string[];
readonly assets: readonly string[];
}
/** Bounded Vite/Rollup manifest or esbuild metafile parse result. */
export interface JavaScriptBundlerManifestObservation {
readonly path: string;
readonly sha256: string;
readonly status: "included" | "truncated" | "invalid" | "unavailable";
readonly bundler: "vite" | "rollup" | "esbuild";
readonly manifest_kind:
| "vite-manifest"
| "rollup-manifest"
| "esbuild-metafile";
readonly entries: readonly JavaScriptBundlerManifestEntry[];
readonly omitted_entries: number | null;
readonly limitation: string | null;
}
/** One relevant file plus optional AST-only JavaScript facts. */
export interface AnalyzedJavaScriptArtifactFile {
readonly file: JavaScriptArtifactFile;
readonly javascript: JavaScriptStaticAnalysis | null;
readonly semantic: {
readonly ir: JavaScriptSemanticIr;
readonly limits: JavaScriptSemanticLimits;
} | null;
}
/** Complete bounded static-analysis projection before graph construction. */
export interface JavaScriptArtifactAnalysis {
readonly files: readonly AnalyzedJavaScriptArtifactFile[];
readonly packages: readonly JavaScriptPackageObservation[];
readonly json_modules: readonly JavaScriptJsonModuleObservation[];
readonly bundler_manifests: readonly JavaScriptBundlerManifestObservation[];
readonly html_scripts: readonly JavaScriptHtmlScriptObservation[];
readonly source_maps: readonly JavaScriptSourceMapObservation[];
readonly visited_ast_nodes: number;
readonly findings: number;
readonly modules: number;
readonly parse_failures: number;
readonly truncated_scopes: number;
readonly limitations: readonly string[];
}