110 lines
3.9 KiB
TypeScript
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[];
|
|
}
|