Files
reverse-engineering-anything/src/application/javascript/JavaScriptJsonModules.ts
T

38 lines
1.2 KiB
TypeScript

import type { JavaScriptJsonModuleObservation } from "./JavaScriptArtifactAnalysisTypes.js";
import type { JavaScriptArtifactFile } from "../../domain/javascript/javascriptArtifactFiles.js";
import type { JavaScriptJsonDocuments } from "./JavaScriptJsonDocuments.js";
/** Parse one approved JSON module without evaluating JavaScript or resolving imports. */
export const analyzeJavaScriptJsonModule = (
file: JavaScriptArtifactFile,
documents: JavaScriptJsonDocuments,
): JavaScriptJsonModuleObservation => {
const document = documents.read(file);
if (document.status === "unavailable")
return {
path: file.path,
sha256: file.sha256,
status: "unavailable",
top_level_keys: [],
omitted_top_level_keys: null,
limitation: `JSON module text was unavailable: ${document.reason}.`,
};
if (document.status === "invalid")
return {
path: file.path,
sha256: file.sha256,
status: "invalid",
top_level_keys: [],
omitted_top_level_keys: 0,
limitation: "JSON module is not valid JSON.",
};
return {
path: file.path,
sha256: file.sha256,
status: "included",
top_level_keys: document.topLevelKeys,
omitted_top_level_keys: 0,
limitation: null,
};
};