aspect-sync 0.0.16 → 0.0.17

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.
@@ -0,0 +1,21 @@
1
+ import type { RemoteFileListing } from "./types.js";
2
+ export interface BatchInfo {
3
+ batchNumber: number;
4
+ files: RemoteFileListing[];
5
+ totalSize: number;
6
+ }
7
+ /**
8
+ * Groups files into batches, keeping directory contents together where possible.
9
+ * Each batch will be ≤ maxBatchSize bytes (except single files > maxBatchSize).
10
+ */
11
+ export declare function createBatches(files: RemoteFileListing[], maxBatchSize: number): BatchInfo[];
12
+ /**
13
+ * Writes a batch file containing relative file paths, one per line.
14
+ * Used with rclone's --files-from option.
15
+ */
16
+ export declare function writeBatchFile(batchDir: string, batchNumber: number, files: RemoteFileListing[]): Promise<string>;
17
+ /**
18
+ * Deletes a batch file after successful completion.
19
+ */
20
+ export declare function cleanupBatchFile(batchFilePath: string): Promise<void>;
21
+ //# sourceMappingURL=batchManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchManager.d.ts","sourceRoot":"","sources":["../src/batchManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,WAAW,SAAS;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,iBAAiB,EAAE,EAC1B,YAAY,EAAE,MAAM,GACrB,SAAS,EAAE,CAmGb;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,iBAAiB,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E"}
@@ -0,0 +1,121 @@
1
+ import fs from "fs/promises";
2
+ import path from "path";
3
+ /**
4
+ * Groups files into batches, keeping directory contents together where possible.
5
+ * Each batch will be ≤ maxBatchSize bytes (except single files > maxBatchSize).
6
+ */
7
+ export function createBatches(files, maxBatchSize) {
8
+ // Group files by their parent directory
9
+ const dirMap = new Map();
10
+ for (const file of files) {
11
+ const dir = path.dirname(file.path);
12
+ if (!dirMap.has(dir)) {
13
+ dirMap.set(dir, []);
14
+ }
15
+ dirMap.get(dir).push(file);
16
+ }
17
+ // Calculate size per directory
18
+ const dirSizes = new Map();
19
+ for (const [dir, dirFiles] of dirMap.entries()) {
20
+ const totalSize = dirFiles.reduce((sum, f) => sum + f.size, 0);
21
+ dirSizes.set(dir, totalSize);
22
+ }
23
+ // Sort directories by path for consistent ordering
24
+ const sortedDirs = Array.from(dirMap.keys()).sort();
25
+ const batches = [];
26
+ let currentBatch = [];
27
+ let currentBatchSize = 0;
28
+ let batchNumber = 1;
29
+ for (const dir of sortedDirs) {
30
+ const dirFiles = dirMap.get(dir);
31
+ const dirSize = dirSizes.get(dir);
32
+ // Edge case: single file or directory larger than max batch size
33
+ if (dirSize > maxBatchSize) {
34
+ // Flush current batch if it has content
35
+ if (currentBatch.length > 0) {
36
+ batches.push({
37
+ batchNumber: batchNumber++,
38
+ files: currentBatch,
39
+ totalSize: currentBatchSize,
40
+ });
41
+ currentBatch = [];
42
+ currentBatchSize = 0;
43
+ }
44
+ // Put this directory in its own batch (or split into multiple batches)
45
+ if (dirFiles.length === 1) {
46
+ // Single large file - put in its own batch
47
+ batches.push({
48
+ batchNumber: batchNumber++,
49
+ files: dirFiles,
50
+ totalSize: dirSize,
51
+ });
52
+ }
53
+ else {
54
+ // Multiple files in directory - split them across batches
55
+ for (const file of dirFiles) {
56
+ if (currentBatchSize + file.size > maxBatchSize && currentBatch.length > 0) {
57
+ // Flush current batch
58
+ batches.push({
59
+ batchNumber: batchNumber++,
60
+ files: currentBatch,
61
+ totalSize: currentBatchSize,
62
+ });
63
+ currentBatch = [];
64
+ currentBatchSize = 0;
65
+ }
66
+ currentBatch.push(file);
67
+ currentBatchSize += file.size;
68
+ }
69
+ }
70
+ continue;
71
+ }
72
+ // Check if adding this directory would exceed max batch size
73
+ if (currentBatchSize + dirSize > maxBatchSize && currentBatch.length > 0) {
74
+ // Flush current batch
75
+ batches.push({
76
+ batchNumber: batchNumber++,
77
+ files: currentBatch,
78
+ totalSize: currentBatchSize,
79
+ });
80
+ currentBatch = [];
81
+ currentBatchSize = 0;
82
+ }
83
+ // Add directory to current batch
84
+ currentBatch.push(...dirFiles);
85
+ currentBatchSize += dirSize;
86
+ }
87
+ // Flush remaining batch
88
+ if (currentBatch.length > 0) {
89
+ batches.push({
90
+ batchNumber: batchNumber++,
91
+ files: currentBatch,
92
+ totalSize: currentBatchSize,
93
+ });
94
+ }
95
+ return batches;
96
+ }
97
+ /**
98
+ * Writes a batch file containing relative file paths, one per line.
99
+ * Used with rclone's --files-from option.
100
+ */
101
+ export async function writeBatchFile(batchDir, batchNumber, files) {
102
+ const batchFilePath = path.join(batchDir, `batch${batchNumber}.txt`);
103
+ const content = files.map((f) => f.path).join("\n");
104
+ await fs.writeFile(batchFilePath, content, "utf-8");
105
+ return batchFilePath;
106
+ }
107
+ /**
108
+ * Deletes a batch file after successful completion.
109
+ */
110
+ export async function cleanupBatchFile(batchFilePath) {
111
+ try {
112
+ await fs.unlink(batchFilePath);
113
+ }
114
+ catch (error) {
115
+ // Ignore errors if file doesn't exist
116
+ if (error.code !== "ENOENT") {
117
+ throw error;
118
+ }
119
+ }
120
+ }
121
+ //# sourceMappingURL=batchManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchManager.js","sourceRoot":"","sources":["../src/batchManager.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- export declare const formatBytes: (bytes: number, decimals?: number) => string;
2
1
  declare class CliDisplay {
3
2
  #private;
4
3
  start(): void;
5
4
  stop(): void;
5
+ persistCurrentBatchLine(): void;
6
6
  }
