@tom2012/cc-web 1.5.10 → 1.5.14

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.
Files changed (56) hide show
  1. package/README.md +23 -3
  2. package/backend/dist/backup/config.d.ts +8 -0
  3. package/backend/dist/backup/config.d.ts.map +1 -0
  4. package/backend/dist/backup/config.js +104 -0
  5. package/backend/dist/backup/config.js.map +1 -0
  6. package/backend/dist/backup/engine.d.ts +22 -0
  7. package/backend/dist/backup/engine.d.ts.map +1 -0
  8. package/backend/dist/backup/engine.js +280 -0
  9. package/backend/dist/backup/engine.js.map +1 -0
  10. package/backend/dist/backup/providers/dropbox.d.ts +25 -0
  11. package/backend/dist/backup/providers/dropbox.d.ts.map +1 -0
  12. package/backend/dist/backup/providers/dropbox.js +319 -0
  13. package/backend/dist/backup/providers/dropbox.js.map +1 -0
  14. package/backend/dist/backup/providers/google-drive.d.ts +29 -0
  15. package/backend/dist/backup/providers/google-drive.d.ts.map +1 -0
  16. package/backend/dist/backup/providers/google-drive.js +305 -0
  17. package/backend/dist/backup/providers/google-drive.js.map +1 -0
  18. package/backend/dist/backup/providers/index.d.ts +3 -0
  19. package/backend/dist/backup/providers/index.d.ts.map +1 -0
  20. package/backend/dist/backup/providers/index.js +19 -0
  21. package/backend/dist/backup/providers/index.js.map +1 -0
  22. package/backend/dist/backup/providers/onedrive.d.ts +29 -0
  23. package/backend/dist/backup/providers/onedrive.d.ts.map +1 -0
  24. package/backend/dist/backup/providers/onedrive.js +316 -0
  25. package/backend/dist/backup/providers/onedrive.js.map +1 -0
  26. package/backend/dist/backup/scheduler.d.ts +6 -0
  27. package/backend/dist/backup/scheduler.d.ts.map +1 -0
  28. package/backend/dist/backup/scheduler.js +53 -0
  29. package/backend/dist/backup/scheduler.js.map +1 -0
  30. package/backend/dist/backup/types.d.ts +68 -0
  31. package/backend/dist/backup/types.d.ts.map +1 -0
  32. package/backend/dist/backup/types.js +4 -0
  33. package/backend/dist/backup/types.js.map +1 -0
  34. package/backend/dist/index.d.ts.map +1 -1
  35. package/backend/dist/index.js +74 -10
  36. package/backend/dist/index.js.map +1 -1
  37. package/backend/dist/routes/backup.d.ts +4 -0
  38. package/backend/dist/routes/backup.d.ts.map +1 -0
  39. package/backend/dist/routes/backup.js +175 -0
  40. package/backend/dist/routes/backup.js.map +1 -0
  41. package/backend/dist/routes/projects.d.ts.map +1 -1
  42. package/backend/dist/routes/projects.js +14 -0
  43. package/backend/dist/routes/projects.js.map +1 -1
  44. package/backend/dist/routes/sounds.d.ts +3 -0
  45. package/backend/dist/routes/sounds.d.ts.map +1 -0
  46. package/backend/dist/routes/sounds.js +283 -0
  47. package/backend/dist/routes/sounds.js.map +1 -0
  48. package/backend/package-lock.json +662 -20
  49. package/backend/package.json +8 -0
  50. package/bin/ccweb.js +33 -0
  51. package/frontend/dist/assets/index-D7gjxQKB.css +32 -0
  52. package/frontend/dist/assets/index-Dg1NcsQH.js +489 -0
  53. package/frontend/dist/index.html +2 -2
  54. package/package.json +1 -1
  55. package/frontend/dist/assets/index-CQjbS4zv.css +0 -32
  56. package/frontend/dist/assets/index-CtyR65A4.js +0 -434
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-drive.js","sourceRoot":"","sources":["../../../src/backup/providers/google-drive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { CloudProvider, ProviderConfig } from '../types';
2
+ export declare function createProvider(config: ProviderConfig): CloudProvider;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backup/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAKzD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAWpE"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProvider = createProvider;
4
+ const google_drive_1 = require("./google-drive");
5
+ const onedrive_1 = require("./onedrive");
6
+ const dropbox_1 = require("./dropbox");
7
+ function createProvider(config) {
8
+ switch (config.type) {
9
+ case 'google-drive':
10
+ return new google_drive_1.GoogleDriveProvider(config);
11
+ case 'onedrive':
12
+ return new onedrive_1.OneDriveProvider(config);
13
+ case 'dropbox':
14
+ return new dropbox_1.DropboxProvider(config);
15
+ default:
16
+ throw new Error(`Unknown provider type: ${config.type}`);
17
+ }
18
+ }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backup/providers/index.ts"],"names":[],"mappings":";;AAKA,wCAWC;AAfD,iDAAqD;AACrD,yCAA8C;AAC9C,uCAA4C;AAE5C,SAAgB,cAAc,CAAC,MAAsB;IACnD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,cAAc;YACjB,OAAO,IAAI,kCAAmB,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,IAAI,2BAAgB,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA2B,MAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { CloudProvider, ProviderConfig, ProviderTokens, RemoteFile } from '../types';
2
+ export declare class OneDriveProvider implements CloudProvider {
3
+ config: ProviderConfig;
4
+ private graphClient;
5
+ constructor(config: ProviderConfig);
6
+ private initGraphClient;
7
+ getAuthUrl(redirectUri: string): string;
8
+ handleCallback(code: string, redirectUri: string): Promise<ProviderTokens>;
9
+ refreshToken(): Promise<ProviderTokens>;
10
+ isAuthorized(): boolean;
11
+ ensureAuth(): Promise<void>;
12
+ private client;
13
+ /**
14
+ * Returns the Graph API path for a given remote path.
15
+ * e.g. "backup/myproject" → "/me/drive/root:/backup/myproject:"
16
+ * Empty or root path → "/me/drive/root"
17
+ */
18
+ private itemPath;
19
+ /**
20
+ * Returns the children endpoint for a given remote path.
21
+ */
22
+ private childrenPath;
23
+ listFiles(remotePath: string): Promise<RemoteFile[]>;
24
+ uploadFile(localPath: string, remotePath: string): Promise<void>;
25
+ mkdir(remotePath: string): Promise<void>;
26
+ downloadFile(remotePath: string, localPath: string): Promise<void>;
27
+ deleteFile(remotePath: string): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=onedrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.d.ts","sourceRoot":"","sources":["../../../src/backup/providers/onedrive.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAWrF,qBAAa,gBAAiB,YAAW,aAAa;IACpD,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,WAAW,CAAuB;gBAE9B,MAAM,EAAE,cAAc;IAOlC,OAAO,CAAC,eAAe;IAQvB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAWjC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyC1E,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IA6C7C,YAAY,IAAI,OAAO;IAIjB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,OAAO,CAAC,MAAM;IAOd;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQd,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwCpD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDhE,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCxC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ // backend/src/backup/providers/onedrive.ts
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.OneDriveProvider = void 0;
38
+ const fs = __importStar(require("fs"));
39
+ const microsoft_graph_client_1 = require("@microsoft/microsoft-graph-client");
40
+ const AUTHORITY = 'https://login.microsoftonline.com/consumers';
41
+ const TOKEN_ENDPOINT = `${AUTHORITY}/oauth2/v2.0/token`;
42
+ const SCOPES = 'Files.ReadWrite offline_access';
43
+ // 4 MB threshold for simple upload vs upload session
44
+ const SIMPLE_UPLOAD_MAX = 4 * 1024 * 1024;
45
+ // 10 MB chunk size for large file upload sessions
46
+ const CHUNK_SIZE = 10 * 1024 * 1024;
47
+ class OneDriveProvider {
48
+ constructor(config) {
49
+ this.graphClient = null;
50
+ this.config = config;
51
+ if (config.tokens) {
52
+ this.initGraphClient(config.tokens.access_token);
53
+ }
54
+ }
55
+ initGraphClient(accessToken) {
56
+ this.graphClient = microsoft_graph_client_1.Client.init({
57
+ authProvider: (done) => {
58
+ done(null, accessToken);
59
+ },
60
+ });
61
+ }
62
+ getAuthUrl(redirectUri) {
63
+ const params = new URLSearchParams({
64
+ client_id: this.config.clientId,
65
+ response_type: 'code',
66
+ redirect_uri: redirectUri,
67
+ scope: SCOPES,
68
+ response_mode: 'query',
69
+ });
70
+ return `${AUTHORITY}/oauth2/v2.0/authorize?${params.toString()}`;
71
+ }
72
+ async handleCallback(code, redirectUri) {
73
+ const body = new URLSearchParams({
74
+ client_id: this.config.clientId,
75
+ client_secret: this.config.clientSecret,
76
+ code,
77
+ redirect_uri: redirectUri,
78
+ grant_type: 'authorization_code',
79
+ });
80
+ const res = await fetch(TOKEN_ENDPOINT, {
81
+ method: 'POST',
82
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
83
+ body: body.toString(),
84
+ });
85
+ if (!res.ok) {
86
+ const text = await res.text();
87
+ throw new Error(`OneDrive token exchange failed: ${res.status} ${text}`);
88
+ }
89
+ const data = await res.json();
90
+ if (!data.access_token || !data.refresh_token) {
91
+ throw new Error('Missing tokens in OneDrive OAuth2 callback response');
92
+ }
93
+ const providerTokens = {
94
+ access_token: data.access_token,
95
+ refresh_token: data.refresh_token,
96
+ expiry: new Date(Date.now() + data.expires_in * 1000).toISOString(),
97
+ };
98
+ this.config.tokens = providerTokens;
99
+ this.initGraphClient(providerTokens.access_token);
100
+ return providerTokens;
101
+ }
102
+ async refreshToken() {
103
+ if (!this.config.tokens?.refresh_token) {
104
+ throw new Error('No refresh token available for OneDrive provider');
105
+ }
106
+ const body = new URLSearchParams({
107
+ client_id: this.config.clientId,
108
+ client_secret: this.config.clientSecret,
109
+ refresh_token: this.config.tokens.refresh_token,
110
+ grant_type: 'refresh_token',
111
+ scope: SCOPES,
112
+ });
113
+ const res = await fetch(TOKEN_ENDPOINT, {
114
+ method: 'POST',
115
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
116
+ body: body.toString(),
117
+ });
118
+ if (!res.ok) {
119
+ const text = await res.text();
120
+ throw new Error(`OneDrive token refresh failed: ${res.status} ${text}`);
121
+ }
122
+ const data = await res.json();
123
+ if (!data.access_token) {
124
+ throw new Error('Failed to refresh OneDrive access token');
125
+ }
126
+ const providerTokens = {
127
+ access_token: data.access_token,
128
+ refresh_token: data.refresh_token ?? this.config.tokens.refresh_token,
129
+ expiry: new Date(Date.now() + data.expires_in * 1000).toISOString(),
130
+ };
131
+ this.config.tokens = providerTokens;
132
+ this.initGraphClient(providerTokens.access_token);
133
+ return providerTokens;
134
+ }
135
+ isAuthorized() {
136
+ return !!(this.config.tokens?.access_token && this.config.tokens?.refresh_token);
137
+ }
138
+ async ensureAuth() {
139
+ if (!this.isAuthorized()) {
140
+ throw new Error('OneDrive provider is not authorized');
141
+ }
142
+ const tokens = this.config.tokens;
143
+ const expiryMs = new Date(tokens.expiry).getTime();
144
+ const nowMs = Date.now();
145
+ // Refresh if within 60 seconds of expiry
146
+ if (expiryMs - nowMs < 60 * 1000) {
147
+ await this.refreshToken();
148
+ }
149
+ }
150
+ client() {
151
+ if (!this.graphClient) {
152
+ throw new Error('OneDrive Graph client is not initialized');
153
+ }
154
+ return this.graphClient;
155
+ }
156
+ /**
157
+ * Returns the Graph API path for a given remote path.
158
+ * e.g. "backup/myproject" → "/me/drive/root:/backup/myproject:"
159
+ * Empty or root path → "/me/drive/root"
160
+ */
161
+ itemPath(remotePath) {
162
+ const normalized = remotePath.replace(/^\/+|\/+$/g, '');
163
+ if (!normalized) {
164
+ return '/me/drive/root';
165
+ }
166
+ return `/me/drive/root:/${normalized}:`;
167
+ }
168
+ /**
169
+ * Returns the children endpoint for a given remote path.
170
+ */
171
+ childrenPath(remotePath) {
172
+ const normalized = remotePath.replace(/^\/+|\/+$/g, '');
173
+ if (!normalized) {
174
+ return '/me/drive/root/children';
175
+ }
176
+ return `/me/drive/root:/${normalized}:/children`;
177
+ }
178
+ async listFiles(remotePath) {
179
+ await this.ensureAuth();
180
+ const results = [];
181
+ const normalizedBase = remotePath.replace(/^\/+|\/+$/g, '');
182
+ let nextLink = this.childrenPath(remotePath);
183
+ while (nextLink) {
184
+ const res = await this.client()
185
+ .api(nextLink)
186
+ .select('name,folder,size,lastModifiedDateTime')
187
+ .top(1000)
188
+ .get();
189
+ for (const item of res.value ?? []) {
190
+ const isDirectory = !!item.folder;
191
+ const filePath = normalizedBase ? `${normalizedBase}/${item.name}` : item.name;
192
+ results.push({
193
+ name: item.name,
194
+ path: filePath,
195
+ isDirectory,
196
+ size: isDirectory ? 0 : (item.size ?? 0),
197
+ modifiedTime: item.lastModifiedDateTime ?? new Date().toISOString(),
198
+ });
199
+ }
200
+ nextLink = res['@odata.nextLink'];
201
+ }
202
+ return results;
203
+ }
204
+ async uploadFile(localPath, remotePath) {
205
+ await this.ensureAuth();
206
+ const stat = fs.statSync(localPath);
207
+ const fileSize = stat.size;
208
+ if (fileSize < SIMPLE_UPLOAD_MAX) {
209
+ // Simple upload (PUT with body)
210
+ const fileBuffer = fs.readFileSync(localPath);
211
+ await this.client()
212
+ .api(`${this.itemPath(remotePath)}/content`)
213
+ .put(fileBuffer);
214
+ }
215
+ else {
216
+ // Large file: use upload session
217
+ const session = await this.client()
218
+ .api(`${this.itemPath(remotePath)}/createUploadSession`)
219
+ .post({
220
+ item: {
221
+ '@microsoft.graph.conflictBehavior': 'replace',
222
+ },
223
+ });
224
+ const uploadUrl = session.uploadUrl;
225
+ const fd = fs.openSync(localPath, 'r');
226
+ try {
227
+ let offset = 0;
228
+ while (offset < fileSize) {
229
+ const chunkSize = Math.min(CHUNK_SIZE, fileSize - offset);
230
+ const chunk = Buffer.alloc(chunkSize);
231
+ fs.readSync(fd, chunk, 0, chunkSize, offset);
232
+ const rangeEnd = offset + chunkSize - 1;
233
+ const res = await fetch(uploadUrl, {
234
+ method: 'PUT',
235
+ headers: {
236
+ 'Content-Length': String(chunkSize),
237
+ 'Content-Range': `bytes ${offset}-${rangeEnd}/${fileSize}`,
238
+ 'Content-Type': 'application/octet-stream',
239
+ },
240
+ body: chunk,
241
+ });
242
+ if (!res.ok && res.status !== 202) {
243
+ const text = await res.text();
244
+ throw new Error(`OneDrive chunk upload failed at offset ${offset}: ${res.status} ${text}`);
245
+ }
246
+ offset += chunkSize;
247
+ }
248
+ }
249
+ finally {
250
+ fs.closeSync(fd);
251
+ }
252
+ }
253
+ }
254
+ async mkdir(remotePath) {
255
+ await this.ensureAuth();
256
+ const normalized = remotePath.replace(/^\/+|\/+$/g, '');
257
+ if (!normalized)
258
+ return;
259
+ const segments = normalized.split('/');
260
+ for (let i = 0; i < segments.length; i++) {
261
+ const parentPath = segments.slice(0, i).join('/');
262
+ const folderName = segments[i];
263
+ const parentEndpoint = parentPath
264
+ ? `/me/drive/root:/${parentPath}:/children`
265
+ : '/me/drive/root/children';
266
+ try {
267
+ await this.client()
268
+ .api(parentEndpoint)
269
+ .post({
270
+ name: folderName,
271
+ folder: {},
272
+ '@microsoft.graph.conflictBehavior': 'fail',
273
+ });
274
+ }
275
+ catch (err) {
276
+ // 409 Conflict means folder already exists — that's fine
277
+ const graphErr = err;
278
+ if (graphErr.statusCode !== 409 && graphErr.code !== 'nameAlreadyExists') {
279
+ throw err;
280
+ }
281
+ }
282
+ }
283
+ }
284
+ async downloadFile(remotePath, localPath) {
285
+ await this.ensureAuth();
286
+ // Get a redirect URL to the file content
287
+ const downloadUrl = await this.client()
288
+ .api(`${this.itemPath(remotePath)}/content`)
289
+ .getStream();
290
+ await new Promise((resolve, reject) => {
291
+ const dest = fs.createWriteStream(localPath);
292
+ downloadUrl
293
+ .on('error', reject)
294
+ .pipe(dest)
295
+ .on('error', reject)
296
+ .on('finish', resolve);
297
+ });
298
+ }
299
+ async deleteFile(remotePath) {
300
+ await this.ensureAuth();
301
+ try {
302
+ await this.client()
303
+ .api(this.itemPath(remotePath))
304
+ .delete();
305
+ }
306
+ catch (err) {
307
+ // 404 means already gone — treat as success
308
+ const graphErr = err;
309
+ if (graphErr.statusCode !== 404) {
310
+ throw err;
311
+ }
312
+ }
313
+ }
314
+ }
315
+ exports.OneDriveProvider = OneDriveProvider;
316
+ //# sourceMappingURL=onedrive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.js","sourceRoot":"","sources":["../../../src/backup/providers/onedrive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ProgressCallback } from './engine';
2
+ export declare function startScheduler(onProgress?: ProgressCallback): void;
3
+ export declare function stopScheduler(): void;
4
+ export declare function restartScheduler(onProgress?: ProgressCallback): void;
5
+ export declare function isSchedulerRunning(): boolean;
6
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/backup/scheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK1D,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CA0BlE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAGpE;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startScheduler = startScheduler;
4
+ exports.stopScheduler = stopScheduler;
5
+ exports.restartScheduler = restartScheduler;
6
+ exports.isSchedulerRunning = isSchedulerRunning;
7
+ const config_1 = require("./config");
8
+ const engine_1 = require("./engine");
9
+ let timer = null;
10
+ let running = false;
11
+ function startScheduler(onProgress) {
12
+ stopScheduler();
13
+ const config = (0, config_1.getBackupConfig)();
14
+ if (!config.schedule.enabled)
15
+ return;
16
+ const intervalMs = config.schedule.intervalMinutes * 60 * 1000;
17
+ console.log(`[Backup] Scheduler started: every ${config.schedule.intervalMinutes} minutes`);
18
+ timer = setInterval(async () => {
19
+ if (running) {
20
+ console.log('[Backup] Skipping scheduled backup — previous one still running');
21
+ return;
22
+ }
23
+ running = true;
24
+ try {
25
+ console.log('[Backup] Scheduled backup starting...');
26
+ const results = await (0, engine_1.runBackupAll)(onProgress);
27
+ const ok = results.filter((r) => r.status === 'success').length;
28
+ const fail = results.filter((r) => r.status === 'failed').length;
29
+ console.log(`[Backup] Scheduled backup done: ${ok} success, ${fail} failed`);
30
+ }
31
+ catch (err) {
32
+ console.error('[Backup] Scheduled backup error:', err);
33
+ }
34
+ finally {
35
+ running = false;
36
+ }
37
+ }, intervalMs);
38
+ }
39
+ function stopScheduler() {
40
+ if (timer) {
41
+ clearInterval(timer);
42
+ timer = null;
43
+ console.log('[Backup] Scheduler stopped');
44
+ }
45
+ }
46
+ function restartScheduler(onProgress) {
47
+ stopScheduler();
48
+ startScheduler(onProgress);
49
+ }
50
+ function isSchedulerRunning() {
51
+ return timer !== null;
52
+ }
53
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/backup/scheduler.ts"],"names":[],"mappings":";;AAMA,wCA0BC;AAED,sCAMC;AAED,4CAGC;AAED,gDAEC;AAjDD,qCAA2C;AAC3C,qCAA0D;AAE1D,IAAI,KAAK,GAA0C,IAAI,CAAC;AACxD,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAgB,cAAc,CAAC,UAA6B;IAC1D,aAAa,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO;IAErC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,QAAQ,CAAC,eAAe,UAAU,CAAC,CAAC;IAE5F,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,KAAK,EAAE,CAAC;QACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,GAAG,IAAI,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAA6B;IAC5D,aAAa,EAAE,CAAC;IAChB,cAAc,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC"}
@@ -0,0 +1,68 @@
1
+ export type ProviderType = 'google-drive' | 'onedrive' | 'dropbox';
2
+ export interface ProviderTokens {
3
+ access_token: string;
4
+ refresh_token: string;
5
+ expiry: string;
6
+ }
7
+ export interface ProviderConfig {
8
+ id: string;
9
+ type: ProviderType;
10
+ label: string;
11
+ clientId: string;
12
+ clientSecret: string;
13
+ tokens?: ProviderTokens;
14
+ }
15
+ export interface BackupSchedule {
16
+ enabled: boolean;
17
+ intervalMinutes: number;
18
+ }
19
+ export interface BackupConfig {
20
+ providers: ProviderConfig[];
21
+ schedule: BackupSchedule;
22
+ excludePatterns: string[];
23
+ }
24
+ export interface RemoteFile {
25
+ name: string;
26
+ path: string;
27
+ isDirectory: boolean;
28
+ size: number;
29
+ modifiedTime: string;
30
+ }
31
+ export interface FileSnapshot {
32
+ mtime: number;
33
+ size: number;
34
+ hash: string;
35
+ }
36
+ export interface BackupState {
37
+ lastBackupTime: string | null;
38
+ files: Record<string, FileSnapshot>;
39
+ }
40
+ export interface BackupHistoryEntry {
41
+ id: string;
42
+ projectId: string;
43
+ projectName: string;
44
+ providerId: string;
45
+ providerType: ProviderType;
46
+ providerLabel: string;
47
+ startTime: string;
48
+ endTime: string;
49
+ status: 'success' | 'failed' | 'partial';
50
+ filesUploaded: number;
51
+ filesDeleted: number;
52
+ filesTotal: number;
53
+ error?: string;
54
+ }
55
+ export interface CloudProvider {
56
+ config: ProviderConfig;
57
+ getAuthUrl(redirectUri: string): string;
58
+ handleCallback(code: string, redirectUri: string): Promise<ProviderTokens>;
59
+ refreshToken(): Promise<ProviderTokens>;
60
+ isAuthorized(): boolean;
61
+ ensureAuth(): Promise<void>;
62
+ listFiles(remotePath: string): Promise<RemoteFile[]>;
63
+ uploadFile(localPath: string, remotePath: string): Promise<void>;
64
+ deleteFile(remotePath: string): Promise<void>;
65
+ mkdir(remotePath: string): Promise<void>;
66
+ downloadFile(remotePath: string, localPath: string): Promise<void>;
67
+ }
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backup/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,YAAY,IAAI,OAAO,CAAC;IACxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // backend/src/backup/types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backup/types.ts"],"names":[],"mappings":";AAAA,8BAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8NA,QAAA,MAAM,GAAG,6CAAY,CAAC;AA+PtB,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiOA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAuTtB,eAAe,GAAG,CAAC"}