Add serialization functions for ProjectDocument

This commit is contained in:
2026-04-11 03:48:08 +02:00
parent 6a6462a368
commit 5b454b91ea

View File

@@ -1,6 +1,12 @@
import type { SceneDocument } from "../document/scene-document";
import { migrateSceneDocument } from "../document/migrate-scene-document";
import { assertSceneDocumentIsValid } from "../document/scene-document-validation";
import type { ProjectDocument, SceneDocument } from "../document/scene-document";
import {
migrateProjectDocument,
migrateSceneDocument
} from "../document/migrate-scene-document";
import {
assertProjectDocumentIsValid,
assertSceneDocumentIsValid
} from "../document/scene-document-validation";
export function serializeSceneDocument(document: SceneDocument): string {
assertSceneDocumentIsValid(document);
@@ -21,3 +27,24 @@ export function parseSceneDocumentJson(source: string): SceneDocument {
assertSceneDocumentIsValid(document);
return document;
}
export function serializeProjectDocument(document: ProjectDocument): string {
assertProjectDocumentIsValid(document);
return JSON.stringify(document, null, 2);
}
export function parseProjectDocumentJson(source: string): ProjectDocument {
let parsedValue: unknown;
try {
parsedValue = JSON.parse(source);
} catch (error) {
const cause =
error instanceof Error ? error.message : "Unknown JSON parse failure.";
throw new Error(`Project document JSON could not be parsed: ${cause}`);
}
const document = migrateProjectDocument(parsedValue);
assertProjectDocumentIsValid(document);
return document;
}