MCPcopy Create free account
hub / github.com/Acode-Foundation/Acode / validateBackupStructure

Function validateBackupStructure

src/settings/backupRestore.js:53–121  ·  view source on GitHub ↗

* Validates the structure of a backup object * Supports both v1 (legacy) and v2 (new) backup formats * @param {object} backup * @returns {{valid: boolean, errors: string[], warnings: string[], isLegacy: boolean}}

(backup)

Source from the content-addressed store, hash-verified

51 * @returns {{valid: boolean, errors: string[], warnings: string[], isLegacy: boolean}}
52 */
53function validateBackupStructure(backup) {
54 const errors = [];
55 const warnings = [];
56
57 if (!backup || typeof backup !== "object") {
58 errors.push(strings["backup not valid object"]);
59 return { valid: false, errors, warnings, isLegacy: false };
60 }
61
62 // Determine if this is a legacy (v1) backup
63 const isLegacy = !backup.version;
64
65 if (isLegacy) {
66 // Legacy backup (v1) - just needs settings or installedPlugins to be valid
67 const hasData =
68 backup.settings || backup.keyBindings || backup.installedPlugins;
69 if (!hasData) {
70 errors.push(strings["backup no data"]);
71 }
72 warnings.push(strings["backup legacy warning"]);
73 } else {
74 // Version 2+ backup
75 if (backup.version >= 2) {
76 if (!backup.metadata) {
77 warnings.push(strings["backup missing metadata"]);
78 }
79
80 // Verify checksum if present
81 if (backup.checksum) {
82 try {
83 const dataToCheck = JSON.stringify({
84 settings: backup.settings,
85 keyBindings: backup.keyBindings,
86 installedPlugins: backup.installedPlugins,
87 });
88 const expectedChecksum = generateChecksum(dataToCheck);
89 if (backup.checksum !== expectedChecksum) {
90 warnings.push(strings["backup checksum mismatch"]);
91 }
92 } catch (e) {
93 warnings.push(strings["backup checksum verify failed"]);
94 }
95 }
96 }
97 }
98
99 // Validate settings (both versions)
100 if (backup.settings !== undefined && typeof backup.settings !== "object") {
101 errors.push(strings["backup invalid settings"]);
102 }
103
104 // Validate keyBindings (both versions)
105 if (
106 backup.keyBindings !== undefined &&
107 typeof backup.keyBindings !== "object"
108 ) {
109 errors.push(strings["backup invalid keybindings"]);
110 }

Callers 1

backupRestore.jsFile · 0.85

Calls 1

generateChecksumFunction · 0.85

Tested by

no test coverage detected