///
import { importVaultHostFiles } from "../services/vaultImportBatch";
import type {
VaultImportWorkerRequest,
VaultImportWorkerResponse,
} from "../services/vaultImportWorkerClient";
const workerScope: DedicatedWorkerGlobalScope = self as unknown as DedicatedWorkerGlobalScope;
const post = (message: VaultImportWorkerResponse) => {
workerScope.postMessage(message);
};
workerScope.addEventListener("message", async (event: MessageEvent) => {
if (event.data.type !== "import") return;
try {
post({ type: "progress", progress: { stage: "reading", percent: 10 } });
const result = await importVaultHostFiles({
format: event.data.format,
files: event.data.files,
relativePaths: event.data.relativePaths,
encoding: event.data.encoding,
masterPassword: event.data.masterPassword,
onProgress: ({ completedFiles, totalFiles, fileName }) => {
post({
type: "progress",
progress: {
stage: "parsing",
percent: 10 + Math.round((completedFiles / Math.max(1, totalFiles)) * 50),
completedFiles,
totalFiles,
currentFileName: fileName,
},
});
},
});
post({ type: "result", result });
} catch (error) {
post({
type: "error",
message: error instanceof Error ? error.message : "Vault import failed.",
});
}
});