/
raiden
/
obsidian-git-encrypt
Обзор
Документация
Войти
/
raiden
/
obsidian-git-encrypt
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/sync/syncTypes.ts
39 строк
1 KB
Robert Kuzhin
feat: orchestrate recoverable two-device sync
09 авг 2026, 12:16
09 авг 2026, 12:16
7b0e3b9
Код
Авторство
О чём код?
import type { Manifest, ManifestEntry } from "../mirror/manifestTypes.js"; import type { VaultChange } from "../vault/vaultTypes.js"; export type PlannedAction = | { readonly type: "decrypt-to-vault"; readonly fileId: string; readonly path: string } | { readonly type: "encrypt-from-vault"; readonly fileId: string; readonly path: string } | { readonly type: "delete-from-vault"; readonly path: string } | { readonly type: "delete-from-mirror"; readonly fileId: string } | { readonly type: "conflict"; readonly conflict: SyncConflict }; export interface SyncConflict { readonly kind: "concurrent-change" | "path-collision"; readonly fileId?: string; readonly localFileId?: string; readonly remoteFileId?: string; readonly base?: ManifestEntry; readonly local?: ManifestEntry; readonly remote?: ManifestEntry; } export type ConflictStrategy = "keep-local" | "keep-remote" | "keep-both"; export interface ConflictResolution { readonly actions: readonly Exclude<PlannedAction, { readonly type: "conflict" }>[]; readonly vaultChanges: readonly VaultChange[]; } export interface ApplyResult { readonly deferredLocalActions: readonly ( | { readonly type: "encrypt-from-vault"; readonly fileId: string; readonly path: string } | { readonly type: "delete-from-mirror"; readonly fileId: string } )[]; } export interface ReconciliationPlan { readonly actions: readonly PlannedAction[]; readonly conflicts: readonly SyncConflict[]; readonly mergedManifest?: Manifest; }