Add serialization functions for ProjectDocument
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user