///
import type Sync from "./sync";
import { type Delta } from "./deltas";
import { type RemoteItem } from "./filesystems/remote";
import fs from "fs-extra";
import { Prettify } from "../types";
export type TaskError = Prettify<{
path: string;
error: Error;
uuid: string;
} & ({
type: "uploadFile" | "createRemoteDirectory" | "createLocalDirectory" | "deleteLocalFile" | "deleteRemoteFile" | "deleteLocalDirectory" | "deleteRemoteDirectory" | "downloadFile";
} | {
type: "renameLocalFile" | "renameRemoteFile" | "renameRemoteDirectory" | "renameLocalDirectory";
from: string;
to: string;
})>;
export type DoneTask = {
path: string;
} & ({
type: "uploadFile";
item: RemoteItem;
stats: fs.Stats;
} | {
type: "createRemoteDirectory";
item: RemoteItem;
stats: fs.Stats;
} | {
type: "createLocalDirectory";
stats: fs.Stats;
item: RemoteItem;
} | {
type: "deleteLocalFile";
} | {
type: "deleteRemoteFile";
} | {
type: "deleteLocalDirectory";
} | {
type: "deleteRemoteDirectory";
} | {
type: "downloadFile";
stats: fs.Stats;
item: RemoteItem;
} | {
type: "renameLocalFile";
from: string;
to: string;
stats: fs.Stats;
} | {
type: "renameRemoteFile";
from: string;
to: string;
} | {
type: "renameRemoteDirectory";
from: string;
to: string;
} | {
type: "renameLocalDirectory";
from: string;
to: string;
stats: fs.Stats;
});
/**
* Tasks
* @date 3/1/2024 - 11:11:32 PM
*
* @export
* @class Tasks
* @typedef {Tasks}
*/
export declare class Tasks {
private readonly sync;
private readonly transfersSemaphore;
private readonly normalSemaphore;
/**
* Creates an instance of Tasks.
*
* @constructor
* @public
* @param {Sync} sync
*/
constructor(sync: Sync);
waitForPause(): Promise;
/**
* Process a delta task.
*
* @private
* @async
* @param {Delta} delta
* @returns {Promise}
*/
private processTask;
/**
* Process all deltas.
*
* @public
* @async
* @param {{ deltasSorted: Delta[] }} param0
* @param {{}} param0.deltasSorted
* @returns {Promise<{
* doneTasks: DoneTask[]
* errors: TaskError[]
* }>}
*/
process({ deltasSorted }: {
deltasSorted: Delta[];
}): Promise<{
doneTasks: DoneTask[];
errors: TaskError[];
}>;
}
export default Tasks;