推进 OPFS 机器会话快照加载入口

This commit is contained in:
2026-06-14 15:09:26 +08:00
parent a829984300
commit 37daf58796
4 changed files with 145 additions and 0 deletions

View File

@@ -27,6 +27,27 @@ function optionalOpfsPath(value, label) {
return normalizeOpfsPath(value);
}
function requiredSnapshotFilePath(files, key, label) {
const value = files[key];
if (typeof value !== "string") {
throw new Error(`${label} must be a string.`);
}
return normalizeOpfsPath(value);
}
function validateMachineSessionSnapshotPayload(payload, machineId) {
assertPlainObject(payload, "machine session snapshot payload");
if (payload.machineId !== machineId) {
throw new Error(`Machine session snapshot id mismatch: ${payload.machineId}`);
}
assertPlainObject(payload.files, "machine session snapshot files");
requiredSnapshotFilePath(payload.files, "ini", "machine session INI OPFS path");
requiredSnapshotFilePath(payload.files, "parameters", "machine session parameter OPFS path");
requiredSnapshotFilePath(payload.files, "toolTable", "machine session tool table OPFS path");
optionalOpfsPath(payload.files.gcode, "machine session G-code OPFS path");
return payload;
}
export function createMachineSessionSnapshotPayload(machineId, options = {}) {
assertPlainObject(options, "machine session snapshot options");
const ini = optionalOpfsPath(options.iniOpfsPath, "INI OPFS path") ??
@@ -95,6 +116,12 @@ export async function saveMachineSessionSnapshot(sessionId, machineId, options =
return saveSessionSnapshot(sessionId, payload, options);
}
export async function loadMachineSessionSnapshot(sessionId, machineId, options = {}) {
const snapshot = await loadSessionSnapshot(sessionId, options);
validateMachineSessionSnapshotPayload(snapshot.payload, machineId);
return snapshot;
}
export async function loadSessionSnapshot(sessionId, options = {}) {
const path = sessionSnapshotPath(sessionId, options.filename);
const text = await loadTextFile(path, options.storage);