mirror of
https://github.com/morluto/rea.git
synced 2026-10-29 10:55:57 +00:00
113 lines
3.5 KiB
TypeScript
113 lines
3.5 KiB
TypeScript
import type {
|
|
JavaScriptSourceRange,
|
|
JavaScriptStaticAnalysis,
|
|
} from "../domain/javascriptStaticAnalysisTypes.js";
|
|
import type { JavaScriptSemanticIr } from "../domain/javascriptSemanticIr.js";
|
|
import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js";
|
|
|
|
interface JavaScriptStructuredObservation {
|
|
readonly path: string;
|
|
readonly sha256: string;
|
|
}
|
|
|
|
interface JavaScriptPackageValues {
|
|
readonly name: string | null;
|
|
readonly version: string | null;
|
|
readonly main: string | null;
|
|
readonly renderer: string | null;
|
|
}
|
|
|
|
/** Parsed package metadata used only for static entrypoint discovery. */
|
|
export type JavaScriptPackageObservation = JavaScriptStructuredObservation &
|
|
(
|
|
| (JavaScriptPackageValues & {
|
|
readonly status: "included";
|
|
readonly limitation: null;
|
|
})
|
|
| {
|
|
readonly status: "invalid" | "unavailable";
|
|
readonly name: null;
|
|
readonly version: null;
|
|
readonly main: null;
|
|
readonly renderer: null;
|
|
readonly limitation: string;
|
|
}
|
|
);
|
|
|
|
/** 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 a local source map. */
|
|
export interface JavaScriptSourceMapOriginal {
|
|
readonly source: string;
|
|
readonly content: string | null;
|
|
readonly content_sha256: string | null;
|
|
}
|
|
|
|
/** Local source-map parse result. */
|
|
export type JavaScriptSourceMapObservation = JavaScriptStructuredObservation &
|
|
(
|
|
| {
|
|
readonly status: "included";
|
|
readonly sources: readonly JavaScriptSourceMapOriginal[];
|
|
readonly limitation: null;
|
|
}
|
|
| {
|
|
readonly status: "invalid";
|
|
readonly sources: readonly [];
|
|
readonly limitation: string;
|
|
}
|
|
);
|
|
|
|
/** Parse status for one inventoried JSON module. */
|
|
export type JavaScriptJsonModuleObservation = JavaScriptStructuredObservation &
|
|
(
|
|
| {
|
|
readonly status: "included";
|
|
readonly top_level_keys: readonly string[];
|
|
readonly omitted_top_level_keys: number;
|
|
readonly limitation: null;
|
|
}
|
|
| {
|
|
readonly status: "invalid";
|
|
readonly top_level_keys: readonly [];
|
|
readonly omitted_top_level_keys: 0;
|
|
readonly limitation: string;
|
|
}
|
|
| {
|
|
readonly status: "unavailable";
|
|
readonly top_level_keys: readonly [];
|
|
readonly omitted_top_level_keys: null;
|
|
readonly limitation: string;
|
|
}
|
|
);
|
|
|
|
/** One relevant file plus optional AST-only JavaScript facts. */
|
|
export interface AnalyzedJavaScriptArtifactFile {
|
|
readonly file: JavaScriptArtifactFile;
|
|
readonly javascript: JavaScriptStaticAnalysis | null;
|
|
readonly semantic: {
|
|
readonly ir: JavaScriptSemanticIr;
|
|
} | null;
|
|
}
|
|
|
|
/** Complete static-analysis projection before graph construction. */
|
|
export interface JavaScriptArtifactAnalysis {
|
|
readonly files: readonly AnalyzedJavaScriptArtifactFile[];
|
|
readonly packages: readonly JavaScriptPackageObservation[];
|
|
readonly json_modules: readonly JavaScriptJsonModuleObservation[];
|
|
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[];
|
|
}
|