InternalMap of storage keys to their values.
OptionalappVersion: stringApplication version to include in metadata (optional).
Backup data object with metadata.
export function createBackupFromData(
dataMap: Record<string, string>,
appVersion?: string,
): {
data: BackupData;
backupId: string;
size: number;
} {
try {
console.log("[Backup] Creating backup from raw data...");
const backupData: BackupData = {
metadata: createBackupMetadata(appVersion),
data: {},
};
// Add provided data to backup
for (const key of BACKUPABLE_KEYS) {
if (dataMap[key]) {
backupData.data[key] = dataMap[key];
}
}
// Generate backup ID
const backupId = `backup_${Date.now()}`;
// Calculate backup size
const backupSize = JSON.stringify(backupData).length;
console.log(
`[Backup] Backup from data size: ${(backupSize / 1024 / 1024).toFixed(2)} MB`,
);
console.log("[Backup] Backup from data created successfully:", backupId);
return { data: backupData, backupId, size: backupSize };
} catch (error) {
console.error("[Backup] Failed to create backup from data:", error);
throw new Error(
`Failed to create backup from data: ${error instanceof Error ? error.message : "Unknown error"}`,
);
}
}
Creates a backup from raw data object for the main process. Used when the main process doesn't have access to the renderer's storage object.