推进 OPFS 机器会话快照保存入口
This commit is contained in:
@@ -89,6 +89,12 @@ export async function saveSessionSnapshot(sessionId, payload, options = {}) {
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
export async function saveMachineSessionSnapshot(sessionId, machineId, options = {}) {
|
||||
assertPlainObject(options, "machine session snapshot save options");
|
||||
const payload = createMachineSessionSnapshotPayload(machineId, options);
|
||||
return saveSessionSnapshot(sessionId, payload, options);
|
||||
}
|
||||
|
||||
export async function loadSessionSnapshot(sessionId, options = {}) {
|
||||
const path = sessionSnapshotPath(sessionId, options.filename);
|
||||
const text = await loadTextFile(path, options.storage);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
import {
|
||||
createMachineSessionSnapshotPayload,
|
||||
loadSessionSnapshot,
|
||||
saveMachineSessionSnapshot,
|
||||
saveSessionSnapshot,
|
||||
} from "../../runtime/opfs/snapshot-store.js";
|
||||
import {
|
||||
@@ -204,6 +205,42 @@ TOOL_TABLE = browser-tool.tbl
|
||||
customSnapshot.metadata.source,
|
||||
"custom snapshot metadata",
|
||||
);
|
||||
const machineSessionSnapshot = await saveMachineSessionSnapshot(
|
||||
"browser-machine-session",
|
||||
"browser-smoke",
|
||||
{
|
||||
filename: "browser-machine-snapshot.json",
|
||||
parameterFilename: "browser-linuxcnc.var",
|
||||
toolTableFilename: "browser-tool.tbl",
|
||||
gcodeFilename: "browser-smoke.ngc",
|
||||
createdAt: "2026-06-08T00:00:00.000Z",
|
||||
metadata: { source: "browser-machine-session" },
|
||||
},
|
||||
);
|
||||
const loadedMachineSessionSnapshot = await loadSessionSnapshot(
|
||||
"browser-machine-session",
|
||||
{ filename: "browser-machine-snapshot.json" },
|
||||
);
|
||||
assertEqual(
|
||||
machineSessionSnapshot.payload.files.parameters,
|
||||
"linuxcnc/machines/browser-smoke/browser-linuxcnc.var",
|
||||
"machine session snapshot parameter file",
|
||||
);
|
||||
assertEqual(
|
||||
machineSessionSnapshot.payload.files.toolTable,
|
||||
"linuxcnc/machines/browser-smoke/browser-tool.tbl",
|
||||
"machine session snapshot tool table",
|
||||
);
|
||||
assertEqual(
|
||||
loadedMachineSessionSnapshot.payload.files.gcode,
|
||||
"linuxcnc/gcode/browser-smoke.ngc",
|
||||
"machine session snapshot G-code",
|
||||
);
|
||||
assertEqual(
|
||||
loadedMachineSessionSnapshot.metadata.source,
|
||||
"browser-machine-session",
|
||||
"machine session snapshot metadata",
|
||||
);
|
||||
await assertRejects(
|
||||
"browser snapshot invalid filename save",
|
||||
() => saveSessionSnapshot("browser-session", {}, {
|
||||
|
||||
@@ -19,6 +19,7 @@ import {
|
||||
createMachineSessionSnapshotPayload,
|
||||
createSessionSnapshot,
|
||||
loadSessionSnapshot,
|
||||
saveMachineSessionSnapshot,
|
||||
saveSessionSnapshot,
|
||||
validateSessionSnapshot,
|
||||
} from "../../../runtime/opfs/snapshot-store.js";
|
||||
@@ -325,6 +326,30 @@ assert.deepEqual(
|
||||
}),
|
||||
customSnapshot,
|
||||
);
|
||||
const machineSessionSnapshot = await saveMachineSessionSnapshot(
|
||||
"machine-session-1",
|
||||
"xyzab-tdr",
|
||||
{
|
||||
storage,
|
||||
filename: "machine-session-snapshot.json",
|
||||
gcodeFilename: "fixture.ngc",
|
||||
createdAt: "2026-06-08T00:00:00.000Z",
|
||||
metadata: { source: "node-machine-session" },
|
||||
},
|
||||
);
|
||||
assertSessionSnapshotStoragePath(
|
||||
"machine-session-1",
|
||||
sessionSnapshotPath("machine-session-1", "machine-session-snapshot.json"),
|
||||
"machine-session-snapshot.json",
|
||||
);
|
||||
assert.deepEqual(machineSessionSnapshot.payload, snapshotPayload);
|
||||
assert.deepEqual(
|
||||
await loadSessionSnapshot("machine-session-1", {
|
||||
storage,
|
||||
filename: "machine-session-snapshot.json",
|
||||
}),
|
||||
machineSessionSnapshot,
|
||||
);
|
||||
|
||||
await saveMachineTextFiles("xyzab-tdr", {
|
||||
ini: "[EMC]\nMACHINE = xyzab-tdr\n",
|
||||
|
||||
Reference in New Issue
Block a user