cursor-history 0.5.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -0
- package/README.md +385 -2
- package/dist/cli/commands/backup.d.ts +9 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +168 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +39 -7
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/list-backups.d.ts +9 -0
- package/dist/cli/commands/list-backups.d.ts.map +1 -0
- package/dist/cli/commands/list-backups.js +166 -0
- package/dist/cli/commands/list-backups.js.map +1 -0
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +44 -9
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate-session.d.ts +12 -0
- package/dist/cli/commands/migrate-session.d.ts.map +1 -0
- package/dist/cli/commands/migrate-session.js +125 -0
- package/dist/cli/commands/migrate-session.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +13 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +122 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/restore.d.ts +9 -0
- package/dist/cli/commands/restore.d.ts.map +1 -0
- package/dist/cli/commands/restore.js +192 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +31 -3
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/show.d.ts.map +1 -1
- package/dist/cli/commands/show.js +32 -4
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/errors.d.ts +56 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +90 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/index.js +11 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/backup.d.ts +89 -0
- package/dist/core/backup.d.ts.map +1 -0
- package/dist/core/backup.js +709 -0
- package/dist/core/backup.js.map +1 -0
- package/dist/core/migrate.d.ts +40 -0
- package/dist/core/migrate.d.ts.map +1 -0
- package/dist/core/migrate.js +586 -0
- package/dist/core/migrate.js.map +1 -0
- package/dist/core/storage.d.ts +78 -6
- package/dist/core/storage.d.ts.map +1 -1
- package/dist/core/storage.js +327 -45
- package/dist/core/storage.js.map +1 -1
- package/dist/core/types.d.ts +280 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/lib/backup.d.ts +98 -0
- package/dist/lib/backup.d.ts.map +1 -0
- package/dist/lib/backup.js +108 -0
- package/dist/lib/backup.js.map +1 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +81 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +257 -30
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +404 -54
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/index.d.ts +219 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +520 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/platform.d.ts +11 -0
- package/dist/lib/platform.d.ts.map +1 -1
- package/dist/lib/platform.js +32 -0
- package/dist/lib/platform.js.map +1 -1
- package/dist/lib/types.d.ts +374 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +9 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +17 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +20 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +32 -4
package/dist/lib/errors.js
CHANGED
|
@@ -1,90 +1,440 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Custom error classes for library API
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: This is a library interface for direct import and use in TypeScript/JavaScript
|
|
5
|
+
* projects, NOT a network/REST API.
|
|
3
6
|
*/
|
|
4
7
|
/**
|
|
5
|
-
*
|
|
8
|
+
* Thrown when database is locked by Cursor or another process.
|
|
9
|
+
*
|
|
10
|
+
* Recovery: Close Cursor IDE and retry, or implement custom retry logic.
|
|
6
11
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
export class DatabaseLockedError extends Error {
|
|
13
|
+
name = 'DatabaseLockedError';
|
|
14
|
+
/** Path to locked database file */
|
|
15
|
+
path;
|
|
16
|
+
constructor(path) {
|
|
17
|
+
super(`Database is locked: ${path}. Close Cursor or retry later.`);
|
|
18
|
+
this.path = path;
|
|
19
|
+
if (Error.captureStackTrace) {
|
|
20
|
+
Error.captureStackTrace(this, DatabaseLockedError);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Thrown when database file or directory does not exist.
|
|
26
|
+
*
|
|
27
|
+
* Recovery: Verify Cursor is installed, check dataPath configuration.
|
|
28
|
+
*/
|
|
29
|
+
export class DatabaseNotFoundError extends Error {
|
|
30
|
+
name = 'DatabaseNotFoundError';
|
|
31
|
+
/** Path that was not found */
|
|
32
|
+
path;
|
|
33
|
+
constructor(path) {
|
|
34
|
+
super(`Database not found: ${path}. Check dataPath configuration.`);
|
|
35
|
+
this.path = path;
|
|
36
|
+
if (Error.captureStackTrace) {
|
|
37
|
+
Error.captureStackTrace(this, DatabaseNotFoundError);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when configuration parameters are invalid.
|
|
43
|
+
*
|
|
44
|
+
* Recovery: Fix configuration values per LibraryConfig validation rules.
|
|
45
|
+
*/
|
|
46
|
+
export class InvalidConfigError extends Error {
|
|
47
|
+
name = 'InvalidConfigError';
|
|
48
|
+
/** Name of invalid config field */
|
|
49
|
+
field;
|
|
50
|
+
/** Invalid value provided */
|
|
51
|
+
value;
|
|
52
|
+
constructor(field, value, reason) {
|
|
53
|
+
super(`Invalid config.${field}: ${reason} (got: ${JSON.stringify(value)})`);
|
|
54
|
+
this.field = field;
|
|
55
|
+
this.value = value;
|
|
56
|
+
if (Error.captureStackTrace) {
|
|
57
|
+
Error.captureStackTrace(this, InvalidConfigError);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Type guard to check if an error is a DatabaseLockedError.
|
|
63
|
+
*/
|
|
64
|
+
export function isDatabaseLockedError(error) {
|
|
65
|
+
return error instanceof DatabaseLockedError;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Type guard to check if an error is a DatabaseNotFoundError.
|
|
69
|
+
*/
|
|
70
|
+
export function isDatabaseNotFoundError(error) {
|
|
71
|
+
return error instanceof DatabaseNotFoundError;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Type guard to check if an error is an InvalidConfigError.
|
|
75
|
+
*/
|
|
76
|
+
export function isInvalidConfigError(error) {
|
|
77
|
+
return error instanceof InvalidConfigError;
|
|
78
|
+
}
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// Migration Errors
|
|
81
|
+
// ============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Thrown when a session ID or index cannot be resolved.
|
|
84
|
+
*
|
|
85
|
+
* Recovery: Check session exists with `listSessions()`, use valid ID or index.
|
|
86
|
+
*/
|
|
87
|
+
export class SessionNotFoundError extends Error {
|
|
88
|
+
name = 'SessionNotFoundError';
|
|
89
|
+
/** The identifier that was not found (index or UUID) */
|
|
90
|
+
identifier;
|
|
91
|
+
constructor(identifier) {
|
|
92
|
+
super(`Session not found: ${identifier}. Use 'cursor-history list' to see available sessions.`);
|
|
93
|
+
this.identifier = identifier;
|
|
94
|
+
if (Error.captureStackTrace) {
|
|
95
|
+
Error.captureStackTrace(this, SessionNotFoundError);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Thrown when destination workspace path has no workspace directory.
|
|
101
|
+
*
|
|
102
|
+
* Recovery: Open the project in Cursor first to create the workspace directory.
|
|
103
|
+
*/
|
|
104
|
+
export class WorkspaceNotFoundError extends Error {
|
|
105
|
+
name = 'WorkspaceNotFoundError';
|
|
106
|
+
/** The workspace path that was not found */
|
|
107
|
+
path;
|
|
108
|
+
constructor(path) {
|
|
109
|
+
super(`No workspace found for path: ${path}. Please open the project in Cursor first.`);
|
|
110
|
+
this.path = path;
|
|
111
|
+
if (Error.captureStackTrace) {
|
|
112
|
+
Error.captureStackTrace(this, WorkspaceNotFoundError);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Thrown when source and destination paths are the same.
|
|
118
|
+
*
|
|
119
|
+
* Recovery: Specify different source and destination paths.
|
|
120
|
+
*/
|
|
121
|
+
export class SameWorkspaceError extends Error {
|
|
122
|
+
name = 'SameWorkspaceError';
|
|
123
|
+
/** The path that was specified for both source and destination */
|
|
124
|
+
path;
|
|
125
|
+
constructor(path) {
|
|
126
|
+
super(`Source and destination are the same: ${path}`);
|
|
127
|
+
this.path = path;
|
|
128
|
+
if (Error.captureStackTrace) {
|
|
129
|
+
Error.captureStackTrace(this, SameWorkspaceError);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Thrown when no sessions are found for the specified source workspace.
|
|
135
|
+
*
|
|
136
|
+
* Recovery: Check the source path is correct, verify sessions exist with `list --workspace`.
|
|
137
|
+
*/
|
|
138
|
+
export class NoSessionsFoundError extends Error {
|
|
139
|
+
name = 'NoSessionsFoundError';
|
|
140
|
+
/** The source workspace path */
|
|
141
|
+
path;
|
|
142
|
+
constructor(path) {
|
|
143
|
+
super(`No sessions found for workspace: ${path}. Use 'cursor-history list --workspace "${path}"' to verify.`);
|
|
144
|
+
this.path = path;
|
|
145
|
+
if (Error.captureStackTrace) {
|
|
146
|
+
Error.captureStackTrace(this, NoSessionsFoundError);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Thrown when destination has existing sessions and --force not specified.
|
|
152
|
+
*
|
|
153
|
+
* Recovery: Use --force flag to proceed with additive merge.
|
|
154
|
+
*/
|
|
155
|
+
export class DestinationHasSessionsError extends Error {
|
|
156
|
+
name = 'DestinationHasSessionsError';
|
|
157
|
+
/** The destination workspace path */
|
|
158
|
+
path;
|
|
159
|
+
/** Number of existing sessions at destination */
|
|
160
|
+
sessionCount;
|
|
161
|
+
constructor(path, sessionCount) {
|
|
162
|
+
super(`Destination already has ${sessionCount} session(s): ${path}. ` +
|
|
163
|
+
`Use --force to proceed (will add sessions alongside existing ones).`);
|
|
164
|
+
this.path = path;
|
|
165
|
+
this.sessionCount = sessionCount;
|
|
166
|
+
if (Error.captureStackTrace) {
|
|
167
|
+
Error.captureStackTrace(this, DestinationHasSessionsError);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Type guard to check if an error is a SessionNotFoundError.
|
|
173
|
+
*/
|
|
174
|
+
export function isSessionNotFoundError(error) {
|
|
175
|
+
return error instanceof SessionNotFoundError;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Type guard to check if an error is a WorkspaceNotFoundError.
|
|
179
|
+
*/
|
|
180
|
+
export function isWorkspaceNotFoundError(error) {
|
|
181
|
+
return error instanceof WorkspaceNotFoundError;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Type guard to check if an error is a SameWorkspaceError.
|
|
185
|
+
*/
|
|
186
|
+
export function isSameWorkspaceError(error) {
|
|
187
|
+
return error instanceof SameWorkspaceError;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Type guard to check if an error is a NoSessionsFoundError.
|
|
191
|
+
*/
|
|
192
|
+
export function isNoSessionsFoundError(error) {
|
|
193
|
+
return error instanceof NoSessionsFoundError;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Type guard to check if an error is a DestinationHasSessionsError.
|
|
197
|
+
*/
|
|
198
|
+
export function isDestinationHasSessionsError(error) {
|
|
199
|
+
return error instanceof DestinationHasSessionsError;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Thrown when destination workspace path is nested within source workspace.
|
|
203
|
+
*
|
|
204
|
+
* Recovery: Choose a destination that is not a subdirectory of the source.
|
|
205
|
+
*/
|
|
206
|
+
export class NestedPathError extends Error {
|
|
207
|
+
name = 'NestedPathError';
|
|
208
|
+
/** The source workspace path */
|
|
209
|
+
source;
|
|
210
|
+
/** The destination workspace path (nested in source) */
|
|
211
|
+
destination;
|
|
212
|
+
constructor(source, destination) {
|
|
213
|
+
super(`Destination path is nested within source: ${destination} is inside ${source}. ` +
|
|
214
|
+
`This would cause infinite path replacement loops. Choose a different destination.`);
|
|
215
|
+
this.source = source;
|
|
216
|
+
this.destination = destination;
|
|
217
|
+
if (Error.captureStackTrace) {
|
|
218
|
+
Error.captureStackTrace(this, NestedPathError);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Type guard to check if an error is a NestedPathError.
|
|
224
|
+
*/
|
|
225
|
+
export function isNestedPathError(error) {
|
|
226
|
+
return error instanceof NestedPathError;
|
|
227
|
+
}
|
|
228
|
+
// ============================================================================
|
|
229
|
+
// Backup Errors
|
|
230
|
+
// ============================================================================
|
|
14
231
|
/**
|
|
15
|
-
*
|
|
232
|
+
* Base error for backup operations.
|
|
233
|
+
*
|
|
234
|
+
* Recovery: Check specific subclass for targeted recovery actions.
|
|
16
235
|
*/
|
|
17
|
-
export class
|
|
18
|
-
|
|
19
|
-
constructor(message
|
|
236
|
+
export class BackupError extends Error {
|
|
237
|
+
name = 'BackupError';
|
|
238
|
+
constructor(message) {
|
|
20
239
|
super(message);
|
|
21
|
-
|
|
22
|
-
|
|
240
|
+
if (Error.captureStackTrace) {
|
|
241
|
+
Error.captureStackTrace(this, BackupError);
|
|
242
|
+
}
|
|
23
243
|
}
|
|
24
244
|
}
|
|
25
245
|
/**
|
|
26
|
-
*
|
|
246
|
+
* Thrown when there is no Cursor data to backup.
|
|
247
|
+
*
|
|
248
|
+
* Recovery: Verify Cursor is installed and has been used.
|
|
27
249
|
*/
|
|
28
|
-
export class
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
250
|
+
export class NoDataError extends BackupError {
|
|
251
|
+
name = 'NoDataError';
|
|
252
|
+
/** Path that was checked for data */
|
|
253
|
+
path;
|
|
254
|
+
constructor(path) {
|
|
255
|
+
super(`No Cursor data found at: ${path}. Verify Cursor is installed and has been used.`);
|
|
256
|
+
this.path = path;
|
|
257
|
+
if (Error.captureStackTrace) {
|
|
258
|
+
Error.captureStackTrace(this, NoDataError);
|
|
259
|
+
}
|
|
34
260
|
}
|
|
35
261
|
}
|
|
36
262
|
/**
|
|
37
|
-
*
|
|
263
|
+
* Thrown when output file already exists.
|
|
264
|
+
*
|
|
265
|
+
* Recovery: Use force: true to overwrite, or specify different output path.
|
|
38
266
|
*/
|
|
39
|
-
export class
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
267
|
+
export class FileExistsError extends BackupError {
|
|
268
|
+
name = 'FileExistsError';
|
|
269
|
+
/** Path to existing file */
|
|
270
|
+
path;
|
|
271
|
+
constructor(path) {
|
|
272
|
+
super(`File already exists: ${path}. Use --force to overwrite.`);
|
|
273
|
+
this.path = path;
|
|
274
|
+
if (Error.captureStackTrace) {
|
|
275
|
+
Error.captureStackTrace(this, FileExistsError);
|
|
276
|
+
}
|
|
43
277
|
}
|
|
44
278
|
}
|
|
45
279
|
/**
|
|
46
|
-
*
|
|
280
|
+
* Thrown when there is insufficient disk space for backup.
|
|
281
|
+
*
|
|
282
|
+
* Recovery: Free up disk space or specify different output location.
|
|
47
283
|
*/
|
|
48
|
-
export class
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
284
|
+
export class InsufficientSpaceError extends BackupError {
|
|
285
|
+
name = 'InsufficientSpaceError';
|
|
286
|
+
/** Required space in bytes */
|
|
287
|
+
required;
|
|
288
|
+
/** Available space in bytes */
|
|
289
|
+
available;
|
|
290
|
+
constructor(required, available) {
|
|
291
|
+
const reqMB = (required / 1024 / 1024).toFixed(1);
|
|
292
|
+
const avaMB = (available / 1024 / 1024).toFixed(1);
|
|
293
|
+
super(`Insufficient disk space: need ${reqMB} MB, only ${avaMB} MB available.`);
|
|
294
|
+
this.required = required;
|
|
295
|
+
this.available = available;
|
|
296
|
+
if (Error.captureStackTrace) {
|
|
297
|
+
Error.captureStackTrace(this, InsufficientSpaceError);
|
|
298
|
+
}
|
|
55
299
|
}
|
|
56
300
|
}
|
|
57
301
|
/**
|
|
58
|
-
*
|
|
302
|
+
* Base error for restore operations.
|
|
303
|
+
*
|
|
304
|
+
* Recovery: Check specific subclass for targeted recovery actions.
|
|
59
305
|
*/
|
|
60
|
-
export class
|
|
306
|
+
export class RestoreError extends Error {
|
|
307
|
+
name = 'RestoreError';
|
|
308
|
+
constructor(message) {
|
|
309
|
+
super(message);
|
|
310
|
+
if (Error.captureStackTrace) {
|
|
311
|
+
Error.captureStackTrace(this, RestoreError);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Thrown when backup file is not found.
|
|
317
|
+
*
|
|
318
|
+
* Recovery: Verify backup file path is correct.
|
|
319
|
+
*/
|
|
320
|
+
export class BackupNotFoundError extends RestoreError {
|
|
321
|
+
name = 'BackupNotFoundError';
|
|
322
|
+
/** Path to backup file that was not found */
|
|
323
|
+
path;
|
|
61
324
|
constructor(path) {
|
|
62
|
-
super(`
|
|
63
|
-
this.
|
|
325
|
+
super(`Backup file not found: ${path}`);
|
|
326
|
+
this.path = path;
|
|
327
|
+
if (Error.captureStackTrace) {
|
|
328
|
+
Error.captureStackTrace(this, BackupNotFoundError);
|
|
329
|
+
}
|
|
64
330
|
}
|
|
65
331
|
}
|
|
66
332
|
/**
|
|
67
|
-
*
|
|
333
|
+
* Thrown when backup file is invalid or corrupted.
|
|
334
|
+
*
|
|
335
|
+
* Recovery: Use a different backup file, or attempt to repair with external tools.
|
|
68
336
|
*/
|
|
69
|
-
export class
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
337
|
+
export class InvalidBackupError extends RestoreError {
|
|
338
|
+
name = 'InvalidBackupError';
|
|
339
|
+
/** Path to invalid backup file */
|
|
340
|
+
path;
|
|
341
|
+
/** Reason for invalidity */
|
|
342
|
+
reason;
|
|
343
|
+
constructor(path, reason) {
|
|
344
|
+
super(`Invalid backup file: ${path}. ${reason}`);
|
|
345
|
+
this.path = path;
|
|
346
|
+
this.reason = reason;
|
|
347
|
+
if (Error.captureStackTrace) {
|
|
348
|
+
Error.captureStackTrace(this, InvalidBackupError);
|
|
349
|
+
}
|
|
73
350
|
}
|
|
74
351
|
}
|
|
75
352
|
/**
|
|
76
|
-
*
|
|
353
|
+
* Thrown when target directory already has Cursor data.
|
|
354
|
+
*
|
|
355
|
+
* Recovery: Use force: true to overwrite, or specify different target path.
|
|
77
356
|
*/
|
|
78
|
-
export
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
357
|
+
export class TargetExistsError extends RestoreError {
|
|
358
|
+
name = 'TargetExistsError';
|
|
359
|
+
/** Path to existing target */
|
|
360
|
+
path;
|
|
361
|
+
constructor(path) {
|
|
362
|
+
super(`Target already has Cursor data: ${path}. Use --force to overwrite.`);
|
|
363
|
+
this.path = path;
|
|
364
|
+
if (Error.captureStackTrace) {
|
|
365
|
+
Error.captureStackTrace(this, TargetExistsError);
|
|
366
|
+
}
|
|
82
367
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Thrown when backup integrity check fails critically.
|
|
371
|
+
*
|
|
372
|
+
* Recovery: Backup may be corrupted beyond repair; try a different backup.
|
|
373
|
+
*/
|
|
374
|
+
export class IntegrityError extends RestoreError {
|
|
375
|
+
name = 'IntegrityError';
|
|
376
|
+
/** Files that failed integrity check */
|
|
377
|
+
failedFiles;
|
|
378
|
+
constructor(failedFiles) {
|
|
379
|
+
super(`Backup integrity check failed for ${failedFiles.length} file(s): ${failedFiles.join(', ')}`);
|
|
380
|
+
this.failedFiles = failedFiles;
|
|
381
|
+
if (Error.captureStackTrace) {
|
|
382
|
+
Error.captureStackTrace(this, IntegrityError);
|
|
383
|
+
}
|
|
86
384
|
}
|
|
87
|
-
|
|
88
|
-
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Type guard to check if an error is a BackupError or subclass.
|
|
388
|
+
*/
|
|
389
|
+
export function isBackupError(error) {
|
|
390
|
+
return error instanceof BackupError;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Type guard to check if an error is a RestoreError or subclass.
|
|
394
|
+
*/
|
|
395
|
+
export function isRestoreError(error) {
|
|
396
|
+
return error instanceof RestoreError;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Type guard to check if an error is an InvalidBackupError.
|
|
400
|
+
*/
|
|
401
|
+
export function isInvalidBackupError(error) {
|
|
402
|
+
return error instanceof InvalidBackupError;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Type guard to check if an error is a NoDataError.
|
|
406
|
+
*/
|
|
407
|
+
export function isNoDataError(error) {
|
|
408
|
+
return error instanceof NoDataError;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Type guard to check if an error is a FileExistsError.
|
|
412
|
+
*/
|
|
413
|
+
export function isFileExistsError(error) {
|
|
414
|
+
return error instanceof FileExistsError;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Type guard to check if an error is an InsufficientSpaceError.
|
|
418
|
+
*/
|
|
419
|
+
export function isInsufficientSpaceError(error) {
|
|
420
|
+
return error instanceof InsufficientSpaceError;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Type guard to check if an error is a BackupNotFoundError.
|
|
424
|
+
*/
|
|
425
|
+
export function isBackupNotFoundError(error) {
|
|
426
|
+
return error instanceof BackupNotFoundError;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Type guard to check if an error is a TargetExistsError.
|
|
430
|
+
*/
|
|
431
|
+
export function isTargetExistsError(error) {
|
|
432
|
+
return error instanceof TargetExistsError;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Type guard to check if an error is an IntegrityError.
|
|
436
|
+
*/
|
|
437
|
+
export function isIntegrityError(error) {
|
|
438
|
+
return error instanceof IntegrityError;
|
|
89
439
|
}
|
|
90
440
|
//# sourceMappingURL=errors.js.map
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|