7
7
  export declare const cliDisplay: CliDisplay;
8
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"cliDisplay.d.ts","sourceRoot":"","sources":["../src/cliDisplay.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,iBAAY,WAMtD,CAAA;AAED,cAAM,UAAU;;IAOd,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;CAkIb;AAED,eAAO,MAAM,UAAU,YAAmB,CAAA"}
1
+ {"version":3,"file":"cliDisplay.d.ts","sourceRoot":"","sources":["../src/cliDisplay.ts"],"names":[],"mappings":"AAMA,cAAM,UAAU;;IAUd,KAAK,IAAI,IAAI;IAwBb,IAAI,IAAI,IAAI;IAoBZ,uBAAuB,IAAI,IAAI;CA4UhC;AAED,eAAO,MAAM,UAAU,YAAmB,CAAA"}
@@ -1,25 +1,24 @@
1
1
  import logUpdate from "log-update";
2
2
  import chalk from "chalk";
3
3
  import { statusTracker } from "./statusTracker.js";
4
- import { UploadStatus } from "./types.js";
5
- export const formatBytes = (bytes, decimals = 2) => {
6
- if (bytes === 0)
7
- return '0 B';
8
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
9
- const unitIndex = Math.floor(Math.log(bytes) / Math.log(1000));
10
- const size = bytes / Math.pow(1000, unitIndex);
11
- return `${size.toFixed(decimals)} ${units[unitIndex]}`;
12
- };
4
+ import { UploadStatus, BatchPhase } from "./types.js";
5
+ import { formatBytes } from "./util.js";
13
6
  class CliDisplay {
14
7
  #completedLines = [];
15
8
  #completedFileIds = new Set();
16
9
  #updateInterval = null;
17
10
  #statsInterval = null;
18
11
  #isRunning = false;
12
+ #completedBatches = new Map(); // batchNumber -> completed line
13
+ #lastDownloadEtaText = null;
14
+ #lastUploadEtaText = null;
19
15
  start() {
20
16
  if (this.#isRunning)
21
17
  return;
22
18
  this.#isRunning = true;
19
+ this.#completedLines = [];
20
+ this.#completedFileIds = new Set();
21
+ this.#completedBatches.clear();
23
22
  // Update display every 500ms for smooth progress bars
24
23
  // this.#updateInterval = setInterval(() => {
25
24
  // }, 500)
@@ -30,6 +29,8 @@ class CliDisplay {
30
29
  }, 1000);
31
30
  // Calculate stats immediately on start
32
31
  statusTracker.updateUploadStats();
32
+ this.#lastDownloadEtaText = null;
33
+ this.#lastUploadEtaText = null;
33
34
  }
34
35
  stop() {
35
36
  if (!this.#isRunning)
@@ -48,7 +49,28 @@ class CliDisplay {
48
49
  this.#render();
49
50
  logUpdate.done();
50
51
  }
52
+ persistCurrentBatchLine() {
53
+ if (!this.#isRunning)
54
+ return;
55
+ const batchProgress = statusTracker.getBatchProgress();
56
+ if (!batchProgress || batchProgress.currentPhase !== BatchPhase.COMPLETE) {
57
+ return;
58
+ }
59
+ const downloadProgress = statusTracker.getDownloadProgress();
60
+ const totals = statusTracker.getUploadTotals();
61
+ const stats = statusTracker.uploadStats;
62
+ const completedLine = this.#formatBatchLine(batchProgress, downloadProgress, totals, stats);
63
+ this.#completedBatches.set(batchProgress.currentBatch, completedLine);
64
+ }
51
65
  #render() {
66
+ const batchProgress = statusTracker.getBatchProgress();
67
+ const downloadProgress = statusTracker.getDownloadProgress();
68
+ // Batch mode rendering
69
+ if (batchProgress) {
70
+ this.#renderBatchMode(batchProgress, downloadProgress);
71
+ return;
72
+ }
73
+ // Original non-batch mode rendering
52
74
  const inProgressFiles = statusTracker.getInProgressFiles();
53
75
  const allFiles = statusTracker.getAllUploadFiles();
54
76
  const totals = statusTracker.getUploadTotals();
@@ -66,10 +88,11 @@ class CliDisplay {
66
88
  const lines = [];
67
89
  // Add all completed lines (these are frozen)
68
90
  lines.push(...this.#completedLines);
91
+ // COMMENTED OUT: Per-file progress display (can be re-enabled if needed)
69
92
  // Add in-progress files (these update dynamically)
70
- for (const file of inProgressFiles) {
71
- lines.push(this.#formatInProgressFile(file));
72
- }
93
+ // for (const file of inProgressFiles) {
94
+ // lines.push(this.#formatInProgressFile(file))
95
+ // }
73
96
  // Add summary lines
74
97
  lines.push("");
75
98
  lines.push(this.#formatSummary(totals));
@@ -125,6 +148,169 @@ class CliDisplay {
125
148
  ] : [];
126
149
  return `${parts.join(" | ")}${statsLine.length > 0 ? ` | ${statsLine.join(" | ")}` : ""}`;
127
150
  }
151
+ #renderBatchMode(batchProgress, downloadProgress) {
152
+ const lines = [];
153
+ const totals = statusTracker.getUploadTotals();
154
+ const stats = statusTracker.uploadStats;
155
+ // Add all completed batch lines (frozen)
156
+ for (let i = 1; i < batchProgress.currentBatch; i++) {
157
+ if (this.#completedBatches.has(i)) {
158
+ lines.push(this.#completedBatches.get(i));
159
+ }
160
+ }
161
+ // Current batch line (dynamic)
162
+ const currentBatchLine = this.#formatBatchLine(batchProgress, downloadProgress, totals, stats);
163
+ lines.push(currentBatchLine);
164
+ // If batch is complete, save it to completed batches
165
+ if (batchProgress.currentPhase === BatchPhase.COMPLETE) {
166
+ this.#completedBatches.set(batchProgress.currentBatch, currentBatchLine);
167
+ }
168
+ // Overall totals line (always at the bottom)
169
+ const overallFilesCompleted = batchProgress.overallFilesCompleted + (totals.successFileCount + totals.skippedFileCount);
170
+ const overallBytesTransferred = batchProgress.overallBytesTransferred + totals.totalBytesUploaded;
171
+ const overallBytesRemaining = batchProgress.overallBytesTotal - overallBytesTransferred;
172
+ const completedDownloadBytes = batchProgress.overallBytesTransferred + (downloadProgress ? downloadProgress.bytesTransferred : 0);
173
+ const downloadBytesRemaining = Math.max(batchProgress.overallBytesTotal - completedDownloadBytes, 0);
174
+ let downloadEtaSeconds = null;
175
+ if (downloadBytesRemaining === 0) {
176
+ downloadEtaSeconds = 0;
177
+ }
178
+ else if (downloadProgress && downloadProgress.speed > 0) {
179
+ downloadEtaSeconds = Math.ceil(downloadBytesRemaining / downloadProgress.speed);
180
+ }
181
+ let downloadEtaText;
182
+ if (downloadEtaSeconds !== null) {
183
+ downloadEtaText = `Download ETA: ${this.#formatSeconds(downloadEtaSeconds)}`;
184
+ this.#lastDownloadEtaText = downloadEtaText;
185
+ }
186
+ else {
187
+ downloadEtaText = this.#lastDownloadEtaText ?? "Download ETA: ...";
188
+ }
189
+ const uploadBytesCompleted = batchProgress.overallBytesTransferred + totals.totalBytesUploaded;
190
+ const uploadBytesRemaining = Math.max(batchProgress.overallBytesTotal - uploadBytesCompleted, 0);
191
+ let uploadEtaSeconds = null;
192
+ if (uploadBytesRemaining === 0) {
193
+ uploadEtaSeconds = 0;
194
+ }
195
+ else if (stats.uploadSpeedBps !== null && stats.uploadSpeedBps > 0) {
196
+ uploadEtaSeconds = Math.ceil(uploadBytesRemaining / stats.uploadSpeedBps);
197
+ }
198
+ let uploadEtaText;
199
+ if (uploadEtaSeconds !== null) {
200
+ uploadEtaText = `Upload ETA: ${this.#formatSeconds(uploadEtaSeconds)}`;
201
+ this.#lastUploadEtaText = uploadEtaText;
202
+ }
203
+ else {
204
+ uploadEtaText = this.#lastUploadEtaText ?? "Upload ETA: ...";
205
+ }
206
+ let totalEtaText;
207
+ if (downloadEtaSeconds !== null && uploadEtaSeconds !== null) {
208
+ const totalSeconds = downloadEtaSeconds + uploadEtaSeconds;
209
+ totalEtaText = `Total ETA: ${this.#formatSeconds(totalSeconds)}`;
210
+ }
211
+ else {
212
+ const lastDownloadSeconds = this.#extractSecondsFromEtaText(this.#lastDownloadEtaText);
213
+ const lastUploadSeconds = this.#extractSecondsFromEtaText(this.#lastUploadEtaText);
214
+ if (lastDownloadSeconds !== null && lastUploadSeconds !== null) {
215
+ totalEtaText = `Total ETA: ${this.#formatSeconds(lastDownloadSeconds + lastUploadSeconds)}`;
216
+ }
217
+ else {
218
+ totalEtaText = "Total ETA: ...";
219
+ }
220
+ }
221
+ const totalParts = [
222
+ `${overallFilesCompleted}/${batchProgress.overallFilesTotal} files`,
223
+ `${formatBytes(overallBytesTransferred)} / ${formatBytes(batchProgress.overallBytesTotal)}`,
224
+ chalk.yellow(`${formatBytes(overallBytesRemaining)} remaining`),
225
+ downloadEtaText,
226
+ uploadEtaText,
227
+ totalEtaText,
228
+ ];
229
+ lines.push(`Total: ${totalParts.join(", ")}`);
230
+ // Update the display
231
+ logUpdate(lines.join("\n"));
232
+ }
233
+ #formatBatchLine(batchProgress, downloadProgress, totals, stats) {
234
+ const phase = batchProgress.currentPhase;
235
+ const batchNum = `Batch ${batchProgress.currentBatch}/${batchProgress.totalBatches}`;
236
+ switch (phase) {
237
+ case BatchPhase.DOWNLOADING:
238
+ if (downloadProgress) {
239
+ const dlPercent = downloadProgress.percentComplete.toFixed(1);
240
+ const dlSpeed = formatBytes(downloadProgress.speed) + "/s";
241
+ const dlEta = this.#formatSeconds(downloadProgress.eta);
242
+ return `${batchNum}: ${chalk.blue("↓ Downloading")} (${formatBytes(downloadProgress.bytesTransferred)} / ${formatBytes(downloadProgress.totalBytes)}, ${dlPercent}%, ${dlSpeed}, ETA: ${dlEta})`;
243
+ }
244
+ return `${batchNum}: ${chalk.blue("↓ Downloading...")}`;
245
+ case BatchPhase.SCANNING:
246
+ return `${batchNum}: ${chalk.yellow("Scanning...")}`;
247
+ case BatchPhase.SYNCING_FOLDERS:
248
+ return `${batchNum}: ${chalk.yellow("Syncing folders...")}`;
249
+ case BatchPhase.UPLOADING:
250
+ const uploadedFiles = totals.successFileCount + totals.failedFileCount + totals.skippedFileCount;
251
+ const uploadedBytes = totals.totalBytesUploaded;
252
+ const uploadPercent = batchProgress.batchBytesTotal > 0
253
+ ? ((uploadedBytes / batchProgress.batchBytesTotal) * 100).toFixed(1)
254
+ : "0.0";
255
+ let uploadLine = `${batchNum}: ${chalk.blue("↑ Uploading")} (${uploadedFiles}/${batchProgress.batchFilesTotal} files, ${formatBytes(uploadedBytes)} / ${formatBytes(batchProgress.batchBytesTotal)}, ${uploadPercent}%`;
256
+ // Add speed and ETA if available
257
+ if (stats.uploadSpeedBps !== null && stats.timeRemainingSeconds !== null) {
258
+ uploadLine += `, ${stats.formattedSpeed}, ETA: ${stats.formattedTime}`;
259
+ }
260
+ uploadLine += ")";
261
+ return uploadLine;
262
+ case BatchPhase.CLEANING:
263
+ return `${batchNum}: ${chalk.yellow("Cleaning...")}`;
264
+ case BatchPhase.COMPLETE:
265
+ const batchSize = formatBytes(batchProgress.batchBytesTotal);
266
+ return `${batchNum}: ${chalk.green("✓ Complete")} (${batchProgress.batchFilesTotal} files, ${batchSize}${batchProgress.extraDetails ? `, ${batchProgress.extraDetails}` : ""})`;
267
+ default:
268
+ return `${batchNum}: ${chalk.gray("Processing...")}`;
269
+ }
270
+ }
271
+ #formatSeconds(seconds) {
272
+ if (seconds <= 0)
273
+ return "0s";
274
+ const hours = Math.floor(seconds / 3600);
275
+ const minutes = Math.floor((seconds % 3600) / 60);
276
+ const secs = Math.floor(seconds % 60);
277
+ if (hours > 0) {
278
+ return `${hours}h ${minutes}m`;
279
+ }
280
+ if (minutes > 0) {
281
+ return `${minutes}m ${secs}s`;
282
+ }
283
+ return `${secs}s`;
284
+ }
285
+ #extractSecondsFromEtaText(etaText) {
286
+ if (!etaText) {
287
+ return null;
288
+ }
289
+ const match = etaText.match(/(\d+)h/) || etaText.match(/(\d+)m/) || etaText.match(/(\d+)s/);
290
+ if (!match) {
291
+ return null;
292
+ }
293
+ let remainingText = etaText.replace("Download ETA:", "").replace("Upload ETA:", "").replace("Total ETA:", "").trim();
294
+ if (remainingText === "Calculating...") {
295
+ return null;
296
+ }
297
+ let totalSeconds = 0;
298
+ const hourMatch = remainingText.match(/(\d+)h/);
299
+ if (hourMatch) {
300
+ totalSeconds += parseInt(hourMatch[1], 10) * 3600;
301
+ remainingText = remainingText.replace(hourMatch[0], "");
302
+ }
303
+ const minuteMatch = remainingText.match(/(\d+)m/);
304
+ if (minuteMatch) {
305
+ totalSeconds += parseInt(minuteMatch[1], 10) * 60;
306
+ remainingText = remainingText.replace(minuteMatch[0], "");
307
+ }
308
+ const secondMatch = remainingText.match(/(\d+)s/);
309
+ if (secondMatch) {
310
+ totalSeconds += parseInt(secondMatch[1], 10);
311
+ }
312
+ return totalSeconds > 0 ? totalSeconds : null;
313
+ }
128
314
  }
129
315
  export const cliDisplay = new CliDisplay();
130
316
  //# sourceMappingURL=cliDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliDisplay.js","sourceRoot":"","sources":["../src/cliDisplay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliDisplay.js","sourceRoot":"","sources":["../src/cliDisplay.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,6 +9,25 @@ import { SyncOrchestrator } from "./sync.js";
9
9
  const __filename = fileURLToPath(import.meta.url);
10
10
  const __dirname = path.dirname(__filename);
11
11
  const packageJson = JSON.parse(readFileSync(path.join(__dirname, "..", "package.json"), "utf-8"));
12
+ /**
13
+ * Parse size string like "500GB", "1TB", "100MB" to bytes
14
+ */
15
+ function parseSizeString(sizeStr) {
16
+ const match = sizeStr.match(/^(\d+(?:\.\d+)?)\s*(B|KB|MB|GB|TB)$/i);
17
+ if (!match) {
18
+ return null;
19
+ }
20
+ const value = parseFloat(match[1]);
21
+ const unit = match[2].toUpperCase();
22
+ const multipliers = {
23
+ 'B': 1,
24
+ 'KB': 1000,
25
+ 'MB': 1000 * 1000,
26
+ 'GB': 1000 * 1000 * 1000,
27
+ 'TB': 1000 * 1000 * 1000 * 1000,
28
+ };
29
+ return value * (multipliers[unit] || 1);
30
+ }
12
31
  const program = new Command();
13
32
  program
14
33
  .name("aspect-sync")
@@ -26,6 +45,7 @@ program
26
45
  .option("--temp-dir <path>", "Local temporary directory for synced files", path.join(os.homedir(), ".aspect", "sync"))
27
46
  .option("--session <name>", "Session name for isolation (default: auto-generated timestamp)")
28
47
  .option("--check", "Check remote files against Aspect without downloading/uploading", false)
48
+ .option("--batch-size <size>", "Enable batched mode with max batch size (e.g., 500GB, 1TB). Helps with large migrations.", "")
29
49
  .option("--rclone-transfers <number>", "Number of parallel file transfers (default: 4)", "4")
30
50
  .option("--rclone-multi-thread-streams <number>", "Streams per large file (default: 4, higher = faster large files)", "4")
31
51
  .option("--rclone-multi-thread-chunk-size <size>", "Chunk size for multi-threading (default: 64MiB)", "64MiB")
@@ -72,6 +92,17 @@ program
72
92
  const rcloneCheckers = rcloneTransfers >= 16
73
93
  ? Math.floor(rcloneTransfers / 4)
74
94
  : rcloneTransfers;
95
+ // Parse batch size if provided
96
+ let batchSizeBytes = undefined;
97
+ if (options.batchSize) {
98
+ const parsedSize = parseSizeString(options.batchSize);
99
+ if (parsedSize === null) {
100
+ console.error(`Error: Invalid batch size format: ${options.batchSize}`);
101
+ console.error('Expected format: <number><unit> (e.g., "500GB", "1TB", "100MB")');
102
+ process.exit(1);
103
+ }
104
+ batchSizeBytes = parsedSize;
105
+ }
75
106
  // Build config
76
107
  const config = {
77
108
  remote: options.remote,
@@ -94,6 +125,7 @@ program
94
125
  useMmap: !options.rcloneNoMmap,
95
126
  extraRcloneArgs: options.rcloneExtra,
96
127
  },
128
+ batchSizeBytes: batchSizeBytes,
97
129
  };
98
130
  // Validate config
99
131
  if (isNaN(config.maxConcurrent) || config.maxConcurrent < 1) {
@@ -113,6 +145,9 @@ program
113
145
  if (options.check) {
114
146
  await orchestrator.runCheckOnly();
115
147
  }
148
+ else if (batchSizeBytes !== undefined) {
149
+ await orchestrator.runBatched();
150
+ }
116
151
  else {
117
152
  await orchestrator.run();
118
153
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,iCAAiC;AACjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAClE,CAAA;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAEnC,MAAM,WAAW,GAA2B;QAC1C,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI,GAAG,IAAI;QACjB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;QACxB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;KAChC,CAAA;IAED,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAE/B,OAAO;KACJ,cAAc,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACzE,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC;KAC3D,cAAc,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;KACzE,cAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAC;KACnG,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;KAC7E,MAAM,CAAC,8BAA8B,EAAE,0DAA0D,EAAE,IAAI,CAAC;KACxG,MAAM,CAAC,cAAc,EAAE,+CAA+C,EAAE,KAAK,CAAC;KAC9E,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KACrH,MAAM,CAAC,kBAAkB,EAAE,gEAAgE,CAAC;KAC5F,MAAM,CAAC,SAAS,EAAE,iEAAiE,EAAE,KAAK,CAAC;KAC3F,MAAM,CAAC,qBAAqB,EAAE,0FAA0F,EAAE,EAAE,CAAC;KAC7H,MAAM,CAAC,6BAA6B,EAAE,gDAAgD,EAAE,GAAG,CAAC;KAC5F,MAAM,CAAC,wCAAwC,EAAE,kEAAkE,EAAE,GAAG,CAAC;KACzH,MAAM,CAAC,yCAAyC,EAAE,iDAAiD,EAAE,OAAO,CAAC;KAC7G,MAAM,CAAC,qCAAqC,EAAE,wDAAwD,EAAE,OAAO,CAAC;KAChH,MAAM,CAAC,6BAA6B,EAAE,2EAA2E,EAAE,KAAK,CAAC;KACzH,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,EAAE,KAAK,CAAC;KAC1F,MAAM,CACL,sBAAsB,EACtB,mDAAmD,EACnD,CAAC,KAAa,EAAE,QAA8B,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACjF,EAAE,CACH;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,4BAA4B;IAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAEjF,wCAAwC;IACxC,IAAI,WAAmB,CAAA;IACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACzD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAEzD,4CAA4C;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QACtC,iFAAiF;QACjF,MAAM,KAAK,GAAG,MAAM,GAAG,WAAW,CAAA;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAE/C,WAAW,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,IAAI,CAAA;IACzF,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAExD,uBAAuB;IACvB,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;IAC7D,MAAM,wBAAwB,GAAG,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAA;IAE/E,6CAA6C;IAC7C,oCAAoC;IACpC,qCAAqC;IACrC,MAAM,cAAc,GAAG,eAAe,IAAI,EAAE;QAC1C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,eAAe,CAAA;IAEnB,+BAA+B;IAC/B,IAAI,cAAc,GAAuB,SAAS,CAAA;IAClD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;YACvE,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,cAAc,GAAG,UAAU,CAAA;IAC7B,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAe;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,IAAI;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACrD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,WAAW;QACxB,aAAa,EAAE;YACb,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,cAAc;YACxB,kBAAkB,EAAE,wBAAwB;YAC5C,oBAAoB,EAAE,OAAO,CAAC,0BAA0B;YACxD,iBAAiB,EAAE,OAAO,CAAC,uBAAuB;YAClD,UAAU,EAAE,OAAO,CAAC,gBAAgB;YACpC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY;YAC9B,eAAe,EAAE,OAAO,CAAC,WAAW;SACrC;QACD,cAAc,EAAE,cAAc;KAC/B,CAAA;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,wBAAwB,CAAC,IAAI,wBAAwB,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACjD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,YAAY,CAAC,YAAY,EAAE,CAAA;QACnC,CAAC;aAAM,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,CAAC,GAAG,EAAE,CAAA;QAC1B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/dist/rclone.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import type { RcloneOptions } from "./types.js";
1
+ import type { RcloneOptions, DownloadProgress } from "./types.js";
2
2
  export declare class RcloneError extends Error {
3
3
  readonly stderr: string;
4
4
  constructor(message: string, stderr: string);
5
5
  }
6
6
  export declare function checkRcloneInstalled(): Promise<void>;
7
7
  export declare function syncFromRemote(remote: string, remotePath: string, localPath: string, options: RcloneOptions): Promise<void>;
8
+ export declare function syncFromRemoteWithFiles(remote: string, remotePath: string, localPath: string, batchFilePath: string, options: RcloneOptions, onProgress?: (progress: DownloadProgress) => void): Promise<void>;
8
9
  export declare function listRemoteFiles(remote: string, remotePath: string): Promise<string[]>;
9
10
  export interface LocalFileInfo {
10
11
  relativePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"rclone.d.ts","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,qBAAa,WAAY,SAAQ,KAAK;aACS,MAAM,EAAE,MAAM;gBAA/C,OAAO,EAAE,MAAM,EAAkB,MAAM,EAAE,MAAM;CAI5D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB1D;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuD9B;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAyC/E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B5E"}
1
+ {"version":3,"file":"rclone.d.ts","sourceRoot":"","sources":["../src/rclone.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,qBAAa,WAAY,SAAQ,KAAK;aACS,MAAM,EAAE,MAAM;gBAA/C,OAAO,EAAE,MAAM,EAAkB,MAAM,EAAE,MAAM;CAI5D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB1D;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,aAAa,EACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAChD,OAAO,CAAC,IAAI,CAAC,CAgMf;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuD9B;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAyC/E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B5E"}