Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/backup/node/backup.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { URI } from '../../../base/common/uri.js';
7
import { IBaseBackupInfo, IFolderBackupInfo, IWorkspaceBackupInfo } from '../common/backup.js';
8
9
export interface IEmptyWindowBackupInfo extends IBaseBackupInfo {
10
readonly backupFolder: string;
11
}
12
13
export function isEmptyWindowBackupInfo(obj: unknown): obj is IEmptyWindowBackupInfo {
14
const candidate = obj as IEmptyWindowBackupInfo | undefined;
15
16
return typeof candidate?.backupFolder === 'string';
17
}
18
19
export interface ISerializedWorkspaceBackupInfo {
20
readonly id: string;
21
readonly configURIPath: string;
22
remoteAuthority?: string;
23
}
24
25
export function deserializeWorkspaceInfos(serializedBackupWorkspaces: ISerializedBackupWorkspaces): IWorkspaceBackupInfo[] {
26
let workspaceBackupInfos: IWorkspaceBackupInfo[] = [];
27
try {
28
if (Array.isArray(serializedBackupWorkspaces.workspaces)) {
29
workspaceBackupInfos = serializedBackupWorkspaces.workspaces.map(workspace => (
30
{
31
workspace: {
32
id: workspace.id,
33
configPath: URI.parse(workspace.configURIPath)
34
},
35
remoteAuthority: workspace.remoteAuthority
36
}
37
));
38
}
39
} catch (e) {
40
// ignore URI parsing exceptions
41
}
42
43
return workspaceBackupInfos;
44
}
45
46
export interface ISerializedFolderBackupInfo {
47
readonly folderUri: string;
48
remoteAuthority?: string;
49
}
50
51
export function deserializeFolderInfos(serializedBackupWorkspaces: ISerializedBackupWorkspaces): IFolderBackupInfo[] {
52
let folderBackupInfos: IFolderBackupInfo[] = [];
53
try {
54
if (Array.isArray(serializedBackupWorkspaces.folders)) {
55
folderBackupInfos = serializedBackupWorkspaces.folders.map(folder => (
56
{
57
folderUri: URI.parse(folder.folderUri),
58
remoteAuthority: folder.remoteAuthority
59
}
60
));
61
}
62
} catch (e) {
63
// ignore URI parsing exceptions
64
}
65
66
return folderBackupInfos;
67
}
68
69
export interface ISerializedEmptyWindowBackupInfo extends IEmptyWindowBackupInfo { }
70
71
export interface ISerializedBackupWorkspaces {
72
readonly workspaces: ISerializedWorkspaceBackupInfo[];
73
readonly folders: ISerializedFolderBackupInfo[];
74
readonly emptyWindows: ISerializedEmptyWindowBackupInfo[];
75
}
76
77