mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-06-11 08:50:17 +00:00
add type defs for community automatic review
This commit is contained in:
Vendored
+134
@@ -0,0 +1,134 @@
|
||||
import type { SimpleStore } from "octagonal-wheels/databases/SimpleStoreBase";
|
||||
import type { HasSettings, ObsidianLiveSyncSettings } from "@lib/common/models/setting.type";
|
||||
import type { EntryDoc } from "@lib/common/models/db.definition";
|
||||
import type { Confirm } from "@lib/interfaces/Confirm";
|
||||
import type { DatabaseFileAccess } from "@lib/interfaces/DatabaseFileAccess";
|
||||
import type { Rebuilder } from "@lib/interfaces/DatabaseRebuilder";
|
||||
import type { IFileHandler } from "@lib/interfaces/FileHandler";
|
||||
import type { StorageAccess } from "@lib/interfaces/StorageAccess";
|
||||
import type { LiveSyncLocalDBEnv } from "@lib/pouchdb/LiveSyncLocalDB";
|
||||
import type { LiveSyncCouchDBReplicatorEnv } from "@lib/replication/couchdb/LiveSyncReplicator";
|
||||
import type { CheckPointInfo } from "@lib/replication/journal/JournalSyncTypes";
|
||||
import type { LiveSyncJournalReplicatorEnv } from "@lib/replication/journal/LiveSyncJournalReplicatorEnv";
|
||||
import type { LiveSyncReplicatorEnv } from "@lib/replication/LiveSyncAbstractReplicator";
|
||||
import type { ServiceContext } from "@lib/services/base/ServiceBase";
|
||||
import type { InjectableServiceHub } from "@lib/services/InjectableServices";
|
||||
import { AbstractModule } from "./modules/AbstractModule";
|
||||
import type { ServiceModules } from "@lib/interfaces/ServiceModule";
|
||||
export declare class LiveSyncBaseCore<T extends ServiceContext = ServiceContext, TCommands extends IMinimumLiveSyncCommands = IMinimumLiveSyncCommands> implements LiveSyncLocalDBEnv, LiveSyncReplicatorEnv, LiveSyncJournalReplicatorEnv, LiveSyncCouchDBReplicatorEnv, HasSettings<ObsidianLiveSyncSettings> {
|
||||
addOns: TCommands[];
|
||||
/**
|
||||
* register an add-onn to the plug-in.
|
||||
* Add-ons are features that are not essential to the core functionality of the plugin,
|
||||
* @param addOn
|
||||
*/
|
||||
private _registerAddOn;
|
||||
/**
|
||||
* Get an add-on by its class name. Returns undefined if not found.
|
||||
* @param cls
|
||||
* @returns
|
||||
*/
|
||||
getAddOn<T extends TCommands>(cls: string): T | undefined;
|
||||
constructor(serviceHub: InjectableServiceHub<T>, serviceModuleInitialiser: (core: LiveSyncBaseCore<T, TCommands>, serviceHub: InjectableServiceHub<T>) => ServiceModules, extraModuleInitialiser: (core: LiveSyncBaseCore<T, TCommands>) => AbstractModule[], addOnsInitialiser: (core: LiveSyncBaseCore<T, TCommands>) => TCommands[], featuresInitialiser: (core: LiveSyncBaseCore<T, TCommands>) => void);
|
||||
/**
|
||||
* The service hub for managing all services.
|
||||
*/
|
||||
_services: InjectableServiceHub<T> | undefined;
|
||||
get services(): InjectableServiceHub<T>;
|
||||
/**
|
||||
* Service Modules
|
||||
*/
|
||||
protected _serviceModules: ServiceModules;
|
||||
get serviceModules(): ServiceModules;
|
||||
/**
|
||||
* The modules of the plug-in. Modules are responsible for specific features or functionalities of the plug-in, such as file handling, conflict resolution, replication, etc.
|
||||
*/
|
||||
private modules;
|
||||
/**
|
||||
* Get a module by its class. Throws an error if not found.
|
||||
* Mostly used for getting SetupManager.
|
||||
* @param constructor
|
||||
* @returns
|
||||
*/
|
||||
getModule<T extends AbstractModule>(constructor: new (...args: any[]) => T): T;
|
||||
/**
|
||||
* Register a module to the plug-in.
|
||||
* @param module The module to register.
|
||||
*/
|
||||
private _registerModule;
|
||||
registerModules(extraModules?: AbstractModule[]): void;
|
||||
/**
|
||||
* Bind module functions to services.
|
||||
*/
|
||||
bindModuleFunctions(): void;
|
||||
/**
|
||||
* @obsolete Use services.UI.confirm instead. The confirm function to show a confirmation dialog to the user.
|
||||
*/
|
||||
get confirm(): Confirm;
|
||||
/**
|
||||
* @obsolete Use services.setting.currentSettings instead. The current settings of the plug-in.
|
||||
*/
|
||||
get settings(): ObsidianLiveSyncSettings;
|
||||
/**
|
||||
* @obsolete Use services.setting.settings instead. Set the settings of the plug-in.
|
||||
*/
|
||||
set settings(value: ObsidianLiveSyncSettings);
|
||||
/**
|
||||
* @obsolete Use services.setting.currentSettings instead. Get the settings of the plug-in.
|
||||
* @returns The current settings of the plug-in.
|
||||
*/
|
||||
getSettings(): ObsidianLiveSyncSettings;
|
||||
/**
|
||||
* @obsolete Use services.database.localDatabase instead. The local database instance.
|
||||
*/
|
||||
get localDatabase(): import("@lib/pouchdb/LiveSyncLocalDB").LiveSyncLocalDB;
|
||||
/**
|
||||
* @obsolete Use services.database.localDatabase instead. Get the PouchDB database instance. Note that this is not the same as the local database instance, which is a wrapper around the PouchDB database.
|
||||
* @returns The PouchDB database instance.
|
||||
*/
|
||||
getDatabase(): PouchDB.Database<EntryDoc>;
|
||||
/**
|
||||
* @obsolete Use services.keyValueDB.simpleStore instead. A simple key-value store for storing non-file data, such as checkpoints, sync status, etc.
|
||||
*/
|
||||
get simpleStore(): SimpleStore<CheckPointInfo>;
|
||||
/**
|
||||
* @obsolete Use services.replication.getActiveReplicator instead. Get the active replicator instance. Note that there can be multiple replicators, but only one can be active at a time.
|
||||
*/
|
||||
get replicator(): import("@lib/replication/LiveSyncAbstractReplicator").LiveSyncAbstractReplicator;
|
||||
/**
|
||||
* @obsolete Use services.keyValueDB.kvDB instead. Get the key-value database instance. This is used for storing large data that cannot be stored in the simple store, such as file metadata, etc.
|
||||
*/
|
||||
get kvDB(): import("./lib/src/interfaces/KeyValueDatabase").KeyValueDatabase;
|
||||
/**
|
||||
* Storage Accessor for handling file operations.
|
||||
* @obsolete Use serviceModules.storageAccess instead.
|
||||
*/
|
||||
get storageAccess(): StorageAccess;
|
||||
/**
|
||||
* Database File Accessor for handling file operations related to the database, such as exporting the database, importing from a file, etc.
|
||||
* @obsolete Use serviceModules.databaseFileAccess instead.
|
||||
*/
|
||||
get databaseFileAccess(): DatabaseFileAccess;
|
||||
/**
|
||||
* File Handler for handling file operations related to replication, such as resolving conflicts, applying changes from replication, etc.
|
||||
* @obsolete Use serviceModules.fileHandler instead.
|
||||
*/
|
||||
get fileHandler(): IFileHandler;
|
||||
/**
|
||||
* Rebuilder for handling database rebuilding operations.
|
||||
* @obsolete Use serviceModules.rebuilder instead.
|
||||
*/
|
||||
get rebuilder(): Rebuilder;
|
||||
/**
|
||||
* Initialise ServiceFeatures.
|
||||
* (Please refer `serviceFeatures` for more details)
|
||||
*/
|
||||
initialiseServiceFeatures(): void;
|
||||
}
|
||||
export interface IMinimumLiveSyncCommands {
|
||||
onunload(): void;
|
||||
onload(): void | Promise<void>;
|
||||
constructor: {
|
||||
name: string;
|
||||
};
|
||||
}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import type { KeyValueDatabase } from "@lib/interfaces/KeyValueDatabase.ts";
|
||||
export { OpenKeyValueDatabase } from "./KeyValueDBv2.ts";
|
||||
export declare const _OpenKeyValueDatabase: (dbKey: string) => Promise<KeyValueDatabase>;
|
||||
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
import type { KeyValueDatabase } from "@lib/interfaces/KeyValueDatabase";
|
||||
import { type IDBPDatabase } from "idb";
|
||||
export declare function OpenKeyValueDatabase(dbKey: string): Promise<KeyValueDatabase>;
|
||||
export declare class IDBKeyValueDatabase implements KeyValueDatabase {
|
||||
protected _dbPromise: Promise<IDBPDatabase<unknown>> | null;
|
||||
protected dbKey: string;
|
||||
protected storeKey: string;
|
||||
protected _isDestroyed: boolean;
|
||||
protected destroyedPromise: Promise<void> | null;
|
||||
get isDestroyed(): boolean;
|
||||
get ensuredDestroyed(): Promise<void>;
|
||||
getIsReady(): Promise<boolean>;
|
||||
protected ensureDB(): Promise<IDBPDatabase<unknown>>;
|
||||
protected closeDB(setDestroyed?: boolean): Promise<void>;
|
||||
get DB(): Promise<IDBPDatabase<unknown>>;
|
||||
constructor(dbKey: string);
|
||||
get<U>(key: IDBValidKey): Promise<U>;
|
||||
set<U>(key: IDBValidKey, value: U): Promise<IDBValidKey>;
|
||||
del(key: IDBValidKey): Promise<void>;
|
||||
clear(): Promise<void>;
|
||||
keys(query?: IDBValidKey | IDBKeyRange, count?: number): Promise<IDBValidKey[]>;
|
||||
close(): Promise<void>;
|
||||
destroy(): Promise<void>;
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
import type { NecessaryServices } from "@lib/interfaces/ServiceModule";
|
||||
type PeriodicProcessorHost = NecessaryServices<"API" | "control", never>;
|
||||
export declare class PeriodicProcessor {
|
||||
_process: () => Promise<unknown>;
|
||||
_timer?: number;
|
||||
_core: PeriodicProcessorHost;
|
||||
constructor(core: PeriodicProcessorHost, process: () => Promise<unknown>);
|
||||
process(): Promise<void>;
|
||||
enable(interval: number): void;
|
||||
disable(): void;
|
||||
}
|
||||
export {};
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
import { ItemView } from "@/deps.ts";
|
||||
import { type mount } from "svelte";
|
||||
export declare abstract class SvelteItemView extends ItemView {
|
||||
abstract instantiateComponent(target: HTMLElement): ReturnType<typeof mount> | Promise<ReturnType<typeof mount>>;
|
||||
component?: ReturnType<typeof mount>;
|
||||
onOpen(): Promise<void>;
|
||||
_dismountComponent(): Promise<void>;
|
||||
onClose(): Promise<void>;
|
||||
}
|
||||
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
import { eventHub } from "@lib/hub/hub";
|
||||
export declare const EVENT_PLUGIN_LOADED = "plugin-loaded";
|
||||
export declare const EVENT_PLUGIN_UNLOADED = "plugin-unloaded";
|
||||
export declare const EVENT_FILE_SAVED = "file-saved";
|
||||
export declare const EVENT_LEAF_ACTIVE_CHANGED = "leaf-active-changed";
|
||||
export declare const EVENT_REQUEST_OPEN_SETTINGS = "request-open-settings";
|
||||
export declare const EVENT_REQUEST_OPEN_SETTING_WIZARD = "request-open-setting-wizard";
|
||||
export declare const EVENT_REQUEST_OPEN_SETUP_URI = "request-open-setup-uri";
|
||||
export declare const EVENT_REQUEST_COPY_SETUP_URI = "request-copy-setup-uri";
|
||||
export declare const EVENT_REQUEST_SHOW_SETUP_QR = "request-show-setup-qr";
|
||||
export declare const EVENT_REQUEST_RELOAD_SETTING_TAB = "reload-setting-tab";
|
||||
export declare const EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG = "request-open-plugin-sync-dialog";
|
||||
export declare const EVENT_REQUEST_RUN_DOCTOR = "request-run-doctor";
|
||||
export declare const EVENT_REQUEST_RUN_FIX_INCOMPLETE = "request-run-fix-incomplete";
|
||||
export declare const EVENT_ANALYSE_DB_USAGE = "analyse-db-usage";
|
||||
export declare const EVENT_REQUEST_PERFORM_GC_V3 = "request-perform-gc-v3";
|
||||
declare global {
|
||||
interface LSEvents {
|
||||
[EVENT_PLUGIN_LOADED]: undefined;
|
||||
[EVENT_PLUGIN_UNLOADED]: undefined;
|
||||
[EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG]: undefined;
|
||||
[EVENT_REQUEST_OPEN_SETTINGS]: undefined;
|
||||
[EVENT_REQUEST_OPEN_SETTING_WIZARD]: undefined;
|
||||
[EVENT_REQUEST_RELOAD_SETTING_TAB]: undefined;
|
||||
[EVENT_LEAF_ACTIVE_CHANGED]: undefined;
|
||||
[EVENT_REQUEST_OPEN_SETUP_URI]: undefined;
|
||||
[EVENT_REQUEST_COPY_SETUP_URI]: undefined;
|
||||
[EVENT_REQUEST_SHOW_SETUP_QR]: undefined;
|
||||
[EVENT_REQUEST_RUN_DOCTOR]: string;
|
||||
[EVENT_REQUEST_RUN_FIX_INCOMPLETE]: undefined;
|
||||
[EVENT_ANALYSE_DB_USAGE]: undefined;
|
||||
[EVENT_REQUEST_PERFORM_GC_V3]: undefined;
|
||||
}
|
||||
}
|
||||
export * from "@lib/events/coreEvents.ts";
|
||||
export { eventHub };
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
import type { TFile } from "@/deps";
|
||||
import type { FilePathWithPrefix, LoadedEntry } from "@lib/common/models/db.type";
|
||||
export declare const EVENT_REQUEST_SHOW_HISTORY = "show-history";
|
||||
declare global {
|
||||
interface LSEvents {
|
||||
[EVENT_REQUEST_SHOW_HISTORY]: {
|
||||
file: TFile;
|
||||
fileOnDB: LoadedEntry;
|
||||
} | {
|
||||
file: FilePathWithPrefix;
|
||||
fileOnDB: LoadedEntry;
|
||||
};
|
||||
}
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
import type { ObsidianLiveSyncSettings } from "@lib/common/models/setting.type";
|
||||
import type { LiveSyncBaseCore } from "@/LiveSyncBaseCore";
|
||||
export declare function generateReport(settings: ObsidianLiveSyncSettings, core: LiveSyncBaseCore): Promise<{
|
||||
obsidianInfo: {
|
||||
navigator: string;
|
||||
fileSystem: string;
|
||||
};
|
||||
responseConfig: Record<string, unknown>;
|
||||
pluginConfig: ObsidianLiveSyncSettings;
|
||||
manifestVersion: string;
|
||||
packageVersion: string;
|
||||
}>;
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import { PersistentMap } from "octagonal-wheels/dataobject/PersistentMap";
|
||||
export declare let sameChangePairs: PersistentMap<number[]>;
|
||||
export declare function initializeStores(vaultName: string): void;
|
||||
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
import { type PluginManifest, TFile } from "@/deps.ts";
|
||||
import type { DatabaseEntry, FilePath } from "@lib/common/models/db.type";
|
||||
import type { EntryBody } from "@lib/common/models/db.definition";
|
||||
export type { CacheData, FileEventItem } from "@lib/common/types.ts";
|
||||
export interface PluginDataEntry extends DatabaseEntry {
|
||||
deviceVaultName: string;
|
||||
mtime: number;
|
||||
manifest: PluginManifest;
|
||||
mainJs: string;
|
||||
manifestJson: string;
|
||||
styleCss?: string;
|
||||
dataJson?: string;
|
||||
_conflicts?: string[];
|
||||
type: "plugin";
|
||||
}
|
||||
export interface PluginList {
|
||||
[key: string]: PluginDataEntry[];
|
||||
}
|
||||
export interface DevicePluginList {
|
||||
[key: string]: PluginDataEntry;
|
||||
}
|
||||
export declare const PERIODIC_PLUGIN_SWEEP = 60;
|
||||
export interface InternalFileInfo {
|
||||
path: FilePath;
|
||||
mtime: number;
|
||||
ctime: number;
|
||||
size: number;
|
||||
deleted?: boolean;
|
||||
}
|
||||
export interface FileInfo {
|
||||
path: FilePath;
|
||||
mtime: number;
|
||||
ctime: number;
|
||||
size: number;
|
||||
deleted?: boolean;
|
||||
file: TFile;
|
||||
}
|
||||
export type queueItem = {
|
||||
entry: EntryBody;
|
||||
missingChildren: string[];
|
||||
timeout?: number;
|
||||
done?: boolean;
|
||||
warned?: boolean;
|
||||
};
|
||||
export declare const FileWatchEventQueueMax = 10;
|
||||
export { configURIBase, configURIBaseQR } from "@lib/common/types.ts";
|
||||
export { CHeader, PSCHeader, PSCHeaderEnd, ICHeader, ICHeaderEnd, ICHeaderLength, ICXHeader, } from "@lib/common/models/fileaccess.const.ts";
|
||||
Vendored
+61
@@ -0,0 +1,61 @@
|
||||
import { TAbstractFile } from "@/deps.ts";
|
||||
import type { AnyEntry, DocumentID, EntryHasPath, FilePath, FilePathWithPrefix } from "@lib/common/models/db.type";
|
||||
import type { CouchDBCredentials } from "@lib/common/models/auth.type";
|
||||
import type { UXFileInfo, UXFileInfoStub } from "@lib/common/models/fileaccess.type";
|
||||
export { ICHeader, ICXHeader } from "./types.ts";
|
||||
import type { KeyValueDatabase } from "@lib/interfaces/KeyValueDatabase.ts";
|
||||
export { scheduleTask, cancelTask, cancelAllTasks } from "octagonal-wheels/concurrency/task";
|
||||
export declare function path2id(filename: FilePathWithPrefix | FilePath, obfuscatePassphrase: string | false, caseInsensitive: boolean): Promise<DocumentID>;
|
||||
export declare function id2path(id: DocumentID, entry?: EntryHasPath): FilePathWithPrefix;
|
||||
export declare function getPathFromTFile(file: TAbstractFile): FilePath;
|
||||
import { isInternalFile, getPathFromUXFileInfo, getStoragePathFromUXFileInfo, getDatabasePathFromUXFileInfo } from "@lib/common/typeUtils.ts";
|
||||
export { isInternalFile, getPathFromUXFileInfo, getStoragePathFromUXFileInfo, getDatabasePathFromUXFileInfo };
|
||||
export declare function memoObject<T>(key: string, obj: T): T;
|
||||
export declare function memoIfNotExist<T>(key: string, func: () => T | Promise<T>): Promise<T>;
|
||||
export declare function retrieveMemoObject<T>(key: string): T | false;
|
||||
export declare function disposeMemoObject(key: string): void;
|
||||
export declare function isValidPath(filename: string): boolean;
|
||||
export declare function trimPrefix(target: string, prefix: string): string;
|
||||
export { isInternalMetadata, id2InternalMetadataId, isChunk, isCustomisationSyncMetadata, isPluginMetadata, stripInternalMetadataPrefix, } from "@lib/common/typeUtils.ts";
|
||||
export declare const _requestToCouchDBFetch: (baseUri: string, username: string, password: string, path?: string, body?: unknown, method?: string) => Promise<Response>;
|
||||
export declare const _requestToCouchDB: (baseUri: string, credentials: CouchDBCredentials, origin: string, path?: string, body?: unknown, method?: string, customHeaders?: Record<string, string>) => Promise<import("obsidian").RequestUrlResponse>;
|
||||
/**
|
||||
* @deprecated Use requestToCouchDBWithCredentials instead.
|
||||
*/
|
||||
export declare const requestToCouchDB: (baseUri: string, username: string, password: string, origin?: string, key?: string, body?: string, method?: string, customHeaders?: Record<string, string>) => Promise<import("obsidian").RequestUrlResponse>;
|
||||
export declare function requestToCouchDBWithCredentials(baseUri: string, credentials: CouchDBCredentials, origin?: string, key?: string, body?: string, method?: string, customHeaders?: Record<string, string>): Promise<import("obsidian").RequestUrlResponse>;
|
||||
import { BASE_IS_NEW, EVEN, TARGET_IS_NEW } from "@lib/common/models/shared.const.symbols.ts";
|
||||
export { BASE_IS_NEW, EVEN, TARGET_IS_NEW };
|
||||
import { compareMTime } from "@lib/common/utils.database.ts";
|
||||
export { compareMTime };
|
||||
export declare function markChangesAreSame(file: AnyEntry | string | UXFileInfoStub, mtime1: number, mtime2: number): true | undefined;
|
||||
export declare function unmarkChanges(file: AnyEntry | string | UXFileInfoStub): void;
|
||||
export declare function isMarkedAsSameChanges(file: UXFileInfoStub | AnyEntry | string, mtimes: number[]): typeof EVEN | undefined;
|
||||
export declare function compareFileFreshness(baseFile: UXFileInfoStub | AnyEntry | undefined, checkTarget: UXFileInfo | AnyEntry | undefined): typeof BASE_IS_NEW | typeof TARGET_IS_NEW | typeof EVEN;
|
||||
export type MemoOption = {
|
||||
key: string;
|
||||
forceUpdate?: boolean;
|
||||
validator?: (context: Map<string, unknown>) => boolean;
|
||||
};
|
||||
export declare function useMemo<T>({ key, forceUpdate, validator }: MemoOption, updateFunc: (context: Map<string, unknown>, prev: T) => T): T;
|
||||
export declare function useStatic<T>(key: string): {
|
||||
value: T | undefined;
|
||||
};
|
||||
export declare function useStatic<T>(key: string, initial: T): {
|
||||
value: T;
|
||||
};
|
||||
export declare function disposeMemo(key: string): void;
|
||||
export declare function disposeAllMemo(): void;
|
||||
export declare function getLogLevel(showNotice: boolean): 32 | 64;
|
||||
export type MapLike<K, V> = {
|
||||
set(key: K, value: V): Map<K, V>;
|
||||
clear(): void;
|
||||
delete(key: K): boolean;
|
||||
get(key: K): V | undefined;
|
||||
has(key: K): boolean;
|
||||
keys: () => IterableIterator<K>;
|
||||
get size(): number;
|
||||
};
|
||||
export declare function autosaveCache<K, V>(db: KeyValueDatabase, mapKey: string): Promise<MapLike<K, V>>;
|
||||
export declare function onlyInNTimes(n: number, proc: (progress: number) => unknown): () => void;
|
||||
export { displayRev } from "@lib/common/utils.ts";
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
import type { FilePath } from "@lib/common/models/db.type";
|
||||
export { addIcon, App, debounce, Editor, FuzzySuggestModal, MarkdownRenderer, MarkdownView, Modal, Notice, Platform, Plugin, PluginSettingTab, requestUrl, sanitizeHTMLToDom, Setting, stringifyYaml, TAbstractFile, TextAreaComponent, TFile, TFolder, parseYaml, ItemView, WorkspaceLeaf, Menu, request, getLanguage, ButtonComponent, TextComponent, ToggleComponent, DropdownComponent, } from "obsidian";
|
||||
export type { DataWriteOptions, PluginManifest, RequestUrlParam, RequestUrlResponse, MarkdownFileInfo, ListedFiles, ValueComponent, Stat, } from "obsidian";
|
||||
declare const normalizePath: <T extends string | FilePath>(from: T) => T;
|
||||
export { normalizePath };
|
||||
export { type Diff, DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, diff_match_patch } from "diff-match-patch";
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
import { type PluginManifest, type App } from "@/deps.ts";
|
||||
import type { EntryDoc } from "@lib/common/models/db.definition";
|
||||
import type { LoadedEntry, FilePathWithPrefix, FilePath, AnyEntry } from "@lib/common/models/db.type";
|
||||
import { LiveSyncCommands } from "@/features/LiveSyncCommands.ts";
|
||||
import { PeriodicProcessor } from "@/common/PeriodicProcessor.ts";
|
||||
import { QueueProcessor } from "octagonal-wheels/concurrency/processor";
|
||||
import type ObsidianLiveSyncPlugin from "@/main.ts";
|
||||
import type { PluginDialogModal } from "./PluginDialogModal.ts";
|
||||
import type { InjectableServiceHub } from "@lib/services/InjectableServices.ts";
|
||||
import type { LiveSyncCore } from "@/main.ts";
|
||||
declare global {
|
||||
interface OPTIONAL_SYNC_FEATURES {
|
||||
DISABLE: "DISABLE";
|
||||
CUSTOMIZE: "CUSTOMIZE";
|
||||
DISABLE_CUSTOM: "DISABLE_CUSTOM";
|
||||
}
|
||||
}
|
||||
export declare const pluginList: import("svelte/store").Writable<PluginDataExDisplay[]>;
|
||||
export declare const pluginIsEnumerating: import("svelte/store").Writable<boolean>;
|
||||
export declare const pluginV2Progress: import("svelte/store").Writable<number>;
|
||||
export type PluginDataExFile = {
|
||||
filename: string;
|
||||
data: string[];
|
||||
mtime: number;
|
||||
size: number;
|
||||
version?: string;
|
||||
hash?: string;
|
||||
displayName?: string;
|
||||
};
|
||||
export interface IPluginDataExDisplay {
|
||||
documentPath: FilePathWithPrefix;
|
||||
category: string;
|
||||
name: string;
|
||||
term: string;
|
||||
displayName?: string;
|
||||
files: (LoadedEntryPluginDataExFile | PluginDataExFile)[];
|
||||
version?: string;
|
||||
mtime: number;
|
||||
}
|
||||
export type PluginDataExDisplay = {
|
||||
documentPath: FilePathWithPrefix;
|
||||
category: string;
|
||||
name: string;
|
||||
term: string;
|
||||
displayName?: string;
|
||||
files: PluginDataExFile[];
|
||||
version?: string;
|
||||
mtime: number;
|
||||
};
|
||||
type LoadedEntryPluginDataExFile = LoadedEntry & PluginDataExFile;
|
||||
export declare const pluginManifests: Map<string, PluginManifest>;
|
||||
export declare const pluginManifestStore: import("svelte/store").Writable<Map<string, PluginManifest>>;
|
||||
export declare class PluginDataExDisplayV2 {
|
||||
documentPath: FilePathWithPrefix;
|
||||
category: string;
|
||||
term: string;
|
||||
files: LoadedEntryPluginDataExFile[];
|
||||
name: string;
|
||||
confKey: string;
|
||||
constructor(data: IPluginDataExDisplay);
|
||||
setFile(file: LoadedEntryPluginDataExFile): Promise<void>;
|
||||
deleteFile(filename: string): void;
|
||||
_displayName: string | undefined;
|
||||
_version: string | undefined;
|
||||
applyLoadedManifest(): void;
|
||||
get displayName(): string;
|
||||
get version(): string | undefined;
|
||||
get mtime(): number;
|
||||
}
|
||||
export type PluginDataEx = {
|
||||
documentPath?: FilePathWithPrefix;
|
||||
category: string;
|
||||
name: string;
|
||||
displayName?: string;
|
||||
term: string;
|
||||
files: PluginDataExFile[];
|
||||
version?: string;
|
||||
mtime: number;
|
||||
};
|
||||
export declare class ConfigSync extends LiveSyncCommands {
|
||||
pluginDialogClass: new (app: App, plugin: ObsidianLiveSyncPlugin) => PluginDialogModal;
|
||||
constructor(plugin: ObsidianLiveSyncPlugin, core: LiveSyncCore, pluginDialogClass: new (app: App, plugin: ObsidianLiveSyncPlugin) => PluginDialogModal);
|
||||
get configDir(): string;
|
||||
get kvDB(): import("../../lib/src/interfaces/KeyValueDatabase.ts").KeyValueDatabase;
|
||||
get useV2(): boolean;
|
||||
get useSyncPluginEtc(): boolean;
|
||||
isThisModuleEnabled(): boolean;
|
||||
pluginDialog?: PluginDialogModal;
|
||||
periodicPluginSweepProcessor: PeriodicProcessor;
|
||||
pluginList: IPluginDataExDisplay[];
|
||||
showPluginSyncModal(): void;
|
||||
hidePluginSyncModal(): void;
|
||||
onunload(): void;
|
||||
addRibbonIcon: (icon: string, title: string, callback: (evt: MouseEvent) => any) => HTMLElement;
|
||||
onload(): void;
|
||||
getFileCategory(filePath: string): "CONFIG" | "THEME" | "SNIPPET" | "PLUGIN_MAIN" | "PLUGIN_ETC" | "PLUGIN_DATA" | "";
|
||||
isTargetPath(filePath: string): boolean;
|
||||
private _everyOnDatabaseInitialized;
|
||||
_everyBeforeReplicate(showNotice: boolean): Promise<boolean>;
|
||||
_everyOnResumeProcess(): Promise<boolean>;
|
||||
_everyAfterResumeProcess(): Promise<boolean>;
|
||||
reloadPluginList(showMessage: boolean): Promise<void>;
|
||||
loadPluginData(path: FilePathWithPrefix): Promise<PluginDataExDisplay | false>;
|
||||
pluginScanProcessor: QueueProcessor<AnyEntry, never>;
|
||||
pluginScanProcessorV2: QueueProcessor<AnyEntry, never>;
|
||||
filenameToUnifiedKey(path: string, termOverRide?: string): FilePathWithPrefix;
|
||||
filenameWithUnifiedKey(path: string, termOverRide?: string): FilePathWithPrefix;
|
||||
unifiedKeyPrefixOfTerminal(termOverRide?: string): FilePathWithPrefix;
|
||||
parseUnifiedPath(unifiedPath: FilePathWithPrefix): {
|
||||
category: string;
|
||||
device: string;
|
||||
key: string;
|
||||
filename: string;
|
||||
pathV1: FilePathWithPrefix;
|
||||
};
|
||||
loadedManifest_mTime: Map<string, number>;
|
||||
createPluginDataExFileV2(unifiedPathV2: FilePathWithPrefix, loaded?: LoadedEntry): Promise<false | LoadedEntryPluginDataExFile>;
|
||||
createPluginDataFromV2(unifiedPathV2: FilePathWithPrefix): PluginDataExDisplayV2 | undefined;
|
||||
updatingV2Count: number;
|
||||
updatePluginListV2(showMessage: boolean, unifiedFilenameWithKey: FilePathWithPrefix): Promise<void>;
|
||||
migrateV1ToV2(showMessage: boolean, entry: AnyEntry): Promise<void>;
|
||||
updatePluginList(showMessage: boolean, updatedDocumentPath?: FilePathWithPrefix): Promise<void>;
|
||||
compareUsingDisplayData(dataA: IPluginDataExDisplay, dataB: IPluginDataExDisplay, compareEach?: boolean): Promise<boolean>;
|
||||
applyDataV2(data: PluginDataExDisplayV2, content?: string): Promise<boolean>;
|
||||
applyData(data: IPluginDataExDisplay, content?: string): Promise<boolean>;
|
||||
deleteData(data: PluginDataEx): Promise<boolean>;
|
||||
_anyModuleParsedReplicationResultItem(docs: PouchDB.Core.ExistingDocument<EntryDoc>): Promise<boolean>;
|
||||
_everyRealizeSettingSyncMode(): Promise<boolean>;
|
||||
recentProcessedInternalFiles: string[];
|
||||
makeEntryFromFile(path: FilePath): Promise<false | PluginDataExFile>;
|
||||
storeCustomisationFileV2(path: FilePath, term: string, force?: boolean): Promise<boolean | PouchDB.Core.Response | undefined>;
|
||||
storeCustomizationFiles(path: FilePath, termOverRide?: string): Promise<boolean | PouchDB.Core.Response | undefined>;
|
||||
_anyProcessOptionalFileEvent(path: FilePath): Promise<boolean>;
|
||||
watchVaultRawEventsAsync(path: FilePath): Promise<boolean>;
|
||||
scanAllConfigFiles(showMessage: boolean): Promise<void>;
|
||||
deleteConfigOnDatabase(prefixedFileName: FilePathWithPrefix, forceWrite?: boolean): Promise<boolean>;
|
||||
scanInternalFiles(): Promise<FilePath[]>;
|
||||
private _allAskUsingOptionalSyncFeature;
|
||||
private __askHiddenFileConfiguration;
|
||||
_anyGetOptionalConflictCheckMethod(path: FilePathWithPrefix): Promise<boolean | "newer">;
|
||||
private _allSuspendExtraSync;
|
||||
private _allConfigureOptionalSyncFeature;
|
||||
configureHiddenFileSync(mode: keyof OPTIONAL_SYNC_FEATURES): Promise<void>;
|
||||
getFiles(path: string, lastDepth: number): Promise<string[]>;
|
||||
onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void;
|
||||
}
|
||||
export {};
|
||||
@@ -0,0 +1,11 @@
|
||||
import { mount } from "svelte";
|
||||
import { App, Modal } from "@/deps.ts";
|
||||
import type ObsidianLiveSyncPlugin from "@/main.ts";
|
||||
export declare class PluginDialogModal extends Modal {
|
||||
plugin: ObsidianLiveSyncPlugin;
|
||||
component: ReturnType<typeof mount> | undefined;
|
||||
isOpened(): boolean;
|
||||
constructor(app: App, plugin: ObsidianLiveSyncPlugin);
|
||||
onOpen(): void;
|
||||
onClose(): void;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { App, Modal } from "@/deps.ts";
|
||||
import type { FilePath, LoadedEntry } from "@lib/common/models/db.type";
|
||||
import { mount } from "svelte";
|
||||
export declare class JsonResolveModal extends Modal {
|
||||
filename: FilePath;
|
||||
callback?: (keepRev?: string, mergedStr?: string) => Promise<void>;
|
||||
docs: LoadedEntry[];
|
||||
component?: ReturnType<typeof mount>;
|
||||
nameA: string;
|
||||
nameB: string;
|
||||
defaultSelect: string;
|
||||
keepOrder: boolean;
|
||||
hideLocal: boolean;
|
||||
title: string;
|
||||
constructor(app: App, filename: FilePath, docs: LoadedEntry[], callback: (keepRev?: string, mergedStr?: string) => Promise<void>, nameA?: string, nameB?: string, defaultSelect?: string, keepOrder?: boolean, hideLocal?: boolean, title?: string);
|
||||
UICallback(keepRev?: string, mergedStr?: string): Promise<void>;
|
||||
onOpen(): void;
|
||||
onClose(): void;
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
import type { LoadedEntry, FilePathWithPrefix, FilePath, DocumentID, MetaEntry } from "@lib/common/models/db.type";
|
||||
import type { UXFileInfo, UXStat, UXDataWriteOptions } from "@lib/common/models/fileaccess.type";
|
||||
import { type InternalFileInfo } from "@/common/types.ts";
|
||||
import type { CustomRegExp } from "@lib/common/utils.regexp.ts";
|
||||
import { type MapLike } from "@/common/utils.ts";
|
||||
import { PeriodicProcessor } from "@/common/PeriodicProcessor.ts";
|
||||
import { LiveSyncCommands } from "@/features/LiveSyncCommands.ts";
|
||||
import { QueueProcessor } from "octagonal-wheels/concurrency/processor";
|
||||
import type { LiveSyncCore } from "@/main.ts";
|
||||
type SyncDirection = "push" | "pull" | "safe" | "pullForce" | "pushForce";
|
||||
declare global {
|
||||
interface OPTIONAL_SYNC_FEATURES {
|
||||
FETCH: "FETCH";
|
||||
OVERWRITE: "OVERWRITE";
|
||||
MERGE: "MERGE";
|
||||
DISABLE: "DISABLE";
|
||||
DISABLE_HIDDEN: "DISABLE_HIDDEN";
|
||||
}
|
||||
}
|
||||
export declare class HiddenFileSync extends LiveSyncCommands {
|
||||
isThisModuleEnabled(): boolean;
|
||||
periodicInternalFileScanProcessor: PeriodicProcessor;
|
||||
get kvDB(): import("../../lib/src/interfaces/KeyValueDatabase").KeyValueDatabase;
|
||||
getConflictedDoc(path: FilePathWithPrefix, rev: string): Promise<false | import("../../lib/src/common/types").diff_result_leaf>;
|
||||
onunload(): void;
|
||||
onload(): void;
|
||||
private _everyOnDatabaseInitialized;
|
||||
_everyBeforeReplicate(showNotice: boolean): Promise<boolean>;
|
||||
private _everyOnloadAfterLoadSettings;
|
||||
updateSettingCache(): void;
|
||||
isReady(): boolean;
|
||||
performStartupScan(showNotice: boolean): Promise<void>;
|
||||
_everyOnResumeProcess(): Promise<boolean>;
|
||||
_everyRealizeSettingSyncMode(): Promise<boolean>;
|
||||
_anyProcessOptionalFileEvent(path: FilePath): Promise<boolean>;
|
||||
_anyGetOptionalConflictCheckMethod(path: FilePathWithPrefix): Promise<boolean | "newer">;
|
||||
_anyProcessOptionalSyncFiles(doc: LoadedEntry): Promise<boolean>;
|
||||
loadFileWithInfo(path: FilePath): Promise<UXFileInfo>;
|
||||
_fileInfoLastProcessed: MapLike<string, string>;
|
||||
_fileInfoLastKnown: MapLike<string, number>;
|
||||
_databaseInfoLastProcessed: MapLike<string, string>;
|
||||
statToKey(stat: UXStat | null): string;
|
||||
docToKey(doc: LoadedEntry | MetaEntry): string;
|
||||
fileToStatKey(file: FilePath, stat?: UXStat | null): Promise<string>;
|
||||
updateLastProcessedFile(file: FilePath, keySrc: string | UXStat): void;
|
||||
updateLastProcessedAsActualFile(file: FilePath, stat?: UXStat | null): Promise<void>;
|
||||
resetLastProcessedFile(targetFiles: FilePath[] | false): void;
|
||||
getLastProcessedFileMTime(file: FilePath): number;
|
||||
getLastProcessedFileKey(file: FilePath): string | undefined;
|
||||
getLastProcessedDatabaseKey(file: FilePath): string | undefined;
|
||||
updateLastProcessedDatabase(file: FilePath, keySrc: string | MetaEntry | LoadedEntry): void;
|
||||
updateLastProcessed(path: FilePath, db: MetaEntry | LoadedEntry, stat: UXStat): void;
|
||||
updateLastProcessedDeletion(path: FilePath, db: MetaEntry | LoadedEntry | false): void;
|
||||
ensureDir(path: FilePath): Promise<void>;
|
||||
writeFile(path: FilePath, data: string | ArrayBuffer, opt?: UXDataWriteOptions): Promise<UXStat | null>;
|
||||
__removeFile(path: FilePath): Promise<"OK" | "ALREADY" | false>;
|
||||
triggerEvent(path: FilePath): Promise<void>;
|
||||
updateLastProcessedAsActualDatabase(file: FilePath, doc?: MetaEntry | LoadedEntry | null | false): Promise<void>;
|
||||
resetLastProcessedDatabase(targetFiles: FilePath[] | false): void;
|
||||
adoptCurrentStorageFilesAsProcessed(targetFiles: FilePath[] | false): Promise<void>;
|
||||
adoptCurrentDatabaseFilesAsProcessed(targetFiles: FilePath[] | false): Promise<void>;
|
||||
semaphore: import("octagonal-wheels/concurrency/semaphore_v2").SemaphoreObject;
|
||||
serializedForEvent<T>(file: FilePath, fn: () => Promise<T>): Promise<T>;
|
||||
useStorageFiles(files: FilePath[], showNotice?: boolean, onlyNew?: boolean): Promise<void>;
|
||||
trackScannedStorageChanges(processFiles: FilePath[], showNotice?: boolean, onlyNew?: boolean, forceWriteAll?: boolean, includeDeleted?: boolean): Promise<void>;
|
||||
scanAllStorageChanges(showNotice?: boolean, onlyNew?: boolean, forceWriteAll?: boolean, includeDeleted?: boolean): Promise<void | null>;
|
||||
/**
|
||||
* check the file is changed or not, and if changed, process it.
|
||||
*/
|
||||
trackStorageFileModification(path: FilePath, onlyNew?: boolean, forceWrite?: boolean, includeDeleted?: boolean): Promise<boolean | undefined>;
|
||||
pendingConflictChecks: Set<FilePathWithPrefix>;
|
||||
queueConflictCheck(path: FilePathWithPrefix): void;
|
||||
finishConflictCheck(path: FilePathWithPrefix): void;
|
||||
requeueConflictCheck(path: FilePathWithPrefix): void;
|
||||
resolveConflictOnInternalFiles(): Promise<void>;
|
||||
resolveByNewerEntry(id: DocumentID, path: FilePathWithPrefix, currentDoc: MetaEntry, currentRev: string, conflictedRev: string): Promise<void>;
|
||||
conflictResolutionProcessor: QueueProcessor<FilePathWithPrefix, {
|
||||
path: FilePathWithPrefix;
|
||||
revA: string;
|
||||
revB: string;
|
||||
id: DocumentID;
|
||||
doc: MetaEntry & PouchDB.Core.IdMeta & PouchDB.Core.GetMeta;
|
||||
}>;
|
||||
showJSONMergeDialogAndMerge(docA: LoadedEntry, docB: LoadedEntry): Promise<boolean>;
|
||||
getDocProps(doc: LoadedEntry): {
|
||||
id: DocumentID;
|
||||
rev: string | undefined;
|
||||
revDisplay: string;
|
||||
prefixedPath: FilePathWithPrefix;
|
||||
path: FilePath;
|
||||
isDeleted: boolean;
|
||||
shortenedId: string;
|
||||
shortenedPath: string;
|
||||
};
|
||||
processReplicationResult(doc: LoadedEntry): Promise<boolean>;
|
||||
cacheFileRegExps: Map<string, CustomRegExp[][]>;
|
||||
/**
|
||||
* Parses the regular expression settings for hidden file synchronization.
|
||||
* @returns An object containing the ignore and target filters.
|
||||
*/
|
||||
parseRegExpSettings(): {
|
||||
ignoreFilter: CustomRegExp[];
|
||||
targetFilter: CustomRegExp[];
|
||||
};
|
||||
/**
|
||||
* Checks if the target file path matches the defined patterns.
|
||||
*/
|
||||
isTargetFileInPatterns(path: string): boolean;
|
||||
cacheCustomisationSyncIgnoredFiles: Map<string, string[]>;
|
||||
/**
|
||||
* Gets the list of files ignored for customization synchronization.
|
||||
* @returns An array of ignored file paths (lowercase).
|
||||
*/
|
||||
getCustomisationSynchronizationIgnoredFiles(): string[];
|
||||
/**
|
||||
* Checks if the given path is not ignored by customization synchronization.
|
||||
* @param path The file path to check.
|
||||
* @returns True if the path is not ignored; otherwise, false.
|
||||
*/
|
||||
isNotIgnoredByCustomisationSync(path: string): boolean;
|
||||
isHiddenFileSyncHandlingPath(path: FilePath): boolean;
|
||||
isTargetFile(path: FilePath): Promise<boolean>;
|
||||
trackScannedDatabaseChange(processFiles: MetaEntry[], showNotice?: boolean, onlyNew?: boolean, forceWriteAll?: boolean, includeDeletion?: boolean): Promise<void>;
|
||||
applyOfflineChanges(showNotice: boolean): Promise<void>;
|
||||
scanAllDatabaseChanges(showNotice?: boolean, onlyNew?: boolean, forceWriteAll?: boolean, includeDeletion?: boolean): Promise<void | null>;
|
||||
useDatabaseFiles(files: MetaEntry[], showNotice?: boolean, onlyNew?: boolean): Promise<boolean>;
|
||||
trackDatabaseFileModification(path: FilePath, headerLine: string, preventDoubleProcess?: boolean, onlyNew?: boolean, meta?: MetaEntry | false, includeDeletion?: boolean): Promise<boolean>;
|
||||
queuedNotificationFiles: Set<string>;
|
||||
notifyConfigChange(): void;
|
||||
queueNotification(key: FilePath): void;
|
||||
rebuildMerging(showNotice: boolean, targetFiles?: FilePath[] | false): Promise<FilePath[]>;
|
||||
rebuildFromStorage(showNotice: boolean, targetFiles?: FilePath[] | false, onlyNew?: boolean): Promise<FilePath[]>;
|
||||
getAllDatabaseFiles(): Promise<MetaEntry[]>;
|
||||
rebuildFromDatabase(showNotice: boolean, targetFiles?: FilePath[] | false, onlyNew?: boolean): Promise<MetaEntry[]>;
|
||||
initialiseInternalFileSync(direction: SyncDirection, showMessage: boolean, targetFilesSrc?: string[] | false): Promise<void>;
|
||||
__loadBaseSaveData(file: FilePath, includeContent?: boolean): Promise<LoadedEntry | false>;
|
||||
storeInternalFileToDatabase(file: InternalFileInfo | UXFileInfo, forceWrite?: boolean): Promise<boolean | undefined>;
|
||||
deleteInternalFileOnDatabase(filenameSrc: FilePath, forceWrite?: boolean): Promise<boolean | undefined>;
|
||||
extractInternalFileFromDatabase(storageFilePath: FilePath, force?: boolean, metaEntry?: MetaEntry | LoadedEntry, preventDoubleProcess?: boolean, onlyNew?: boolean, includeDeletion?: boolean): Promise<boolean | undefined>;
|
||||
__checkIsNeedToWriteFile(storageFilePath: FilePath, content: string | ArrayBuffer): Promise<boolean>;
|
||||
__writeFile(storageFilePath: FilePath, fileOnDB: LoadedEntry, force: boolean): Promise<false | UXStat>;
|
||||
__deleteFile(storageFilePath: FilePath): Promise<false | "OK" | "ALREADY">;
|
||||
private _allAskUsingOptionalSyncFeature;
|
||||
private __askHiddenFileConfiguration;
|
||||
private _allSuspendExtraSync;
|
||||
private _allConfigureOptionalSyncFeature;
|
||||
configureHiddenFileSync(mode: keyof OPTIONAL_SYNC_FEATURES): Promise<void>;
|
||||
scanInternalFileNames(): Promise<FilePath[]>;
|
||||
scanInternalFiles(): Promise<InternalFileInfo[]>;
|
||||
getFiles(path: string, checkFunction: (path: FilePath) => Promise<boolean> | boolean): Promise<string[]>;
|
||||
onBindFunction(core: LiveSyncCore, services: typeof core.services): void;
|
||||
}
|
||||
export {};
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
import type { AnyEntry, DocumentID, FilePath, FilePathWithPrefix } from "@lib/common/models/db.type";
|
||||
import type { LOG_LEVEL } from "@lib/common/logger";
|
||||
import type ObsidianLiveSyncPlugin from "@/main.ts";
|
||||
import type { LiveSyncCore } from "@/main.ts";
|
||||
import { createInstanceLogFunction } from "@lib/services/lib/logUtils.ts";
|
||||
export declare abstract class LiveSyncCommands {
|
||||
/**
|
||||
* @deprecated This class is deprecated. Please use core
|
||||
*/
|
||||
plugin: ObsidianLiveSyncPlugin;
|
||||
core: LiveSyncCore;
|
||||
get app(): import("obsidian").App;
|
||||
get settings(): import("../lib/src/common/types").ObsidianLiveSyncSettings;
|
||||
get localDatabase(): import("../lib/src/pouchdb/LiveSyncLocalDB").LiveSyncLocalDB;
|
||||
get services(): import("../lib/src/services/InjectableServices").InjectableServiceHub<import("../lib/src/services/implements/obsidian/ObsidianServiceContext").ObsidianServiceContext>;
|
||||
path2id(filename: FilePathWithPrefix | FilePath, prefix?: string): Promise<DocumentID>;
|
||||
getPath(entry: AnyEntry): FilePathWithPrefix;
|
||||
constructor(plugin: ObsidianLiveSyncPlugin, core: LiveSyncCore);
|
||||
abstract onunload(): void;
|
||||
abstract onload(): void | Promise<void>;
|
||||
_isMainReady(): boolean;
|
||||
_isMainSuspended(): boolean;
|
||||
_isDatabaseReady(): boolean;
|
||||
_log: ReturnType<typeof createInstanceLogFunction>;
|
||||
_verbose: (msg: unknown, key?: string) => void;
|
||||
_info: (msg: unknown, key?: string) => void;
|
||||
_notice: (msg: unknown, key?: string) => void;
|
||||
_progress: (prefix?: string, level?: LOG_LEVEL) => {
|
||||
log: (msg: unknown) => void;
|
||||
once: (msg: unknown) => void;
|
||||
done: (msg?: string) => void;
|
||||
};
|
||||
_debug: (msg: unknown, key?: string) => void;
|
||||
onBindFunction(core: LiveSyncCore, services: typeof core.services): void;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
import type { DocumentID, EntryLeaf } from "@lib/common/models/db.type";
|
||||
import type { EntryDoc } from "@lib/common/models/db.definition";
|
||||
import { LiveSyncCommands } from "@/features/LiveSyncCommands";
|
||||
type ChunkID = DocumentID;
|
||||
type NoteDocumentID = DocumentID;
|
||||
type Rev = string;
|
||||
type ChunkUsageMap = Map<NoteDocumentID, Map<Rev, Set<ChunkID>>>;
|
||||
export declare class LocalDatabaseMaintenance extends LiveSyncCommands {
|
||||
onunload(): void;
|
||||
onload(): void | Promise<void>;
|
||||
allChunks(includeDeleted?: boolean): Promise<{
|
||||
used: Set<string>;
|
||||
existing: Map<string, EntryLeaf>;
|
||||
}>;
|
||||
get database(): PouchDB.Database<EntryDoc>;
|
||||
clearHash(): void;
|
||||
confirm(title: string, message: string, affirmative?: string, negative?: string): Promise<boolean>;
|
||||
isAvailable(): boolean;
|
||||
/**
|
||||
* Resurrect deleted chunks that are still used in the database.
|
||||
*/
|
||||
resurrectChunks(): Promise<void>;
|
||||
/**
|
||||
* Commit deletion of files that are marked as deleted.
|
||||
* This method makes the deletion permanent, and the files will not be recovered.
|
||||
* After this, chunks that are used in the deleted files become ready for compaction.
|
||||
*/
|
||||
commitFileDeletion(): Promise<void>;
|
||||
/**
|
||||
* Commit deletion of chunks that are not used in the database.
|
||||
* This method makes the deletion permanent, and the chunks will not be recovered if the database run compaction.
|
||||
* After this, the database can shrink the database size by compaction.
|
||||
* It is recommended to compact the database after this operation (History should be kept once before compaction).
|
||||
*/
|
||||
commitChunkDeletion(): Promise<void>;
|
||||
/**
|
||||
* Compact the database.
|
||||
* This method removes all deleted chunks that are not used in the database.
|
||||
* Make sure all devices are synchronized before running this method.
|
||||
*/
|
||||
markUnusedChunks(): Promise<void>;
|
||||
removeUnusedChunks(): Promise<void>;
|
||||
scanUnusedChunks(): Promise<{
|
||||
chunkSet: Set<DocumentID>;
|
||||
chunkUsageMap: ChunkUsageMap;
|
||||
unusedSet: Set<DocumentID>;
|
||||
}>;
|
||||
/**
|
||||
* Track changes in the database and update the chunk usage map for garbage collection.
|
||||
* Note that this only able to perform without Fetch chunks on demand.
|
||||
*/
|
||||
trackChanges(fromStart?: boolean, showNotice?: boolean): Promise<void>;
|
||||
performGC(showingNotice?: boolean): Promise<void>;
|
||||
analyseDatabase(): Promise<void>;
|
||||
compactDatabase(): Promise<void>;
|
||||
gcv3(): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
@@ -0,0 +1,21 @@
|
||||
import { App, Modal } from "@/deps.ts";
|
||||
import { mount } from "svelte";
|
||||
import type { LiveSyncTrysteroReplicator } from "@lib/replication/trystero/LiveSyncTrysteroReplicator";
|
||||
export type P2POpenReplicationModalCallback = {
|
||||
onSync: (peerId: string) => Promise<void>;
|
||||
onSyncAndClose: (peerId: string) => Promise<void>;
|
||||
};
|
||||
export declare class P2POpenReplicationModal extends Modal {
|
||||
liveSyncReplicator: LiveSyncTrysteroReplicator;
|
||||
callback?: P2POpenReplicationModalCallback;
|
||||
component?: ReturnType<typeof mount>;
|
||||
showResult: boolean;
|
||||
title: string;
|
||||
onClosed?: () => void;
|
||||
rebuildMode: boolean;
|
||||
constructor(app: App, liveSyncReplicator: LiveSyncTrysteroReplicator, callback?: P2POpenReplicationModalCallback, showResult?: boolean, title?: string, onClosed?: () => void, rebuildMode?: boolean);
|
||||
onSync(peerId: string): Promise<void>;
|
||||
onSyncAndClose(peerId: string): Promise<void>;
|
||||
onOpen(): void;
|
||||
onClose(): void;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import { App } from "@/deps.ts";
|
||||
import type { LiveSyncTrysteroReplicator } from "@lib/replication/trystero/LiveSyncTrysteroReplicator";
|
||||
/**
|
||||
* Creates an openReplicationUI factory for Obsidian environments.
|
||||
* Returns a per-replicator closure that opens the P2P Replication modal
|
||||
* and performs bidirectional sync (pull then push on success).
|
||||
*
|
||||
* Usage:
|
||||
* const factory = createOpenReplicationUI(app);
|
||||
* useP2PReplicatorFeature(core, factory);
|
||||
*/
|
||||
export declare function createOpenReplicationUI(app: App): (replicator: LiveSyncTrysteroReplicator) => (showResult: boolean) => Promise<boolean | void>;
|
||||
/**
|
||||
* Creates an openRebuildUI factory for Obsidian environments.
|
||||
* Opens the P2P Replication modal in "rebuild" mode — one-way pull only,
|
||||
* with setOnSetup / clearOnSetup bracketing the replicateFrom call.
|
||||
*
|
||||
* Usage:
|
||||
* const factory = createOpenRebuildUI(app);
|
||||
* useP2PReplicatorFeature(core, createOpenReplicationUI(app), factory);
|
||||
*/
|
||||
export declare function createOpenRebuildUI(app: App): (replicator: LiveSyncTrysteroReplicator) => (showResult: boolean) => Promise<boolean | void>;
|
||||
@@ -0,0 +1,28 @@
|
||||
import { Menu, WorkspaceLeaf } from "@/deps.ts";
|
||||
import { SvelteItemView } from "@/common/SvelteItemView.ts";
|
||||
import { type PeerStatus } from "@lib/replication/trystero/P2PReplicatorPaneCommon.ts";
|
||||
import type { LiveSyncBaseCore } from "@/LiveSyncBaseCore.ts";
|
||||
import type { P2PPaneParams } from "@lib/replication/trystero/UseP2PReplicatorResult";
|
||||
export declare const VIEW_TYPE_P2P = "p2p-replicator";
|
||||
export declare class P2PReplicatorPaneView extends SvelteItemView {
|
||||
core: LiveSyncBaseCore;
|
||||
private _p2pResult;
|
||||
icon: string;
|
||||
title: string;
|
||||
navigation: boolean;
|
||||
getIcon(): string;
|
||||
get replicator(): import("../../../lib/src/replication/trystero/LiveSyncTrysteroReplicator").LiveSyncTrysteroReplicator;
|
||||
replicateFrom(peer: PeerStatus): Promise<void>;
|
||||
replicateTo(peer: PeerStatus): Promise<void>;
|
||||
getRemoteConfig(peer: PeerStatus): Promise<void>;
|
||||
toggleProp(peer: PeerStatus, prop: "syncOnConnect" | "watchOnConnect" | "syncOnReplicationCommand"): Promise<void>;
|
||||
m?: Menu;
|
||||
constructor(leaf: WorkspaceLeaf, core: LiveSyncBaseCore, p2pResult: P2PPaneParams);
|
||||
getViewType(): string;
|
||||
getDisplayText(): string;
|
||||
onClose(): Promise<void>;
|
||||
instantiateComponent(target: HTMLElement): {
|
||||
$on?(type: string, callback: (e: any) => void): () => void;
|
||||
$set?(props: Partial<Record<string, any>>): void;
|
||||
} & Record<string, any>;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { WorkspaceLeaf } from "@/deps.ts";
|
||||
import { SvelteItemView } from "@/common/SvelteItemView.ts";
|
||||
import type { LiveSyncBaseCore } from "@/LiveSyncBaseCore.ts";
|
||||
import type { P2PPaneParams } from "@lib/replication/trystero/UseP2PReplicatorResult";
|
||||
export declare const VIEW_TYPE_P2P_SERVER_STATUS = "p2p-server-status";
|
||||
export declare class P2PServerStatusPaneView extends SvelteItemView {
|
||||
core: LiveSyncBaseCore;
|
||||
private _p2pResult;
|
||||
icon: string;
|
||||
navigation: boolean;
|
||||
constructor(leaf: WorkspaceLeaf, core: LiveSyncBaseCore, p2pResult: P2PPaneParams);
|
||||
getIcon(): string;
|
||||
getViewType(): string;
|
||||
getDisplayText(): string;
|
||||
instantiateComponent(target: HTMLElement): {
|
||||
$on?(type: string, callback: (e: any) => void): () => void;
|
||||
$set?(props: Partial<Record<string, any>>): void;
|
||||
} & Record<string, any>;
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
@@ -0,0 +1 @@
|
||||
export {};
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export declare function objectToDotted(obj: any, prefix?: string): Record<string, any>;
|
||||
export declare function dottedToObject(obj: Record<string, any>): Record<string, any>;
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
@@ -0,0 +1,2 @@
|
||||
export { DirectFileManipulator } from "./DirectFileManipulatorV2.ts";
|
||||
export type { DirectFileManipulatorOptions } from "./DirectFileManipulatorV2.ts";
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
import type { ObsidianLiveSyncSettings } from "@lib/common/models/setting.type";
|
||||
/**
|
||||
* Encode settings to a tiny array to encode in QRCode,
|
||||
* Due to size limitation of QR code, we encode settings as an array instead of object.
|
||||
* @param settings settings to encode
|
||||
*/
|
||||
export declare function encodeSettingsToQRCodeData(settings: ObsidianLiveSyncSettings): string;
|
||||
/**
|
||||
* Decode settings from QR code data string
|
||||
* @param qr data string from QR code
|
||||
* @returns Decoded settings
|
||||
*/
|
||||
export declare function decodeSettingsFromQRCodeData(qr: string): ObsidianLiveSyncSettings;
|
||||
export declare const enum OutputFormat {
|
||||
SVG = 0,
|
||||
ASCII = 1
|
||||
}
|
||||
export interface SplitQRCodeData {
|
||||
total: number;
|
||||
parts: string[];
|
||||
}
|
||||
/**
|
||||
* Encode setting string to QR code in specified format
|
||||
* @param settingString Setting string to encode
|
||||
* @param format Output format
|
||||
*/
|
||||
export declare function encodeQR(settingString: string, format: OutputFormat): string | SplitQRCodeData;
|
||||
type ErasureProperties = keyof ObsidianLiveSyncSettings;
|
||||
/**
|
||||
* Generate setup URI with encrypted settings
|
||||
* @param settingString Settings to encode
|
||||
* @param passphrase Passphrase to encrypt the settings
|
||||
* @param removeProperties Properties to remove from the settings
|
||||
* Means these properties will not be included in the generated setup URI,
|
||||
* See also necessaryErasureProperties for properties that will always be removed.
|
||||
* @param skipDefaultValue Whether to skip default values
|
||||
* @returns Generated setup URI
|
||||
*/
|
||||
export declare function encodeSettingsToSetupURI(settingString: ObsidianLiveSyncSettings, passphrase: string, removeProperties?: ErasureProperties[], skipDefaultValue?: boolean): Promise<string>;
|
||||
export declare function decodeSettingsFromSetupURI(uri: string, passphrase: string): Promise<false | ObsidianLiveSyncSettings>;
|
||||
export {};
|
||||
@@ -0,0 +1,24 @@
|
||||
import type { FilePathWithPrefix } from "@lib/common/models/db.type";
|
||||
import type { ISettingService } from "@lib/services/base/IService.ts";
|
||||
/**
|
||||
* ContentSplitter interface for splitting content into chunks.
|
||||
*/
|
||||
export type SplitOptions = {
|
||||
blob: Blob;
|
||||
path: FilePathWithPrefix;
|
||||
pieceSize: number;
|
||||
plainSplit: boolean;
|
||||
minimumChunkSize: number;
|
||||
useWorker: boolean;
|
||||
useSegmenter: boolean;
|
||||
};
|
||||
/**
|
||||
* The maximum size, in bytes, of a document to be processed by the content splitter in the foreground.
|
||||
*/
|
||||
export declare const MAX_CHUNKS_SIZE_ON_UI = 1024;
|
||||
/**
|
||||
* Options for the content splitter.
|
||||
*/
|
||||
export type ContentSplitterOptions = {
|
||||
settingService: ISettingService;
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
import type { SavingEntry } from "@lib/common/models/db.type";
|
||||
import { type ContentSplitterOptions, type SplitOptions } from "./ContentSplitter.ts";
|
||||
export declare abstract class ContentSplitterCore {
|
||||
/**
|
||||
* Options for the content splitter.
|
||||
* These settings include the chunk splitter version and other configurations.
|
||||
*/
|
||||
options: ContentSplitterOptions;
|
||||
/**
|
||||
* Task for initialising the content splitter.
|
||||
* This ensures that the splitter is initialised before any operations are performed.
|
||||
*/
|
||||
initialised: Promise<boolean> | undefined;
|
||||
/**
|
||||
* Constructor for the content splitter core.
|
||||
* @param params Content splitter options
|
||||
*/
|
||||
constructor(params: ContentSplitterOptions);
|
||||
/**
|
||||
* Initialise the content splitter with the provided options.
|
||||
* @param options Content splitter options
|
||||
*/
|
||||
abstract initialise(options: ContentSplitterOptions): Promise<boolean>;
|
||||
/**
|
||||
* Split the content of the loaded entry into chunks.
|
||||
* @param entry The loaded entry to be split into chunks
|
||||
*/
|
||||
abstract splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
export declare abstract class ContentSplitterBase extends ContentSplitterCore {
|
||||
initialise(_options: ContentSplitterOptions): Promise<boolean>;
|
||||
/**
|
||||
* Check whether the content splitter is available for the given settings.
|
||||
* @param setting Content splitter options
|
||||
* @returns True if the content splitter is available; false otherwise
|
||||
*/
|
||||
static isAvailableFor(setting: ContentSplitterOptions): boolean;
|
||||
/**
|
||||
* Process the content and split it into chunks.
|
||||
* @param options Blob content to be split into chunks
|
||||
*/
|
||||
abstract processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
getParamsFor(entry: SavingEntry): SplitOptions;
|
||||
/**
|
||||
* Split the content of the loaded entry into chunks.
|
||||
* This method waits for the initialisation task to complete before proceeding.
|
||||
* @param entry The loaded entry to be split into chunks
|
||||
* @returns A generator that yields the split chunks
|
||||
*/
|
||||
splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter.ts";
|
||||
import { ContentSplitterBase } from "./ContentSplitterBase.ts";
|
||||
/**
|
||||
* Rabin-Karp content splitter for efficient chunking
|
||||
*/
|
||||
export declare class ContentSplitterRabinKarp extends ContentSplitterBase {
|
||||
static isAvailableFor(setting: ContentSplitterOptions): boolean;
|
||||
processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter";
|
||||
import { ContentSplitterBase } from "./ContentSplitterBase";
|
||||
/**
|
||||
* Legacy content splitter for version 1.
|
||||
*/
|
||||
export declare class ContentSplitterV1 extends ContentSplitterBase {
|
||||
static isAvailableFor(setting: ContentSplitterOptions): boolean;
|
||||
processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter.ts";
|
||||
import { ContentSplitterBase } from "./ContentSplitterBase.ts";
|
||||
/**
|
||||
* Content splitter for version 2, which supports segmenter-based splitting.
|
||||
*/
|
||||
export declare class ContentSplitterV2 extends ContentSplitterBase {
|
||||
static isAvailableFor(setting: ContentSplitterOptions): boolean;
|
||||
processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import type { SavingEntry } from "@lib/common/models/db.type";
|
||||
import type { ContentSplitterOptions } from "./ContentSplitter";
|
||||
import { ContentSplitterCore, type ContentSplitterBase } from "./ContentSplitterBase";
|
||||
/**
|
||||
* ContentSplitter class that manages the active content splitter based on the provided settings.
|
||||
*/
|
||||
export declare class ContentSplitter extends ContentSplitterCore {
|
||||
_activeSplitter: ContentSplitterBase;
|
||||
constructor(options: ContentSplitterOptions);
|
||||
initialise(options: ContentSplitterOptions): Promise<boolean>;
|
||||
splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
|
||||
}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export type { HasSetResult, HasGetInitialData, ComponentHasResult, GuestDialogProps, DialogSvelteComponentBaseProps, DialogControlBase, } from "@lib/services/implements/base/SvelteDialog.ts";
|
||||
export { CONTEXT_DIALOG_CONTROLS, setupDialogContext, getDialogContext, SvelteDialogManagerBase, } from "@lib/services/implements/base/SvelteDialog.ts";
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
import { type SlipBoard } from "octagonal-wheels/bureau/SlipBoard";
|
||||
declare global {
|
||||
interface Slips extends LSSlips {
|
||||
_dummy: undefined;
|
||||
}
|
||||
}
|
||||
export declare const globalSlipBoard: SlipBoard<Slips>;
|
||||
+1
@@ -0,0 +1 @@
|
||||
export {};
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
import type { CouchDBConnection, BucketSyncSetting, P2PConnectionInfo } from "./models/setting.type";
|
||||
export type RemoteConfigurationResult = {
|
||||
type: "couchdb";
|
||||
settings: CouchDBConnection;
|
||||
} | {
|
||||
type: "s3";
|
||||
settings: BucketSyncSetting;
|
||||
} | {
|
||||
type: "p2p";
|
||||
settings: P2PConnectionInfo;
|
||||
} | {
|
||||
type: "webdav";
|
||||
settings: any;
|
||||
};
|
||||
export declare class ConnectionStringParser {
|
||||
/**
|
||||
* Restore settings from URI
|
||||
*/
|
||||
static parse(uriString: string): RemoteConfigurationResult;
|
||||
/**
|
||||
* 設定からURIを生成する
|
||||
*/
|
||||
static serialize(config: RemoteConfigurationResult): string;
|
||||
private static parseCouchDB;
|
||||
private static serializeCouchDB;
|
||||
private static parseS3;
|
||||
private static serializeS3;
|
||||
private static parseP2P;
|
||||
private static serializeP2P;
|
||||
}
|
||||
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
interface ErrorWithCause extends Error {
|
||||
cause?: unknown;
|
||||
}
|
||||
/**
|
||||
* Error class for Self-hosted LiveSync errors.
|
||||
* This class extends the base LiveSyncError class and provides additional context for errors related to LiveSync operations.
|
||||
* It includes a name property and a cause property to capture the original error.
|
||||
* The status property returns the HTTP status code if available, defaulting to 500 for internal server errors.
|
||||
* The class also includes static methods to check whether an error is caused by a specific error class.
|
||||
*/
|
||||
export declare class LiveSyncError extends Error implements ErrorWithCause {
|
||||
name: string;
|
||||
cause?: Error | object | string;
|
||||
overrideStatus?: number;
|
||||
/**
|
||||
* Returns the HTTP status code associated with the error, if available.
|
||||
* If the error has a status property, it returns that; otherwise, it defaults to 500 (Internal Server Error).
|
||||
* @returns {number} The HTTP status code.
|
||||
*/
|
||||
get status(): number;
|
||||
/**
|
||||
* Constructs a new LiveSyncError instance.
|
||||
* @param message The error message to be displayed.
|
||||
*/
|
||||
constructor(message: string, options?: {
|
||||
cause?: unknown;
|
||||
status?: number;
|
||||
});
|
||||
/**
|
||||
* Determines whether an error is caused by a specific error class.
|
||||
* @param error The error to examine.
|
||||
* @param errorClass The error class to compare against.
|
||||
* @returns True if the error is caused by the specified error class; otherwise, false.
|
||||
* @example
|
||||
* LiveSyncError.isCausedBy(someSyncParamsFetchError, SyncParamsNotFoundError); // Returns true if the error is caused by SyncParamsNotFoundError; this is usually represented as SyncParamsFetchError at the uppermost layer.
|
||||
*/
|
||||
static isCausedBy<T extends LiveSyncError>(error: unknown, errorClass: new (...args: any[]) => T): boolean;
|
||||
/**
|
||||
* Creates a new instance of the error class from an existing error.
|
||||
* @param error The error to wrap.
|
||||
* @returns A new instance of the error class with the original error's message and stack trace.
|
||||
*/
|
||||
static fromError<T extends typeof LiveSyncError>(this: T, error: unknown): InstanceType<T>;
|
||||
}
|
||||
export declare class LiveSyncFatalError extends LiveSyncError {
|
||||
}
|
||||
export {};
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
import type { Confirm } from "@lib/interfaces/Confirm";
|
||||
import type { ObsidianLiveSyncSettings } from "@lib/common/models/setting.type";
|
||||
declare enum ConditionType {
|
||||
PLATFORM_CASE_INSENSITIVE = "platform-case-insensitive",
|
||||
PLATFORM_CASE_SENSITIVE = "platform-case-sensitive",
|
||||
REMOTE_CASE_SENSITIVE = "remote-case-sensitive"
|
||||
}
|
||||
export declare enum RuleLevel {
|
||||
Must = 0,
|
||||
Necessary = 1,
|
||||
Recommended = 2,
|
||||
Optional = 3
|
||||
}
|
||||
type BaseRule<TType extends string, TValue> = {
|
||||
level?: RuleLevel;
|
||||
requireRebuild?: boolean;
|
||||
requireRebuildLocal?: boolean;
|
||||
recommendRebuild?: boolean;
|
||||
reason?: string;
|
||||
reasonFunc?: (settings: Partial<ObsidianLiveSyncSettings>) => string;
|
||||
condition?: ConditionType[];
|
||||
detectionFunc?: (settings: Partial<ObsidianLiveSyncSettings>) => boolean;
|
||||
value?: TValue;
|
||||
valueDisplay?: string;
|
||||
valueDisplayFunc?: (settings: Partial<ObsidianLiveSyncSettings>) => string;
|
||||
obsoleteValues?: TValue[];
|
||||
};
|
||||
type NumberRuleExact = BaseRule<"number", number> & {};
|
||||
type NumberRuleRange = BaseRule<"number", number> & {
|
||||
min?: number;
|
||||
max?: number;
|
||||
step?: number;
|
||||
};
|
||||
type StringRangeRule = BaseRule<"string", string> & {
|
||||
minLength?: number;
|
||||
maxLength?: number;
|
||||
regexp?: string;
|
||||
};
|
||||
type StringRule = BaseRule<"string", string> & {};
|
||||
type BooleanRule = BaseRule<"boolean", boolean> & {};
|
||||
export type RuleForType<T> = T extends number ? NumberRuleExact | NumberRuleRange : T extends string ? StringRule | StringRangeRule : T extends boolean ? BooleanRule : never;
|
||||
export type AnyRule = NumberRuleExact | NumberRuleRange | StringRule | StringRangeRule | BooleanRule;
|
||||
type DoctorCheckSettings = Omit<Partial<ObsidianLiveSyncSettings>, "remoteConfigurations" | "pluginSyncExtendedSetting">;
|
||||
export type DoctorRegulation = {
|
||||
version: string;
|
||||
rules: {
|
||||
[P in keyof DoctorCheckSettings]: RuleForType<DoctorCheckSettings[P]>;
|
||||
};
|
||||
};
|
||||
export declare const DoctorRegulationV0_24_16: DoctorRegulation;
|
||||
export declare const DoctorRegulationV0_24_30: DoctorRegulation;
|
||||
export declare const DoctorRegulationV0_25_0: DoctorRegulation;
|
||||
export declare const DoctorRegulationV0_25_27: DoctorRegulation;
|
||||
export declare const DoctorRegulation: DoctorRegulation;
|
||||
export declare function checkUnsuitableValues(setting: Partial<ObsidianLiveSyncSettings>, regulation?: DoctorRegulation): DoctorRegulation;
|
||||
export declare const RebuildOptions: {
|
||||
readonly AutomaticAcceptable: 0;
|
||||
readonly ConfirmIfRequired: 1;
|
||||
readonly SkipEvenIfRequired: 2;
|
||||
};
|
||||
export type RebuildOptionsType = (typeof RebuildOptions)[keyof typeof RebuildOptions];
|
||||
export type DoctorOptions = {
|
||||
localRebuild: RebuildOptionsType;
|
||||
remoteRebuild: RebuildOptionsType;
|
||||
activateReason?: string;
|
||||
forceRescan?: boolean;
|
||||
};
|
||||
export type DoctorResult = {
|
||||
settings: ObsidianLiveSyncSettings;
|
||||
shouldRebuild: boolean;
|
||||
shouldRebuildLocal: boolean;
|
||||
isModified: boolean;
|
||||
};
|
||||
export type HasConfirm = {
|
||||
confirm: Confirm;
|
||||
};
|
||||
export declare function performDoctorConsultation(env: HasConfirm, settings: ObsidianLiveSyncSettings, { localRebuild, remoteRebuild, activateReason, forceRescan, }: DoctorOptions): Promise<DoctorResult>;
|
||||
export {};
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
declare class Context<T extends Record<string | number | symbol, any> = object> {
|
||||
_data: Partial<T>;
|
||||
children: WeakRef<Context<T>>[];
|
||||
parent?: Context<T>;
|
||||
constructor(base?: Context<T>, data?: Partial<T>);
|
||||
set<V extends keyof T>(key: V, value: T[V]): void;
|
||||
get<V extends keyof T>(key: V): T[V] | undefined;
|
||||
setInGlobalContext<V extends keyof T>(key: V, value: T[V]): void;
|
||||
setInNearestContext<V extends keyof T>(key: V, value: T[V]): void;
|
||||
spawnContext<V extends Record<string, any>>(data?: V): Context<V & T>;
|
||||
_disposeChild(child: Context<any>): void;
|
||||
dispose(): void;
|
||||
}
|
||||
export declare function getContext<T extends U, U extends Record<string, any> = object>(data?: T): Context<T & object>;
|
||||
export declare function getIndependentContext<T extends U, U extends Record<string, any> = object>(data?: T): Context<T>;
|
||||
export {};
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
import type { getLanguage as ObsidianGetLanguage } from "obsidian";
|
||||
export declare function setGetLanguage(func: typeof ObsidianGetLanguage): void;
|
||||
export declare function getLanguage(): string;
|
||||
export declare const compatGlobal: typeof window;
|
||||
export type CompatTimeoutHandle = ReturnType<typeof setTimeout> | number;
|
||||
export type CompatIntervalHandle = ReturnType<typeof setInterval> | number;
|
||||
/**
|
||||
* A wrapper around the global fetch function to ensure compatibility across different environments.
|
||||
* In Obsidian, they recommend using their own requestUrl for better performance and reliability.
|
||||
* However, at least for now, requestUrl cannot handle multiple concurrent requests, which causes
|
||||
* problems for synchronise lively. So we will use the global fetch for now.
|
||||
* If the situation changes in the future, change this function to use requestUrl.
|
||||
* @param {RequestInfo} input The resource that you wish to fetch. Can be either a string or a Request object.
|
||||
* @param {RequestInit} [init] An options object containing any custom settings that you want to apply to the request.
|
||||
* @returns {Promise<Response>} A Promise that resolves to the Response to that request, whether it is successful or not.
|
||||
*/
|
||||
export declare const _fetch: {
|
||||
(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
||||
(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
||||
} & typeof fetch;
|
||||
export declare const _activeDocument: Document;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
declare const manifestVersion: string;
|
||||
declare const packageVersion: string;
|
||||
export { manifestVersion, packageVersion };
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
import type { AllMessageKeys, I18N_LANGS } from "./rosetta";
|
||||
import type { TaggedType } from "@lib/common/models/shared.type.util";
|
||||
export declare let currentLang: I18N_LANGS;
|
||||
export declare function getResolvedLang(lang?: I18N_LANGS): I18N_LANGS;
|
||||
export declare function isAutoDisplayLanguage(lang: I18N_LANGS): boolean;
|
||||
export declare function __getMissingTranslations(): string[];
|
||||
export declare function __onMissingTranslation(callback: (key: string) => void): void;
|
||||
export declare function setLang(lang: I18N_LANGS): void;
|
||||
export declare function $t(message: string, lang?: I18N_LANGS): string;
|
||||
export declare function translateIfAvailable(message: string, lang?: I18N_LANGS): string;
|
||||
/**
|
||||
* TagFunction to Automatically translate.
|
||||
* @param strings
|
||||
* @param values
|
||||
* @returns
|
||||
*/
|
||||
export declare function $f(strings: TemplateStringsArray, ...values: string[]): string;
|
||||
export declare function $msg<T extends AllMessageKeys>(key: T, params?: Record<string, string>, lang?: I18N_LANGS): TaggedType<string, T>;
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export * from "octagonal-wheels/common/logger";
|
||||
export type * from "octagonal-wheels/common/logger";
|
||||
@@ -0,0 +1,7 @@
|
||||
import { PartialMessages as def } from "./def.ts";
|
||||
import { type MESSAGE } from "@lib/common/rosetta.ts";
|
||||
type MessageKeys = keyof typeof def.def;
|
||||
export declare const allMessages: {
|
||||
[key: string]: MESSAGE;
|
||||
};
|
||||
export { type MessageKeys };
|
||||
File diff suppressed because it is too large
Load Diff
+297
@@ -0,0 +1,297 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly de: {
|
||||
"(Active)": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
Activate: string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
Cancel: string;
|
||||
"Cancel Garbage Collection": string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Compaction in progress on remote database...": string;
|
||||
"Compaction on remote database completed successfully.": string;
|
||||
"Compaction on remote database failed.": string;
|
||||
"Compaction on remote database timed out.": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Database Adapter": string;
|
||||
Default: string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
desktop: string;
|
||||
Device: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Display name": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
"Failed to connect to remote for compaction.": string;
|
||||
"Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Failed to start replication after Garbage Collection.": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection cancelled by user.": string;
|
||||
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Garbage Collection Confirmation": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Hidden Files": string;
|
||||
"Hide completely": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"Ignore and Proceed": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"More actions": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Node ID": string;
|
||||
"Node Information Missing": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Obsidian version": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set this device name": string;
|
||||
"Plug-in version": string;
|
||||
"Proceed Garbage Collection": string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Proceeding with Garbage Collection.": string;
|
||||
Progress: string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
Rename: string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram!": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setup URI dialog cancelled.": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Show full banner": string;
|
||||
"Show icon only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+1119
File diff suppressed because it is too large
Load Diff
+689
@@ -0,0 +1,689 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly es: {
|
||||
"(Active)": string;
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
"Access Key": string;
|
||||
Activate: string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Ask a passphrase at every launch": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Cancel: string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
"Compute revisions for chunks (Previous behaviour)": string;
|
||||
"Configuration Encryption": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"CouchDB Connection Tweak": string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Data Compression": string;
|
||||
"Database Adapter": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
Default: string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
desktop: string;
|
||||
Developer: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Display name": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
Fetch: string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
Filename: string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"Hidden Files": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore files": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
"Interval (sec)": string;
|
||||
"Keep empty folder": string;
|
||||
"lang-de": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-ja": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"Local Database Tweak": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
Merge: string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"More actions": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
Open: string;
|
||||
"Open the dialog": string;
|
||||
Overwrite: string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Path Obfuscation": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": string;
|
||||
"Please set this device name": string;
|
||||
Presets: string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Process small files in the foreground": string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
Rename: string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram!": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setup.> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"Setup.All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
"Setup.Cancel Garbage Collection": string;
|
||||
"Setup.Compaction in progress on remote database...": string;
|
||||
"Setup.Compaction on remote database completed successfully.": string;
|
||||
"Setup.Compaction on remote database failed.": string;
|
||||
"Setup.Compaction on remote database timed out.": string;
|
||||
"Setup.Device": string;
|
||||
"Setup.Failed to connect to remote for compaction.": string;
|
||||
"Setup.Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Setup.Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Setup.Failed to start replication after Garbage Collection.": string;
|
||||
"Setup.Garbage Collection cancelled by user.": string;
|
||||
"Setup.Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Setup.Garbage Collection Confirmation": string;
|
||||
"Setup.Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Setup.Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Setup.Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Setup.Ignore and Proceed": string;
|
||||
"Setup.No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"Setup.Node ID": string;
|
||||
"Setup.Node Information Missing": string;
|
||||
"Setup.Obsidian version": string;
|
||||
"Setup.optionNoSetupUri": string;
|
||||
"Setup.optionRemindNextLaunch": string;
|
||||
"Setup.optionSetupWizard": string;
|
||||
"Setup.optionYesFetchAgain": string;
|
||||
"Setup.Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Setup.Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Setup.Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Setup.Plug-in version": string;
|
||||
"Setup.Proceed Garbage Collection": string;
|
||||
"Setup.Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Setup.Proceeding with Garbage Collection.": string;
|
||||
"Setup.Progress": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.Setup URI dialog cancelled.": string;
|
||||
"Setup.Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Setup.The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"Setup.titleCaseSensitivity": string;
|
||||
"Setup.titleRecommendSetupUri": string;
|
||||
"Setup.titleWelcome": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show full banner": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Transfer Tweak": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use a custom passphrase": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+582
@@ -0,0 +1,582 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly fr: {
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"Access Key": string;
|
||||
"Active Remote Configuration": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
Analyse: string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Check: string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compute revisions for chunks": string;
|
||||
"Copy Report to clipboard": string;
|
||||
"Data Compression": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Device name": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Doctor.Button.DismissThisVersion": string;
|
||||
"Doctor.Button.Fix": string;
|
||||
"Doctor.Button.FixButNoRebuild": string;
|
||||
"Doctor.Button.No": string;
|
||||
"Doctor.Button.Skip": string;
|
||||
"Doctor.Button.Yes": string;
|
||||
"Doctor.Dialogue.Main": string;
|
||||
"Doctor.Dialogue.MainFix": string;
|
||||
"Doctor.Dialogue.Title": string;
|
||||
"Doctor.Dialogue.TitleAlmostDone": string;
|
||||
"Doctor.Dialogue.TitleFix": string;
|
||||
"Doctor.Level.Must": string;
|
||||
"Doctor.Level.Necessary": string;
|
||||
"Doctor.Level.Optional": string;
|
||||
"Doctor.Level.Recommended": string;
|
||||
"Doctor.Message.NoIssues": string;
|
||||
"Doctor.Message.RebuildLocalRequired": string;
|
||||
"Doctor.Message.RebuildRequired": string;
|
||||
"Doctor.Message.SomeSkipped": string;
|
||||
"Doctor.RULES.E2EE_V02500.REASON": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
Filename: string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore files": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Interval (sec)": string;
|
||||
"K.exp": string;
|
||||
"K.long_p2p_sync": string;
|
||||
"K.P2P": string;
|
||||
"K.Peer": string;
|
||||
"K.ScanCustomization": string;
|
||||
"K.short_p2p_sync": string;
|
||||
"K.title_p2p_sync": string;
|
||||
"Keep empty folder": string;
|
||||
lang_def: string;
|
||||
"lang-de": string;
|
||||
"lang-def": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-ja": string;
|
||||
"lang-ko": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.fix0256.buttons.checkItLater": string;
|
||||
"moduleMigration.fix0256.buttons.DismissForever": string;
|
||||
"moduleMigration.fix0256.buttons.fix": string;
|
||||
"moduleMigration.fix0256.message": string;
|
||||
"moduleMigration.fix0256.messageUnrecoverable": string;
|
||||
"moduleMigration.fix0256.title": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.fetch": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.later": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.rebuild": string;
|
||||
"moduleMigration.insecureChunkExist.laterMessage": string;
|
||||
"moduleMigration.insecureChunkExist.message": string;
|
||||
"moduleMigration.insecureChunkExist.title": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleMigration.optionNoSetupUri": string;
|
||||
"moduleMigration.optionRemindNextLaunch": string;
|
||||
"moduleMigration.optionSetupViaP2P": string;
|
||||
"moduleMigration.optionSetupWizard": string;
|
||||
"moduleMigration.optionYesFetchAgain": string;
|
||||
"moduleMigration.titleCaseSensitivity": string;
|
||||
"moduleMigration.titleRecommendSetupUri": string;
|
||||
"moduleMigration.titleWelcome": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.serverVersion": string;
|
||||
"obsidianLiveSyncSettingTab.titleActiveRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
"P2P.AskPassphraseForDecrypt": string;
|
||||
"P2P.AskPassphraseForShare": string;
|
||||
"P2P.DisabledButNeed": string;
|
||||
"P2P.FailedToOpen": string;
|
||||
"P2P.NoAutoSyncPeers": string;
|
||||
"P2P.NoKnownPeers": string;
|
||||
"P2P.Note.description": string;
|
||||
"P2P.Note.important_note": string;
|
||||
"P2P.Note.important_note_sub": string;
|
||||
"P2P.Note.Summary": string;
|
||||
"P2P.NotEnabled": string;
|
||||
"P2P.P2PReplication": string;
|
||||
"P2P.PaneTitle": string;
|
||||
"P2P.ReplicatorInstanceMissing": string;
|
||||
"P2P.SeemsOffline": string;
|
||||
"P2P.SyncAlreadyRunning": string;
|
||||
"P2P.SyncCompleted": string;
|
||||
"P2P.SyncStartedWith": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Path Obfuscation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
Presets: string;
|
||||
"Process small files in the foreground": string;
|
||||
"Property Encryption": string;
|
||||
"RedFlag.Fetch.Method.Desc": string;
|
||||
"RedFlag.Fetch.Method.FetchSafer": string;
|
||||
"RedFlag.Fetch.Method.FetchSmoother": string;
|
||||
"RedFlag.Fetch.Method.FetchTraditional": string;
|
||||
"RedFlag.Fetch.Method.Title": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Cancel": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Fetch": string;
|
||||
"RedFlag.FetchRemoteConfig.Message": string;
|
||||
"RedFlag.FetchRemoteConfig.Title": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
"Replicator.Dialogue.Locked.Action.Dismiss": string;
|
||||
"Replicator.Dialogue.Locked.Action.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Action.Unlock": string;
|
||||
"Replicator.Dialogue.Locked.Message": string;
|
||||
"Replicator.Dialogue.Locked.Message.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Message.Unlocked": string;
|
||||
"Replicator.Dialogue.Locked.Title": string;
|
||||
"Replicator.Message.Cleaned": string;
|
||||
"Replicator.Message.InitialiseFatalError": string;
|
||||
"Replicator.Message.Pending": string;
|
||||
"Replicator.Message.SomeModuleFailed": string;
|
||||
"Replicator.Message.VersionUpFlash": string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Run Doctor": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setting.TroubleShooting": string;
|
||||
"Setting.TroubleShooting.Doctor": string;
|
||||
"Setting.TroubleShooting.Doctor.Desc": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles.Desc": string;
|
||||
"SettingTab.Message.AskRebuild": string;
|
||||
"Setup.Apply.Buttons.ApplyAndFetch": string;
|
||||
"Setup.Apply.Buttons.ApplyAndMerge": string;
|
||||
"Setup.Apply.Buttons.ApplyAndRebuild": string;
|
||||
"Setup.Apply.Buttons.Cancel": string;
|
||||
"Setup.Apply.Buttons.OnlyApply": string;
|
||||
"Setup.Apply.Message": string;
|
||||
"Setup.Apply.Title": string;
|
||||
"Setup.Apply.WarningRebuildRecommended": string;
|
||||
"Setup.Doctor.Buttons.No": string;
|
||||
"Setup.Doctor.Buttons.Yes": string;
|
||||
"Setup.Doctor.Message": string;
|
||||
"Setup.Doctor.Title": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Fetch": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Skip": string;
|
||||
"Setup.FetchRemoteConf.Message": string;
|
||||
"Setup.FetchRemoteConf.Title": string;
|
||||
"Setup.QRCode": string;
|
||||
"Setup.ShowQRCode": string;
|
||||
"Setup.ShowQRCode.Desc": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"TweakMismatchResolve.Action.Dismiss": string;
|
||||
"TweakMismatchResolve.Action.UseConfigured": string;
|
||||
"TweakMismatchResolve.Action.UseMine": string;
|
||||
"TweakMismatchResolve.Action.UseMineAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseMineWithRebuild": string;
|
||||
"TweakMismatchResolve.Action.UseRemote": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteWithRebuild": string;
|
||||
"TweakMismatchResolve.Message.Main": string;
|
||||
"TweakMismatchResolve.Message.MainTweakResolving": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": string;
|
||||
"TweakMismatchResolve.Table": string;
|
||||
"TweakMismatchResolve.Table.Row": string;
|
||||
"TweakMismatchResolve.Title": string;
|
||||
"TweakMismatchResolve.Title.TweakResolving": string;
|
||||
"TweakMismatchResolve.Title.UseRemoteConfig": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
};
|
||||
};
|
||||
+583
@@ -0,0 +1,583 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly he: {
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"Access Key": string;
|
||||
"Active Remote Configuration": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
Analyse: string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Check: string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compute revisions for chunks": string;
|
||||
"Copy Report to clipboard": string;
|
||||
"Data Compression": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Device name": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Doctor.Button.DismissThisVersion": string;
|
||||
"Doctor.Button.Fix": string;
|
||||
"Doctor.Button.FixButNoRebuild": string;
|
||||
"Doctor.Button.No": string;
|
||||
"Doctor.Button.Skip": string;
|
||||
"Doctor.Button.Yes": string;
|
||||
"Doctor.Dialogue.Main": string;
|
||||
"Doctor.Dialogue.MainFix": string;
|
||||
"Doctor.Dialogue.Title": string;
|
||||
"Doctor.Dialogue.TitleAlmostDone": string;
|
||||
"Doctor.Dialogue.TitleFix": string;
|
||||
"Doctor.Level.Must": string;
|
||||
"Doctor.Level.Necessary": string;
|
||||
"Doctor.Level.Optional": string;
|
||||
"Doctor.Level.Recommended": string;
|
||||
"Doctor.Message.NoIssues": string;
|
||||
"Doctor.Message.RebuildLocalRequired": string;
|
||||
"Doctor.Message.RebuildRequired": string;
|
||||
"Doctor.Message.SomeSkipped": string;
|
||||
"Doctor.RULES.E2EE_V02500.REASON": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
Filename: string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore files": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Interval (sec)": string;
|
||||
"K.exp": string;
|
||||
"K.long_p2p_sync": string;
|
||||
"K.P2P": string;
|
||||
"K.Peer": string;
|
||||
"K.ScanCustomization": string;
|
||||
"K.short_p2p_sync": string;
|
||||
"K.title_p2p_sync": string;
|
||||
"Keep empty folder": string;
|
||||
lang_def: string;
|
||||
"lang-de": string;
|
||||
"lang-def": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-he": string;
|
||||
"lang-ja": string;
|
||||
"lang-ko": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.fix0256.buttons.checkItLater": string;
|
||||
"moduleMigration.fix0256.buttons.DismissForever": string;
|
||||
"moduleMigration.fix0256.buttons.fix": string;
|
||||
"moduleMigration.fix0256.message": string;
|
||||
"moduleMigration.fix0256.messageUnrecoverable": string;
|
||||
"moduleMigration.fix0256.title": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.fetch": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.later": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.rebuild": string;
|
||||
"moduleMigration.insecureChunkExist.laterMessage": string;
|
||||
"moduleMigration.insecureChunkExist.message": string;
|
||||
"moduleMigration.insecureChunkExist.title": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleMigration.optionNoSetupUri": string;
|
||||
"moduleMigration.optionRemindNextLaunch": string;
|
||||
"moduleMigration.optionSetupViaP2P": string;
|
||||
"moduleMigration.optionSetupWizard": string;
|
||||
"moduleMigration.optionYesFetchAgain": string;
|
||||
"moduleMigration.titleCaseSensitivity": string;
|
||||
"moduleMigration.titleRecommendSetupUri": string;
|
||||
"moduleMigration.titleWelcome": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.serverVersion": string;
|
||||
"obsidianLiveSyncSettingTab.titleActiveRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
"P2P.AskPassphraseForDecrypt": string;
|
||||
"P2P.AskPassphraseForShare": string;
|
||||
"P2P.DisabledButNeed": string;
|
||||
"P2P.FailedToOpen": string;
|
||||
"P2P.NoAutoSyncPeers": string;
|
||||
"P2P.NoKnownPeers": string;
|
||||
"P2P.Note.description": string;
|
||||
"P2P.Note.important_note": string;
|
||||
"P2P.Note.important_note_sub": string;
|
||||
"P2P.Note.Summary": string;
|
||||
"P2P.NotEnabled": string;
|
||||
"P2P.P2PReplication": string;
|
||||
"P2P.PaneTitle": string;
|
||||
"P2P.ReplicatorInstanceMissing": string;
|
||||
"P2P.SeemsOffline": string;
|
||||
"P2P.SyncAlreadyRunning": string;
|
||||
"P2P.SyncCompleted": string;
|
||||
"P2P.SyncStartedWith": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Path Obfuscation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
Presets: string;
|
||||
"Process small files in the foreground": string;
|
||||
"Property Encryption": string;
|
||||
"RedFlag.Fetch.Method.Desc": string;
|
||||
"RedFlag.Fetch.Method.FetchSafer": string;
|
||||
"RedFlag.Fetch.Method.FetchSmoother": string;
|
||||
"RedFlag.Fetch.Method.FetchTraditional": string;
|
||||
"RedFlag.Fetch.Method.Title": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Cancel": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Fetch": string;
|
||||
"RedFlag.FetchRemoteConfig.Message": string;
|
||||
"RedFlag.FetchRemoteConfig.Title": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
"Replicator.Dialogue.Locked.Action.Dismiss": string;
|
||||
"Replicator.Dialogue.Locked.Action.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Action.Unlock": string;
|
||||
"Replicator.Dialogue.Locked.Message": string;
|
||||
"Replicator.Dialogue.Locked.Message.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Message.Unlocked": string;
|
||||
"Replicator.Dialogue.Locked.Title": string;
|
||||
"Replicator.Message.Cleaned": string;
|
||||
"Replicator.Message.InitialiseFatalError": string;
|
||||
"Replicator.Message.Pending": string;
|
||||
"Replicator.Message.SomeModuleFailed": string;
|
||||
"Replicator.Message.VersionUpFlash": string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Run Doctor": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setting.TroubleShooting": string;
|
||||
"Setting.TroubleShooting.Doctor": string;
|
||||
"Setting.TroubleShooting.Doctor.Desc": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles.Desc": string;
|
||||
"SettingTab.Message.AskRebuild": string;
|
||||
"Setup.Apply.Buttons.ApplyAndFetch": string;
|
||||
"Setup.Apply.Buttons.ApplyAndMerge": string;
|
||||
"Setup.Apply.Buttons.ApplyAndRebuild": string;
|
||||
"Setup.Apply.Buttons.Cancel": string;
|
||||
"Setup.Apply.Buttons.OnlyApply": string;
|
||||
"Setup.Apply.Message": string;
|
||||
"Setup.Apply.Title": string;
|
||||
"Setup.Apply.WarningRebuildRecommended": string;
|
||||
"Setup.Doctor.Buttons.No": string;
|
||||
"Setup.Doctor.Buttons.Yes": string;
|
||||
"Setup.Doctor.Message": string;
|
||||
"Setup.Doctor.Title": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Fetch": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Skip": string;
|
||||
"Setup.FetchRemoteConf.Message": string;
|
||||
"Setup.FetchRemoteConf.Title": string;
|
||||
"Setup.QRCode": string;
|
||||
"Setup.ShowQRCode": string;
|
||||
"Setup.ShowQRCode.Desc": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"TweakMismatchResolve.Action.Dismiss": string;
|
||||
"TweakMismatchResolve.Action.UseConfigured": string;
|
||||
"TweakMismatchResolve.Action.UseMine": string;
|
||||
"TweakMismatchResolve.Action.UseMineAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseMineWithRebuild": string;
|
||||
"TweakMismatchResolve.Action.UseRemote": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteWithRebuild": string;
|
||||
"TweakMismatchResolve.Message.Main": string;
|
||||
"TweakMismatchResolve.Message.MainTweakResolving": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": string;
|
||||
"TweakMismatchResolve.Table": string;
|
||||
"TweakMismatchResolve.Table.Row": string;
|
||||
"TweakMismatchResolve.Title": string;
|
||||
"TweakMismatchResolve.Title.TweakResolving": string;
|
||||
"TweakMismatchResolve.Title.UseRemoteConfig": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
};
|
||||
};
|
||||
+838
@@ -0,0 +1,838 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly ja: {
|
||||
"(Active)": string;
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
"Access Key": string;
|
||||
Activate: string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Ask a passphrase at every launch": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Cancel: string;
|
||||
"Cancel Garbage Collection": string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compaction in progress on remote database...": string;
|
||||
"Compaction on remote database completed successfully.": string;
|
||||
"Compaction on remote database failed.": string;
|
||||
"Compaction on remote database timed out.": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
"Compute revisions for chunks": string;
|
||||
"Configuration Encryption": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"Copy Report to clipboard": string;
|
||||
"CouchDB Connection Tweak": string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Data Compression": string;
|
||||
"Database Adapter": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
Default: string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
desktop: string;
|
||||
Developer: string;
|
||||
Device: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Display name": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Doctor.Button.DismissThisVersion": string;
|
||||
"Doctor.Button.Fix": string;
|
||||
"Doctor.Button.FixButNoRebuild": string;
|
||||
"Doctor.Button.No": string;
|
||||
"Doctor.Button.Skip": string;
|
||||
"Doctor.Button.Yes": string;
|
||||
"Doctor.Dialogue.Main": string;
|
||||
"Doctor.Dialogue.MainFix": string;
|
||||
"Doctor.Dialogue.Title": string;
|
||||
"Doctor.Dialogue.TitleAlmostDone": string;
|
||||
"Doctor.Dialogue.TitleFix": string;
|
||||
"Doctor.Level.Must": string;
|
||||
"Doctor.Level.Necessary": string;
|
||||
"Doctor.Level.Optional": string;
|
||||
"Doctor.Level.Recommended": string;
|
||||
"Doctor.Message.NoIssues": string;
|
||||
"Doctor.Message.RebuildLocalRequired": string;
|
||||
"Doctor.Message.RebuildRequired": string;
|
||||
"Doctor.Message.SomeSkipped": string;
|
||||
"Doctor.RULES.E2EE_V02500.REASON": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
"Failed to connect to remote for compaction.": string;
|
||||
"Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Failed to start replication after Garbage Collection.": string;
|
||||
Fetch: string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
Filename: string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection cancelled by user.": string;
|
||||
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Garbage Collection Confirmation": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"Hidden Files": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore and Proceed": string;
|
||||
"Ignore files": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
"Interval (sec)": string;
|
||||
"K.exp": string;
|
||||
"K.long_p2p_sync": string;
|
||||
"K.P2P": string;
|
||||
"K.Peer": string;
|
||||
"K.ScanCustomization": string;
|
||||
"K.short_p2p_sync": string;
|
||||
"K.title_p2p_sync": string;
|
||||
"Keep empty folder": string;
|
||||
lang_def: string;
|
||||
"lang-de": string;
|
||||
"lang-def": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-ja": string;
|
||||
"lang-ko": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"Local Database Tweak": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
Merge: string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.fix0256.buttons.checkItLater": string;
|
||||
"moduleMigration.fix0256.buttons.DismissForever": string;
|
||||
"moduleMigration.fix0256.buttons.fix": string;
|
||||
"moduleMigration.fix0256.message": string;
|
||||
"moduleMigration.fix0256.messageUnrecoverable": string;
|
||||
"moduleMigration.fix0256.title": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.fetch": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.later": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.rebuild": string;
|
||||
"moduleMigration.insecureChunkExist.laterMessage": string;
|
||||
"moduleMigration.insecureChunkExist.message": string;
|
||||
"moduleMigration.insecureChunkExist.title": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleMigration.optionNoSetupUri": string;
|
||||
"moduleMigration.optionRemindNextLaunch": string;
|
||||
"moduleMigration.optionSetupViaP2P": string;
|
||||
"moduleMigration.optionSetupWizard": string;
|
||||
"moduleMigration.optionYesFetchAgain": string;
|
||||
"moduleMigration.titleCaseSensitivity": string;
|
||||
"moduleMigration.titleRecommendSetupUri": string;
|
||||
"moduleMigration.titleWelcome": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"More actions": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Node ID": string;
|
||||
"Node Information Missing": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"Obsidian version": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.serverVersion": string;
|
||||
"obsidianLiveSyncSettingTab.titleActiveRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
Open: string;
|
||||
"Open the dialog": string;
|
||||
Overwrite: string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"P2P.AskPassphraseForDecrypt": string;
|
||||
"P2P.AskPassphraseForShare": string;
|
||||
"P2P.DisabledButNeed": string;
|
||||
"P2P.FailedToOpen": string;
|
||||
"P2P.NoAutoSyncPeers": string;
|
||||
"P2P.NoKnownPeers": string;
|
||||
"P2P.Note.description": string;
|
||||
"P2P.Note.important_note": string;
|
||||
"P2P.Note.important_note_sub": string;
|
||||
"P2P.Note.Summary": string;
|
||||
"P2P.NotEnabled": string;
|
||||
"P2P.P2PReplication": string;
|
||||
"P2P.PaneTitle": string;
|
||||
"P2P.ReplicatorInstanceMissing": string;
|
||||
"P2P.SeemsOffline": string;
|
||||
"P2P.SyncAlreadyRunning": string;
|
||||
"P2P.SyncCompleted": string;
|
||||
"P2P.SyncStartedWith": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Path Obfuscation": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": string;
|
||||
"Please set this device name": string;
|
||||
"Plug-in version": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
Presets: string;
|
||||
"Proceed Garbage Collection": string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Proceeding with Garbage Collection.": string;
|
||||
"Process small files in the foreground": string;
|
||||
Progress: string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
"RedFlag.Fetch.Method.Desc": string;
|
||||
"RedFlag.Fetch.Method.FetchSafer": string;
|
||||
"RedFlag.Fetch.Method.FetchSmoother": string;
|
||||
"RedFlag.Fetch.Method.FetchTraditional": string;
|
||||
"RedFlag.Fetch.Method.Title": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Cancel": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Fetch": string;
|
||||
"RedFlag.FetchRemoteConfig.Message": string;
|
||||
"RedFlag.FetchRemoteConfig.Title": string;
|
||||
"Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
Rename: string;
|
||||
"Replicator.Dialogue.Locked.Action.Dismiss": string;
|
||||
"Replicator.Dialogue.Locked.Action.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Action.Unlock": string;
|
||||
"Replicator.Dialogue.Locked.Message": string;
|
||||
"Replicator.Dialogue.Locked.Message.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Message.Unlocked": string;
|
||||
"Replicator.Dialogue.Locked.Title": string;
|
||||
"Replicator.Message.Cleaned": string;
|
||||
"Replicator.Message.InitialiseFatalError": string;
|
||||
"Replicator.Message.Pending": string;
|
||||
"Replicator.Message.SomeModuleFailed": string;
|
||||
"Replicator.Message.VersionUpFlash": string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"Run Doctor": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for Broken files": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram Switches": string;
|
||||
"Scram!": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setting.TroubleShooting": string;
|
||||
"Setting.TroubleShooting.Doctor": string;
|
||||
"Setting.TroubleShooting.Doctor.Desc": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles.Desc": string;
|
||||
"SettingTab.Message.AskRebuild": string;
|
||||
"Setup URI dialog cancelled.": string;
|
||||
"Setup.Apply.Buttons.ApplyAndFetch": string;
|
||||
"Setup.Apply.Buttons.ApplyAndMerge": string;
|
||||
"Setup.Apply.Buttons.ApplyAndRebuild": string;
|
||||
"Setup.Apply.Buttons.Cancel": string;
|
||||
"Setup.Apply.Buttons.OnlyApply": string;
|
||||
"Setup.Apply.Message": string;
|
||||
"Setup.Apply.Title": string;
|
||||
"Setup.Apply.WarningRebuildRecommended": string;
|
||||
"Setup.Doctor.Buttons.No": string;
|
||||
"Setup.Doctor.Buttons.Yes": string;
|
||||
"Setup.Doctor.Message": string;
|
||||
"Setup.Doctor.Title": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Fetch": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Skip": string;
|
||||
"Setup.FetchRemoteConf.Message": string;
|
||||
"Setup.FetchRemoteConf.Title": string;
|
||||
"Setup.QRCode": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.ShowQRCode": string;
|
||||
"Setup.ShowQRCode.Desc": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show full banner": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Transfer Tweak": string;
|
||||
"TweakMismatchResolve.Action.Dismiss": string;
|
||||
"TweakMismatchResolve.Action.UseConfigured": string;
|
||||
"TweakMismatchResolve.Action.UseMine": string;
|
||||
"TweakMismatchResolve.Action.UseMineAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseMineWithRebuild": string;
|
||||
"TweakMismatchResolve.Action.UseRemote": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteWithRebuild": string;
|
||||
"TweakMismatchResolve.Message.Main": string;
|
||||
"TweakMismatchResolve.Message.MainTweakResolving": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": string;
|
||||
"TweakMismatchResolve.Table": string;
|
||||
"TweakMismatchResolve.Table.Row": string;
|
||||
"TweakMismatchResolve.Title": string;
|
||||
"TweakMismatchResolve.Title.TweakResolving": string;
|
||||
"TweakMismatchResolve.Title.UseRemoteConfig": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use a custom passphrase": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+800
@@ -0,0 +1,800 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly ko: {
|
||||
"(Active)": string;
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
"Access Key": string;
|
||||
Activate: string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Ask a passphrase at every launch": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Cancel: string;
|
||||
"Cancel Garbage Collection": string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compaction in progress on remote database...": string;
|
||||
"Compaction on remote database completed successfully.": string;
|
||||
"Compaction on remote database failed.": string;
|
||||
"Compaction on remote database timed out.": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
"Compute revisions for chunks": string;
|
||||
"Configuration Encryption": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"Copy Report to clipboard": string;
|
||||
"CouchDB Connection Tweak": string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Data Compression": string;
|
||||
"Database Adapter": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
Default: string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
desktop: string;
|
||||
Developer: string;
|
||||
Device: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Display name": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Doctor.Button.DismissThisVersion": string;
|
||||
"Doctor.Button.Fix": string;
|
||||
"Doctor.Button.FixButNoRebuild": string;
|
||||
"Doctor.Button.No": string;
|
||||
"Doctor.Button.Skip": string;
|
||||
"Doctor.Button.Yes": string;
|
||||
"Doctor.Dialogue.Main": string;
|
||||
"Doctor.Dialogue.MainFix": string;
|
||||
"Doctor.Dialogue.Title": string;
|
||||
"Doctor.Dialogue.TitleAlmostDone": string;
|
||||
"Doctor.Dialogue.TitleFix": string;
|
||||
"Doctor.Level.Must": string;
|
||||
"Doctor.Level.Necessary": string;
|
||||
"Doctor.Level.Optional": string;
|
||||
"Doctor.Level.Recommended": string;
|
||||
"Doctor.Message.NoIssues": string;
|
||||
"Doctor.Message.RebuildLocalRequired": string;
|
||||
"Doctor.Message.RebuildRequired": string;
|
||||
"Doctor.Message.SomeSkipped": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
"Failed to connect to remote for compaction.": string;
|
||||
"Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Failed to start replication after Garbage Collection.": string;
|
||||
Fetch: string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
Filename: string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection cancelled by user.": string;
|
||||
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Garbage Collection Confirmation": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"Hidden Files": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore and Proceed": string;
|
||||
"Ignore files": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
"Interval (sec)": string;
|
||||
"K.exp": string;
|
||||
"K.long_p2p_sync": string;
|
||||
"K.P2P": string;
|
||||
"K.Peer": string;
|
||||
"K.ScanCustomization": string;
|
||||
"K.short_p2p_sync": string;
|
||||
"K.title_p2p_sync": string;
|
||||
"Keep empty folder": string;
|
||||
lang_def: string;
|
||||
"lang-de": string;
|
||||
"lang-def": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-ja": string;
|
||||
"lang-ko": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"Local Database Tweak": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
Merge: string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleMigration.optionNoSetupUri": string;
|
||||
"moduleMigration.optionRemindNextLaunch": string;
|
||||
"moduleMigration.optionSetupViaP2P": string;
|
||||
"moduleMigration.optionSetupWizard": string;
|
||||
"moduleMigration.optionYesFetchAgain": string;
|
||||
"moduleMigration.titleCaseSensitivity": string;
|
||||
"moduleMigration.titleRecommendSetupUri": string;
|
||||
"moduleMigration.titleWelcome": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"More actions": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Node ID": string;
|
||||
"Node Information Missing": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"Obsidian version": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
Open: string;
|
||||
"Open the dialog": string;
|
||||
Overwrite: string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"P2P.AskPassphraseForDecrypt": string;
|
||||
"P2P.AskPassphraseForShare": string;
|
||||
"P2P.DisabledButNeed": string;
|
||||
"P2P.FailedToOpen": string;
|
||||
"P2P.NoAutoSyncPeers": string;
|
||||
"P2P.NoKnownPeers": string;
|
||||
"P2P.Note.description": string;
|
||||
"P2P.Note.important_note": string;
|
||||
"P2P.Note.important_note_sub": string;
|
||||
"P2P.Note.Summary": string;
|
||||
"P2P.NotEnabled": string;
|
||||
"P2P.P2PReplication": string;
|
||||
"P2P.PaneTitle": string;
|
||||
"P2P.ReplicatorInstanceMissing": string;
|
||||
"P2P.SeemsOffline": string;
|
||||
"P2P.SyncAlreadyRunning": string;
|
||||
"P2P.SyncCompleted": string;
|
||||
"P2P.SyncStartedWith": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Path Obfuscation": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": string;
|
||||
"Please set this device name": string;
|
||||
"Plug-in version": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
Presets: string;
|
||||
"Proceed Garbage Collection": string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Proceeding with Garbage Collection.": string;
|
||||
"Process small files in the foreground": string;
|
||||
Progress: string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
"RedFlag.Fetch.Method.Desc": string;
|
||||
"RedFlag.Fetch.Method.FetchSafer": string;
|
||||
"RedFlag.Fetch.Method.FetchSmoother": string;
|
||||
"RedFlag.Fetch.Method.FetchTraditional": string;
|
||||
"RedFlag.Fetch.Method.Title": string;
|
||||
"Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
Rename: string;
|
||||
"Replicator.Dialogue.Locked.Action.Dismiss": string;
|
||||
"Replicator.Dialogue.Locked.Action.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Action.Unlock": string;
|
||||
"Replicator.Dialogue.Locked.Message": string;
|
||||
"Replicator.Dialogue.Locked.Message.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Message.Unlocked": string;
|
||||
"Replicator.Dialogue.Locked.Title": string;
|
||||
"Replicator.Message.Cleaned": string;
|
||||
"Replicator.Message.InitialiseFatalError": string;
|
||||
"Replicator.Message.Pending": string;
|
||||
"Replicator.Message.SomeModuleFailed": string;
|
||||
"Replicator.Message.VersionUpFlash": string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"Run Doctor": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for Broken files": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram Switches": string;
|
||||
"Scram!": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setting.TroubleShooting": string;
|
||||
"Setting.TroubleShooting.Doctor": string;
|
||||
"Setting.TroubleShooting.Doctor.Desc": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles.Desc": string;
|
||||
"SettingTab.Message.AskRebuild": string;
|
||||
"Setup URI dialog cancelled.": string;
|
||||
"Setup.QRCode": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.ShowQRCode": string;
|
||||
"Setup.ShowQRCode.Desc": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show full banner": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Transfer Tweak": string;
|
||||
"TweakMismatchResolve.Action.Dismiss": string;
|
||||
"TweakMismatchResolve.Action.UseConfigured": string;
|
||||
"TweakMismatchResolve.Action.UseMine": string;
|
||||
"TweakMismatchResolve.Action.UseMineAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseMineWithRebuild": string;
|
||||
"TweakMismatchResolve.Action.UseRemote": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteWithRebuild": string;
|
||||
"TweakMismatchResolve.Message.Main": string;
|
||||
"TweakMismatchResolve.Message.MainTweakResolving": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": string;
|
||||
"TweakMismatchResolve.Table": string;
|
||||
"TweakMismatchResolve.Table.Row": string;
|
||||
"TweakMismatchResolve.Title": string;
|
||||
"TweakMismatchResolve.Title.TweakResolving": string;
|
||||
"TweakMismatchResolve.Title.UseRemoteConfig": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use a custom passphrase": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+858
@@ -0,0 +1,858 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly ru: {
|
||||
"(Active)": string;
|
||||
"(BETA) Always overwrite with a newer file": string;
|
||||
"(Beta) Use ignore files": string;
|
||||
"(Days passed, 0 to disable automatic-deletion)": string;
|
||||
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": string;
|
||||
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": string;
|
||||
"(Mega chars)": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file": string;
|
||||
"(Not recommended) If set, credentials will be stored in the file.": string;
|
||||
"(Obsolete) Use an old adapter for compatibility": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
"Access Key": string;
|
||||
Activate: string;
|
||||
"Active Remote Configuration": string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
Analyse: string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Ask a passphrase at every launch": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding.": string;
|
||||
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": string;
|
||||
"Bucket Name": string;
|
||||
Cancel: string;
|
||||
"Cancel Garbage Collection": string;
|
||||
Check: string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Comma separated `.gitignore, .dockerignore`": string;
|
||||
"Compaction in progress on remote database...": string;
|
||||
"Compaction on remote database completed successfully.": string;
|
||||
"Compaction on remote database failed.": string;
|
||||
"Compaction on remote database timed out.": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
"Compute revisions for chunks": string;
|
||||
"Configuration Encryption": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"Copy Report to clipboard": string;
|
||||
"CouchDB Connection Tweak": string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Data Compression": string;
|
||||
"Database Adapter": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
Default: string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
descConnectSetupURI: string;
|
||||
descCopySetupURI: string;
|
||||
descEnableLiveSync: string;
|
||||
descFetchConfigFromRemote: string;
|
||||
descManualSetup: string;
|
||||
descTestDatabaseConnection: string;
|
||||
descValidateDatabaseConfig: string;
|
||||
desktop: string;
|
||||
Developer: string;
|
||||
Device: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Display name": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Doctor.Button.DismissThisVersion": string;
|
||||
"Doctor.Button.Fix": string;
|
||||
"Doctor.Button.FixButNoRebuild": string;
|
||||
"Doctor.Button.No": string;
|
||||
"Doctor.Button.Skip": string;
|
||||
"Doctor.Button.Yes": string;
|
||||
"Doctor.Dialogue.Main": string;
|
||||
"Doctor.Dialogue.MainFix": string;
|
||||
"Doctor.Dialogue.Title": string;
|
||||
"Doctor.Dialogue.TitleAlmostDone": string;
|
||||
"Doctor.Dialogue.TitleFix": string;
|
||||
"Doctor.Level.Must": string;
|
||||
"Doctor.Level.Necessary": string;
|
||||
"Doctor.Level.Optional": string;
|
||||
"Doctor.Level.Recommended": string;
|
||||
"Doctor.Message.NoIssues": string;
|
||||
"Doctor.Message.RebuildLocalRequired": string;
|
||||
"Doctor.Message.RebuildRequired": string;
|
||||
"Doctor.Message.SomeSkipped": string;
|
||||
"Doctor.RULES.E2EE_V02500.REASON": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
"Failed to connect to remote for compaction.": string;
|
||||
"Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Failed to start replication after Garbage Collection.": string;
|
||||
Fetch: string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
Filename: string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection cancelled by user.": string;
|
||||
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Garbage Collection Confirmation": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"Hidden Files": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this.": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped.": string;
|
||||
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely.": string;
|
||||
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": string;
|
||||
"Ignore and Proceed": string;
|
||||
"Ignore files": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Incubate Chunks in Document": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
"Interval (sec)": string;
|
||||
"K.exp": string;
|
||||
"K.long_p2p_sync": string;
|
||||
"K.P2P": string;
|
||||
"K.Peer": string;
|
||||
"K.ScanCustomization": string;
|
||||
"K.short_p2p_sync": string;
|
||||
"K.title_p2p_sync": string;
|
||||
"Keep empty folder": string;
|
||||
lang_def: string;
|
||||
"lang-de": string;
|
||||
"lang-def": string;
|
||||
"lang-es": string;
|
||||
"lang-fr": string;
|
||||
"lang-ja": string;
|
||||
"lang-ko": string;
|
||||
"lang-ru": string;
|
||||
"lang-zh": string;
|
||||
"lang-zh-tw": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": string;
|
||||
"liveSyncReplicator.beforeLiveSync": string;
|
||||
"liveSyncReplicator.cantReplicateLowerValue": string;
|
||||
"liveSyncReplicator.checkingLastSyncPoint": string;
|
||||
"liveSyncReplicator.couldNotConnectTo": string;
|
||||
"liveSyncReplicator.couldNotConnectToRemoteDb": string;
|
||||
"liveSyncReplicator.couldNotConnectToServer": string;
|
||||
"liveSyncReplicator.couldNotConnectToURI": string;
|
||||
"liveSyncReplicator.couldNotMarkResolveRemoteDb": string;
|
||||
"liveSyncReplicator.liveSyncBegin": string;
|
||||
"liveSyncReplicator.lockRemoteDb": string;
|
||||
"liveSyncReplicator.markDeviceResolved": string;
|
||||
"liveSyncReplicator.oneShotSyncBegin": string;
|
||||
"liveSyncReplicator.remoteDbCorrupted": string;
|
||||
"liveSyncReplicator.remoteDbCreatedOrConnected": string;
|
||||
"liveSyncReplicator.remoteDbDestroyed": string;
|
||||
"liveSyncReplicator.remoteDbDestroyError": string;
|
||||
"liveSyncReplicator.remoteDbMarkedResolved": string;
|
||||
"liveSyncReplicator.replicationClosed": string;
|
||||
"liveSyncReplicator.replicationInProgress": string;
|
||||
"liveSyncReplicator.retryLowerBatchSize": string;
|
||||
"liveSyncReplicator.unlockRemoteDb": string;
|
||||
"liveSyncSetting.errorNoSuchSettingItem": string;
|
||||
"liveSyncSetting.originalValue": string;
|
||||
"liveSyncSetting.valueShouldBeInRange": string;
|
||||
"liveSyncSettings.btnApply": string;
|
||||
"Local Database Tweak": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"logPane.autoScroll": string;
|
||||
"logPane.logWindowOpened": string;
|
||||
"logPane.pause": string;
|
||||
"logPane.title": string;
|
||||
"logPane.wrap": string;
|
||||
"Maximum delay for batch database updating": string;
|
||||
"Maximum file size": string;
|
||||
"Maximum Incubating Chunk Size": string;
|
||||
"Maximum Incubating Chunks": string;
|
||||
"Maximum Incubation Period": string;
|
||||
"MB (0 to disable).": string;
|
||||
"Memory cache": string;
|
||||
"Memory cache size (by total characters)": string;
|
||||
"Memory cache size (by total items)": string;
|
||||
Merge: string;
|
||||
"Minimum delay for batch database updating": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"moduleCheckRemoteSize.logCheckingStorageSizes": string;
|
||||
"moduleCheckRemoteSize.logCurrentStorageSize": string;
|
||||
"moduleCheckRemoteSize.logExceededWarning": string;
|
||||
"moduleCheckRemoteSize.logThresholdEnlarged": string;
|
||||
"moduleCheckRemoteSize.msgConfirmRebuild": string;
|
||||
"moduleCheckRemoteSize.msgDatabaseGrowing": string;
|
||||
"moduleCheckRemoteSize.msgSetDBCapacity": string;
|
||||
"moduleCheckRemoteSize.option2GB": string;
|
||||
"moduleCheckRemoteSize.option800MB": string;
|
||||
"moduleCheckRemoteSize.optionAskMeLater": string;
|
||||
"moduleCheckRemoteSize.optionDismiss": string;
|
||||
"moduleCheckRemoteSize.optionIncreaseLimit": string;
|
||||
"moduleCheckRemoteSize.optionNoWarn": string;
|
||||
"moduleCheckRemoteSize.optionRebuildAll": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": string;
|
||||
"moduleCheckRemoteSize.titleDatabaseSizeNotify": string;
|
||||
"moduleInputUIObsidian.defaultTitleConfirmation": string;
|
||||
"moduleInputUIObsidian.defaultTitleSelect": string;
|
||||
"moduleInputUIObsidian.optionNo": string;
|
||||
"moduleInputUIObsidian.optionYes": string;
|
||||
"moduleLiveSyncMain.logAdditionalSafetyScan": string;
|
||||
"moduleLiveSyncMain.logLoadingPlugin": string;
|
||||
"moduleLiveSyncMain.logPluginInitCancelled": string;
|
||||
"moduleLiveSyncMain.logPluginVersion": string;
|
||||
"moduleLiveSyncMain.logReadChangelog": string;
|
||||
"moduleLiveSyncMain.logSafetyScanCompleted": string;
|
||||
"moduleLiveSyncMain.logSafetyScanFailed": string;
|
||||
"moduleLiveSyncMain.logUnloadingPlugin": string;
|
||||
"moduleLiveSyncMain.logVersionUpdate": string;
|
||||
"moduleLiveSyncMain.msgScramEnabled": string;
|
||||
"moduleLiveSyncMain.optionKeepLiveSyncDisabled": string;
|
||||
"moduleLiveSyncMain.optionResumeAndRestart": string;
|
||||
"moduleLiveSyncMain.titleScramEnabled": string;
|
||||
"moduleLocalDatabase.logWaitingForReady": string;
|
||||
"moduleLog.showLog": string;
|
||||
"moduleMigration.docUri": string;
|
||||
"moduleMigration.fix0256.buttons.checkItLater": string;
|
||||
"moduleMigration.fix0256.buttons.DismissForever": string;
|
||||
"moduleMigration.fix0256.buttons.fix": string;
|
||||
"moduleMigration.fix0256.message": string;
|
||||
"moduleMigration.fix0256.messageUnrecoverable": string;
|
||||
"moduleMigration.fix0256.title": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.fetch": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.later": string;
|
||||
"moduleMigration.insecureChunkExist.buttons.rebuild": string;
|
||||
"moduleMigration.insecureChunkExist.laterMessage": string;
|
||||
"moduleMigration.insecureChunkExist.message": string;
|
||||
"moduleMigration.insecureChunkExist.title": string;
|
||||
"moduleMigration.logBulkSendCorrupted": string;
|
||||
"moduleMigration.logFetchRemoteTweakFailed": string;
|
||||
"moduleMigration.logLocalDatabaseNotReady": string;
|
||||
"moduleMigration.logMigratedSameBehaviour": string;
|
||||
"moduleMigration.logMigrationFailed": string;
|
||||
"moduleMigration.logRedflag2CreationFail": string;
|
||||
"moduleMigration.logRemoteTweakUnavailable": string;
|
||||
"moduleMigration.logSetupCancelled": string;
|
||||
"moduleMigration.msgFetchRemoteAgain": string;
|
||||
"moduleMigration.msgInitialSetup": string;
|
||||
"moduleMigration.msgRecommendSetupUri": string;
|
||||
"moduleMigration.msgSinceV02321": string;
|
||||
"moduleMigration.optionAdjustRemote": string;
|
||||
"moduleMigration.optionDecideLater": string;
|
||||
"moduleMigration.optionEnableBoth": string;
|
||||
"moduleMigration.optionEnableFilenameCaseInsensitive": string;
|
||||
"moduleMigration.optionEnableFixedRevisionForChunks": string;
|
||||
"moduleMigration.optionHaveSetupUri": string;
|
||||
"moduleMigration.optionKeepPreviousBehaviour": string;
|
||||
"moduleMigration.optionManualSetup": string;
|
||||
"moduleMigration.optionNoAskAgain": string;
|
||||
"moduleMigration.optionNoSetupUri": string;
|
||||
"moduleMigration.optionRemindNextLaunch": string;
|
||||
"moduleMigration.optionSetupViaP2P": string;
|
||||
"moduleMigration.optionSetupWizard": string;
|
||||
"moduleMigration.optionYesFetchAgain": string;
|
||||
"moduleMigration.titleCaseSensitivity": string;
|
||||
"moduleMigration.titleRecommendSetupUri": string;
|
||||
"moduleMigration.titleWelcome": string;
|
||||
"moduleObsidianMenu.replicate": string;
|
||||
"More actions": string;
|
||||
"Move remotely deleted files to the trash, instead of deleting.": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Node ID": string;
|
||||
"Node Information Missing": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": string;
|
||||
"Notify all setting files": string;
|
||||
"Notify customized": string;
|
||||
"Notify when other device has newly customized.": string;
|
||||
"Notify when the estimated remote storage size exceeds on start up": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2.": string;
|
||||
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": string;
|
||||
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": string;
|
||||
"Obsidian version": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnCheck": string;
|
||||
"obsidianLiveSyncSettingTab.btnCopy": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnDiscard": string;
|
||||
"obsidianLiveSyncSettingTab.btnEnable": string;
|
||||
"obsidianLiveSyncSettingTab.btnFix": string;
|
||||
"obsidianLiveSyncSettingTab.btnGotItAndUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.btnStart": string;
|
||||
"obsidianLiveSyncSettingTab.btnTest": string;
|
||||
"obsidianLiveSyncSettingTab.btnUse": string;
|
||||
"obsidianLiveSyncSettingTab.buttonFetch": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.descConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.descEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.descFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.descManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.descTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.descValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.errAccessForbidden": string;
|
||||
"obsidianLiveSyncSettingTab.errCannotContinueTest": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.errCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.errEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.errMissingWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.errRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.levelAdvanced": string;
|
||||
"obsidianLiveSyncSettingTab.levelEdgeCase": string;
|
||||
"obsidianLiveSyncSettingTab.levelPowerUser": string;
|
||||
"obsidianLiveSyncSettingTab.linkOpenInBrowser": string;
|
||||
"obsidianLiveSyncSettingTab.linkPageTop": string;
|
||||
"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.linkTroubleshooting": string;
|
||||
"obsidianLiveSyncSettingTab.logCannotUseCloudant": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigDone": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingConfigFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckingDbConfig": string;
|
||||
"obsidianLiveSyncSettingTab.logCheckPassphraseFailed": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigFail": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigSet": string;
|
||||
"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": string;
|
||||
"obsidianLiveSyncSettingTab.logDatabaseConnected": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.logEncryptionNoSupport": string;
|
||||
"obsidianLiveSyncSettingTab.logErrorOccurred": string;
|
||||
"obsidianLiveSyncSettingTab.logEstimatedSize": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.logPassphraseNotCompatible": string;
|
||||
"obsidianLiveSyncSettingTab.logRebuildNote": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgAreYouSureProceed": string;
|
||||
"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgConnectionProxyNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgCurrentOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.msgDiscardConfirmation": string;
|
||||
"obsidianLiveSyncSettingTab.msgDone": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgNewVersionNote": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSInfo": string;
|
||||
"obsidianLiveSyncSettingTab.msgNonHTTPSWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgNotice": string;
|
||||
"obsidianLiveSyncSettingTab.msgObjectStorageWarning": string;
|
||||
"obsidianLiveSyncSettingTab.msgOriginCheck": string;
|
||||
"obsidianLiveSyncSettingTab.msgRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxDocSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingModified": string;
|
||||
"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": string;
|
||||
"obsidianLiveSyncSettingTab.msgSetWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.nameApplySettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameConnectSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameCopySetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameDiscardSettings": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.nameManualSetup": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameTestDatabaseConnection": string;
|
||||
"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": string;
|
||||
"obsidianLiveSyncSettingTab.okAdminPrivileges": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentials": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOriginMatched": string;
|
||||
"obsidianLiveSyncSettingTab.okCorsOrigins": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCors": string;
|
||||
"obsidianLiveSyncSettingTab.okEnableCorsChttpd": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxDocumentSize": string;
|
||||
"obsidianLiveSyncSettingTab.okMaxRequestSize": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUser": string;
|
||||
"obsidianLiveSyncSettingTab.okRequireValidUserAuth": string;
|
||||
"obsidianLiveSyncSettingTab.okWwwAuth": string;
|
||||
"obsidianLiveSyncSettingTab.optionApply": string;
|
||||
"obsidianLiveSyncSettingTab.optionCancel": string;
|
||||
"obsidianLiveSyncSettingTab.optionCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionFetchFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.optionHere": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.optionOkReadEverything": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.optionRebuildBoth": string;
|
||||
"obsidianLiveSyncSettingTab.optionSaveOnlySettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelChangeLog": string;
|
||||
"obsidianLiveSyncSettingTab.panelGeneralSettings": string;
|
||||
"obsidianLiveSyncSettingTab.panelPrivacyEncryption": string;
|
||||
"obsidianLiveSyncSettingTab.panelRemoteConfiguration": string;
|
||||
"obsidianLiveSyncSettingTab.panelSetup": string;
|
||||
"obsidianLiveSyncSettingTab.serverVersion": string;
|
||||
"obsidianLiveSyncSettingTab.titleActiveRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleExtraFeatures": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleOnlineTips": string;
|
||||
"obsidianLiveSyncSettingTab.titleQuickSetup": string;
|
||||
"obsidianLiveSyncSettingTab.titleRebuildRequired": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleReset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSetupOtherDevices": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettings": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": string;
|
||||
"obsidianLiveSyncSettingTab.warnNoAdmin": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
Open: string;
|
||||
"Open the dialog": string;
|
||||
Overwrite: string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"P2P.AskPassphraseForDecrypt": string;
|
||||
"P2P.AskPassphraseForShare": string;
|
||||
"P2P.DisabledButNeed": string;
|
||||
"P2P.FailedToOpen": string;
|
||||
"P2P.NoAutoSyncPeers": string;
|
||||
"P2P.NoKnownPeers": string;
|
||||
"P2P.Note.description": string;
|
||||
"P2P.Note.important_note": string;
|
||||
"P2P.Note.important_note_sub": string;
|
||||
"P2P.Note.Summary": string;
|
||||
"P2P.NotEnabled": string;
|
||||
"P2P.P2PReplication": string;
|
||||
"P2P.PaneTitle": string;
|
||||
"P2P.ReplicatorInstanceMissing": string;
|
||||
"P2P.SeemsOffline": string;
|
||||
"P2P.SyncAlreadyRunning": string;
|
||||
"P2P.SyncCompleted": string;
|
||||
"P2P.SyncStartedWith": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
Passphrase: string;
|
||||
"Passphrase of sensitive configuration items": string;
|
||||
password: string;
|
||||
Password: string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Path Obfuscation": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
"Per-file-saved customization sync": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Periodic Sync interval": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": string;
|
||||
"Please set this device name": string;
|
||||
"Plug-in version": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
Presets: string;
|
||||
"Proceed Garbage Collection": string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Proceeding with Garbage Collection.": string;
|
||||
"Process small files in the foreground": string;
|
||||
Progress: string;
|
||||
"Property Encryption": string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
"RedFlag.Fetch.Method.Desc": string;
|
||||
"RedFlag.Fetch.Method.FetchSafer": string;
|
||||
"RedFlag.Fetch.Method.FetchSmoother": string;
|
||||
"RedFlag.Fetch.Method.FetchTraditional": string;
|
||||
"RedFlag.Fetch.Method.Title": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Cancel": string;
|
||||
"RedFlag.FetchRemoteConfig.Buttons.Fetch": string;
|
||||
"RedFlag.FetchRemoteConfig.Message": string;
|
||||
"RedFlag.FetchRemoteConfig.Title": string;
|
||||
"Reducing the frequency with which on-disk changes are reflected into the DB": string;
|
||||
Region: string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
"Remote server type": string;
|
||||
"Remote Type": string;
|
||||
Rename: string;
|
||||
"Replicator.Dialogue.Locked.Action.Dismiss": string;
|
||||
"Replicator.Dialogue.Locked.Action.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Action.Unlock": string;
|
||||
"Replicator.Dialogue.Locked.Message": string;
|
||||
"Replicator.Dialogue.Locked.Message.Fetch": string;
|
||||
"Replicator.Dialogue.Locked.Message.Unlocked": string;
|
||||
"Replicator.Dialogue.Locked.Title": string;
|
||||
"Replicator.Message.Cleaned": string;
|
||||
"Replicator.Message.InitialiseFatalError": string;
|
||||
"Replicator.Message.Pending": string;
|
||||
"Replicator.Message.SomeModuleFailed": string;
|
||||
"Replicator.Message.VersionUpFlash": string;
|
||||
"Requires restart of Obsidian": string;
|
||||
"Requires restart of Obsidian.": string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"Run Doctor": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Save settings to a markdown file.": string;
|
||||
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": string;
|
||||
"Saving will be performed forcefully after this number of seconds.": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan changes on customization sync": string;
|
||||
"Scan customization automatically": string;
|
||||
"Scan customization before replicating.": string;
|
||||
"Scan customization every 1 minute.": string;
|
||||
"Scan customization periodically": string;
|
||||
"Scan for hidden files before replication": string;
|
||||
"Scan hidden files periodically": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram!": string;
|
||||
"Seconds, 0 to disable": string;
|
||||
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": string;
|
||||
"Secret Key": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Server URI": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setting.TroubleShooting": string;
|
||||
"Setting.TroubleShooting.Doctor": string;
|
||||
"Setting.TroubleShooting.Doctor.Desc": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles": string;
|
||||
"Setting.TroubleShooting.ScanBrokenFiles.Desc": string;
|
||||
"SettingTab.Message.AskRebuild": string;
|
||||
"Setup URI dialog cancelled.": string;
|
||||
"Setup.Apply.Buttons.ApplyAndFetch": string;
|
||||
"Setup.Apply.Buttons.ApplyAndMerge": string;
|
||||
"Setup.Apply.Buttons.ApplyAndRebuild": string;
|
||||
"Setup.Apply.Buttons.Cancel": string;
|
||||
"Setup.Apply.Buttons.OnlyApply": string;
|
||||
"Setup.Apply.Message": string;
|
||||
"Setup.Apply.Title": string;
|
||||
"Setup.Apply.WarningRebuildRecommended": string;
|
||||
"Setup.Doctor.Buttons.No": string;
|
||||
"Setup.Doctor.Buttons.Yes": string;
|
||||
"Setup.Doctor.Message": string;
|
||||
"Setup.Doctor.Title": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Fetch": string;
|
||||
"Setup.FetchRemoteConf.Buttons.Skip": string;
|
||||
"Setup.FetchRemoteConf.Message": string;
|
||||
"Setup.FetchRemoteConf.Title": string;
|
||||
"Setup.QRCode": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.ShowQRCode": string;
|
||||
"Setup.ShowQRCode.Desc": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Should we keep folders that don't have any files inside?": string;
|
||||
"Should we only check for conflicts when a file is opened?": string;
|
||||
"Should we prompt you about conflicting files when a file is opened?": string;
|
||||
"Should we prompt you for every single merge, even if we can safely merge automatcially?": string;
|
||||
"Show full banner": string;
|
||||
"Show only notifications": string;
|
||||
"Show status as icons only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Show status inside the editor": string;
|
||||
"Show status on the status bar": string;
|
||||
"Show verbose log. Please enable if you report an issue.": string;
|
||||
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Starts synchronisation when a file is saved.": string;
|
||||
"Stop reflecting database changes to storage files.": string;
|
||||
"Stop watching for file changes.": string;
|
||||
"Suppress notification of hidden files change": string;
|
||||
"Suspend database reflecting": string;
|
||||
"Suspend file watching": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Sync after merging file": string;
|
||||
"Sync automatically after merging files": string;
|
||||
"Sync Mode": string;
|
||||
"Sync on Editor Save": string;
|
||||
"Sync on File Open": string;
|
||||
"Sync on Save": string;
|
||||
"Sync on Startup": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": string;
|
||||
"The delay for consecutive on-demand fetches": string;
|
||||
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"The Hash algorithm for chunk IDs": string;
|
||||
"The maximum duration for which chunks can be incubated within the document.": string;
|
||||
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": string;
|
||||
"The maximum number of chunks that can be incubated within the document.": string;
|
||||
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document.": string;
|
||||
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to until you configure it again.": string;
|
||||
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Transfer Tweak": string;
|
||||
"TweakMismatchResolve.Action.Dismiss": string;
|
||||
"TweakMismatchResolve.Action.UseConfigured": string;
|
||||
"TweakMismatchResolve.Action.UseMine": string;
|
||||
"TweakMismatchResolve.Action.UseMineAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseMineWithRebuild": string;
|
||||
"TweakMismatchResolve.Action.UseRemote": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": string;
|
||||
"TweakMismatchResolve.Action.UseRemoteWithRebuild": string;
|
||||
"TweakMismatchResolve.Message.Main": string;
|
||||
"TweakMismatchResolve.Message.MainTweakResolving": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": string;
|
||||
"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": string;
|
||||
"TweakMismatchResolve.Table": string;
|
||||
"TweakMismatchResolve.Table.Row": string;
|
||||
"TweakMismatchResolve.Title": string;
|
||||
"TweakMismatchResolve.Title.TweakResolving": string;
|
||||
"TweakMismatchResolve.Title.UseRemoteConfig": string;
|
||||
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": string;
|
||||
"Use a custom passphrase": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Use Custom HTTP Handler": string;
|
||||
"Use dynamic iteration count": string;
|
||||
"Use Segmented-splitter": string;
|
||||
"Use splitting-limit-capped chunk splitter": string;
|
||||
"Use the trash bin": string;
|
||||
"Use timeouts instead of heartbeats": string;
|
||||
username: string;
|
||||
Username: string;
|
||||
"Verbose Log": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name.": string;
|
||||
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": string;
|
||||
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"When you save a file in the editor, start a sync automatically": string;
|
||||
"Write credentials in the file": string;
|
||||
"Write logs into the file": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+384
@@ -0,0 +1,384 @@
|
||||
export declare const PartialMessages: {
|
||||
readonly "zh-tw": {
|
||||
"(Active)": string;
|
||||
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": string;
|
||||
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": string;
|
||||
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": string;
|
||||
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": string;
|
||||
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": string;
|
||||
Activate: string;
|
||||
"Active Remote Configuration": string;
|
||||
"Add default patterns": string;
|
||||
"Add new connection": string;
|
||||
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": string;
|
||||
"Always prompt merge conflicts": string;
|
||||
Analyse: string;
|
||||
"Analyse database usage": string;
|
||||
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": string;
|
||||
"Apply Latest Change if Conflicting": string;
|
||||
"Apply preset configuration": string;
|
||||
"Ask a passphrase at every launch": string;
|
||||
"Automatically Sync all files when opening Obsidian.": string;
|
||||
Back: string;
|
||||
"Back to non-configured": string;
|
||||
"Batch database update": string;
|
||||
"Batch limit": string;
|
||||
"Batch size": string;
|
||||
"Batch size of on-demand fetching": string;
|
||||
"Bucket Name": string;
|
||||
Cancel: string;
|
||||
"Cancel Garbage Collection": string;
|
||||
Check: string;
|
||||
"Check and convert non-path-obfuscated files": string;
|
||||
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": string;
|
||||
"cmdConfigSync.showCustomizationSync": string;
|
||||
"Compaction in progress on remote database...": string;
|
||||
"Compaction on remote database completed successfully.": string;
|
||||
"Compaction on remote database failed.": string;
|
||||
"Compaction on remote database timed out.": string;
|
||||
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": string;
|
||||
"Compatibility (Conflict Behaviour)": string;
|
||||
"Compatibility (Database structure)": string;
|
||||
"Compatibility (Internal API Usage)": string;
|
||||
"Compatibility (Metadata)": string;
|
||||
"Compatibility (Remote Database)": string;
|
||||
"Compatibility (Trouble addressed)": string;
|
||||
"Configuration Encryption": string;
|
||||
Configure: string;
|
||||
"Configure And Change Remote": string;
|
||||
"Configure E2EE": string;
|
||||
"Configure Remote": string;
|
||||
"Configure the same server information as your other devices again, manually, very advanced users only.": string;
|
||||
"Connection Method": string;
|
||||
"Continue to CouchDB setup": string;
|
||||
"Continue to Peer-to-Peer only setup": string;
|
||||
"Continue to S3/MinIO/R2 setup": string;
|
||||
Copy: string;
|
||||
"Copy Report to clipboard": string;
|
||||
"CouchDB Connection Tweak": string;
|
||||
"Cross-platform": string;
|
||||
"Current adapter: {adapter}": string;
|
||||
"Customization Sync": string;
|
||||
"Customization Sync (Beta3)": string;
|
||||
"Data Compression": string;
|
||||
"Database -> Storage": string;
|
||||
"Database Adapter": string;
|
||||
"Database Name": string;
|
||||
"Database suffix": string;
|
||||
Default: string;
|
||||
"Delay conflict resolution of inactive files": string;
|
||||
"Delay merge conflict prompt for inactive files.": string;
|
||||
Delete: string;
|
||||
"Delete all customization sync data": string;
|
||||
"Delete all data on the remote server.": string;
|
||||
"Delete local database to reset or uninstall Self-hosted LiveSync": string;
|
||||
"Delete old metadata of deleted files on start-up": string;
|
||||
"Delete Remote Configuration": string;
|
||||
"Delete remote configuration '{name}'?": string;
|
||||
desktop: string;
|
||||
Developer: string;
|
||||
Device: string;
|
||||
"Device name": string;
|
||||
"Device Setup Method": string;
|
||||
"dialog.yourLanguageAvailable": string;
|
||||
"dialog.yourLanguageAvailable.btnRevertToDefault": string;
|
||||
"dialog.yourLanguageAvailable.Title": string;
|
||||
"Disables all synchronization and restart.": string;
|
||||
"Disables logging, only shows notifications. Please disable if you report an issue.": string;
|
||||
"Display Language": string;
|
||||
"Display name": string;
|
||||
"Do not check configuration mismatch before replication": string;
|
||||
"Do not keep metadata of deleted files.": string;
|
||||
"Do not split chunks in the background": string;
|
||||
"Do not use internal API": string;
|
||||
"Document History": string;
|
||||
Duplicate: string;
|
||||
"Duplicate remote": string;
|
||||
"E2EE Configuration": string;
|
||||
"Edge case addressing (Behaviour)": string;
|
||||
"Edge case addressing (Database)": string;
|
||||
"Edge case addressing (Processing)": string;
|
||||
"Emergency restart": string;
|
||||
"Enable advanced features": string;
|
||||
"Enable customization sync": string;
|
||||
"Enable Developers' Debug Tools.": string;
|
||||
"Enable edge case treatment features": string;
|
||||
"Enable poweruser features": string;
|
||||
"Enable this if your Object Storage doesn't support CORS": string;
|
||||
"Enable this option to automatically apply the most recent change to documents even when it conflicts": string;
|
||||
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": string;
|
||||
"Encrypting sensitive configuration items": string;
|
||||
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": string;
|
||||
"End-to-End Encryption": string;
|
||||
"Endpoint URL": string;
|
||||
"Enhance chunk size": string;
|
||||
"Enter Server Information": string;
|
||||
"Enter the server information manually": string;
|
||||
Export: string;
|
||||
"Failed to connect to remote for compaction.": string;
|
||||
"Failed to connect to remote for compaction. ${reason}": string;
|
||||
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": string;
|
||||
"Failed to start replication after Garbage Collection.": string;
|
||||
Fetch: string;
|
||||
"Fetch chunks on demand": string;
|
||||
"Fetch database with previous behaviour": string;
|
||||
"Fetch remote settings": string;
|
||||
"File to resolve conflict": string;
|
||||
"File to view History": string;
|
||||
Filename: string;
|
||||
"First, please select the option that best describes your current situation.": string;
|
||||
"Flag and restart": string;
|
||||
"Forces the file to be synced when opened.": string;
|
||||
"Fresh Start Wipe": string;
|
||||
"Garbage Collection cancelled by user.": string;
|
||||
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": string;
|
||||
"Garbage Collection Confirmation": string;
|
||||
"Garbage Collection V3 (Beta)": string;
|
||||
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": string;
|
||||
"Garbage Collection: Scanned ${scanned} / ~${docCount}": string;
|
||||
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": string;
|
||||
"Handle files as Case-Sensitive": string;
|
||||
"Hidden Files": string;
|
||||
"Hide completely": string;
|
||||
"Highlight diff": string;
|
||||
"How to display network errors when the sync server is unreachable.": string;
|
||||
"How would you like to configure the connection to your server?": string;
|
||||
"I am adding a device to an existing synchronisation setup": string;
|
||||
"I am setting this up for the first time": string;
|
||||
"I know my server details, let me enter them": string;
|
||||
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": string;
|
||||
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": string;
|
||||
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": string;
|
||||
"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": string;
|
||||
"If enabled, the \u26D4 icon will be shown inside the status instead of the file warnings banner. No details will be shown.": string;
|
||||
"If enabled, the file under 1kb will be processed in the UI thread.": string;
|
||||
"If enabled, the notification of hidden files change will be suppressed.": string;
|
||||
"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": string;
|
||||
"If this enabled, All files are handled as case-Sensitive (Previous behaviour).": string;
|
||||
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": string;
|
||||
"If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": string;
|
||||
"Ignore and Proceed": string;
|
||||
"Ignore patterns": string;
|
||||
"Import connection": string;
|
||||
"Initialise all journal history, On the next sync, every item will be received and sent.": string;
|
||||
"Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.": string;
|
||||
"Initialise journal sent history. On the next sync, every item except this device received will be sent again.": string;
|
||||
Later: string;
|
||||
"Limit: {datetime} ({timestamp})": string;
|
||||
Lock: string;
|
||||
"Lock Server": string;
|
||||
"Lock the remote server to prevent synchronization with other devices.": string;
|
||||
"Minimum interval for syncing": string;
|
||||
"More actions": string;
|
||||
"Network warning style": string;
|
||||
"New Remote": string;
|
||||
"No connected device information found. Cancelling Garbage Collection.": string;
|
||||
"No limit configured": string;
|
||||
"No, please take me back": string;
|
||||
"Node ID": string;
|
||||
"Node Information Missing": string;
|
||||
"Non-Synchronising files": string;
|
||||
"Normal Files": string;
|
||||
"Obsidian version": string;
|
||||
"obsidianLiveSyncSettingTab.btnApply": string;
|
||||
"obsidianLiveSyncSettingTab.btnDisable": string;
|
||||
"obsidianLiveSyncSettingTab.btnNext": string;
|
||||
"obsidianLiveSyncSettingTab.buttonNext": string;
|
||||
"obsidianLiveSyncSettingTab.defaultLanguage": string;
|
||||
"obsidianLiveSyncSettingTab.labelDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.labelEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredDisabled": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.logConfiguredPeriodic": string;
|
||||
"obsidianLiveSyncSettingTab.logSelectAnyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.msgConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": string;
|
||||
"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": string;
|
||||
"obsidianLiveSyncSettingTab.msgGenerateSetupURI": string;
|
||||
"obsidianLiveSyncSettingTab.msgInvalidPassphrase": string;
|
||||
"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": string;
|
||||
"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": string;
|
||||
"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": string;
|
||||
"obsidianLiveSyncSettingTab.optionDisableAllAutomatic": string;
|
||||
"obsidianLiveSyncSettingTab.optionLiveSync": string;
|
||||
"obsidianLiveSyncSettingTab.optionOnEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicAndEvents": string;
|
||||
"obsidianLiveSyncSettingTab.optionPeriodicWithBatch": string;
|
||||
"obsidianLiveSyncSettingTab.titleAppearance": string;
|
||||
"obsidianLiveSyncSettingTab.titleConflictResolution": string;
|
||||
"obsidianLiveSyncSettingTab.titleCongratulations": string;
|
||||
"obsidianLiveSyncSettingTab.titleCouchDB": string;
|
||||
"obsidianLiveSyncSettingTab.titleDeletionPropagation": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": string;
|
||||
"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": string;
|
||||
"obsidianLiveSyncSettingTab.titleFetchConfig": string;
|
||||
"obsidianLiveSyncSettingTab.titleHiddenFiles": string;
|
||||
"obsidianLiveSyncSettingTab.titleLogging": string;
|
||||
"obsidianLiveSyncSettingTab.titleMinioS3R2": string;
|
||||
"obsidianLiveSyncSettingTab.titleNotification": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": string;
|
||||
"obsidianLiveSyncSettingTab.titleRemoteServer": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationMethod": string;
|
||||
"obsidianLiveSyncSettingTab.titleSynchronizationPreset": string;
|
||||
"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": string;
|
||||
"obsidianLiveSyncSettingTab.titleUpdateThinning": string;
|
||||
Ok: string;
|
||||
"Old Algorithm": string;
|
||||
"Older fallback (Slow, W/O WebAssembly)": string;
|
||||
"Overwrite patterns": string;
|
||||
"Overwrite remote": string;
|
||||
"Overwrite remote with local DB and passphrase.": string;
|
||||
"Overwrite Server Data with This Device's Files": string;
|
||||
"paneMaintenance.markDeviceResolvedAfterBackup": string;
|
||||
"paneMaintenance.remoteLockedAndDeviceNotAccepted": string;
|
||||
"paneMaintenance.remoteLockedResolvedDevice": string;
|
||||
"paneMaintenance.unlockDatabaseReady": string;
|
||||
"Paste a connection string": string;
|
||||
"Paste the Setup URI generated from one of your active devices.": string;
|
||||
"Patterns to match files for overwriting instead of merging": string;
|
||||
"Patterns to match files for syncing": string;
|
||||
"Peer-to-Peer only": string;
|
||||
"Peer-to-Peer Synchronisation": string;
|
||||
Perform: string;
|
||||
"Perform cleanup": string;
|
||||
"Perform Garbage Collection": string;
|
||||
"Perform Garbage Collection to remove unused chunks and reduce database size.": string;
|
||||
"Pick a file to resolve conflict": string;
|
||||
"Pick a file to show history": string;
|
||||
"Please disable 'Read chunks online' in settings to use Garbage Collection.": string;
|
||||
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": string;
|
||||
"Please select 'Cancel' explicitly to cancel this operation.": string;
|
||||
"Please select a method to import the settings from another device.": string;
|
||||
"Please select an option to proceed": string;
|
||||
"Please select the type of server to which you are connecting.": string;
|
||||
"Please set this device name": string;
|
||||
"Plug-in version": string;
|
||||
"Prepare the 'report' to create an issue": string;
|
||||
"Proceed Garbage Collection": string;
|
||||
"Proceed with Setup URI": string;
|
||||
"Proceeding with Garbage Collection, ignoring missing nodes.": string;
|
||||
"Proceeding with Garbage Collection.": string;
|
||||
Progress: string;
|
||||
"PureJS fallback (Fast, W/O WebAssembly)": string;
|
||||
"Purge all download/upload cache.": string;
|
||||
"Purge all journal counter": string;
|
||||
"Rebuild local and remote database with local files.": string;
|
||||
"Rebuilding Operations (Remote Only)": string;
|
||||
"Recovery and Repair": string;
|
||||
"Recreate all": string;
|
||||
"Recreate missing chunks for all files": string;
|
||||
"Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": string;
|
||||
Remediation: string;
|
||||
"Remediation Setting Changed": string;
|
||||
"Remote Database Tweak (In sunset)": string;
|
||||
"Remote Databases": string;
|
||||
"Remote name": string;
|
||||
Rename: string;
|
||||
"Rerun Onboarding Wizard": string;
|
||||
"Rerun the onboarding wizard to set up Self-hosted LiveSync again.": string;
|
||||
"Rerun Wizard": string;
|
||||
Resend: string;
|
||||
"Resend all chunks to the remote.": string;
|
||||
Reset: string;
|
||||
"Reset all": string;
|
||||
"Reset all journal counter": string;
|
||||
"Reset journal received history": string;
|
||||
"Reset journal sent history": string;
|
||||
"Reset notification threshold and check the remote database usage": string;
|
||||
"Reset received": string;
|
||||
"Reset sent history": string;
|
||||
"Reset Synchronisation information": string;
|
||||
"Reset Synchronisation on This Device": string;
|
||||
"Reset the remote storage size threshold and check the remote storage size again.": string;
|
||||
"Resolve All": string;
|
||||
"Resolve all conflicted files": string;
|
||||
"Resolve All conflicted files by the newer one": string;
|
||||
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": string;
|
||||
"Restart Now": string;
|
||||
"Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?": string;
|
||||
"Restore or reconstruct local database from remote.": string;
|
||||
"Run Doctor": string;
|
||||
"S3/MinIO/R2 Object Storage": string;
|
||||
"Scan a QR Code (Recommended for mobile)": string;
|
||||
"Scan for Broken files": string;
|
||||
"Scan the QR code displayed on an active device using this device's camera.": string;
|
||||
"Schedule and Restart": string;
|
||||
"Scram Switches": string;
|
||||
"Scram!": string;
|
||||
"Select the database adapter to use.": string;
|
||||
Send: string;
|
||||
"Send chunks": string;
|
||||
"Setting.GenerateKeyPair.Desc": string;
|
||||
"Setting.GenerateKeyPair.Title": string;
|
||||
"Setup URI dialog cancelled.": string;
|
||||
"Setup.RemoteE2EE.AdvancedTitle": string;
|
||||
"Setup.RemoteE2EE.AlgorithmWarning": string;
|
||||
"Setup.RemoteE2EE.ButtonCancel": string;
|
||||
"Setup.RemoteE2EE.ButtonProceed": string;
|
||||
"Setup.RemoteE2EE.DefaultAlgorithmDesc": string;
|
||||
"Setup.RemoteE2EE.Guidance": string;
|
||||
"Setup.RemoteE2EE.LabelEncrypt": string;
|
||||
"Setup.RemoteE2EE.LabelEncryptionAlgorithm": string;
|
||||
"Setup.RemoteE2EE.LabelObfuscateProperties": string;
|
||||
"Setup.RemoteE2EE.MultiDestinationWarning": string;
|
||||
"Setup.RemoteE2EE.ObfuscatePropertiesDesc": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine1": string;
|
||||
"Setup.RemoteE2EE.PassphraseValidationLine2": string;
|
||||
"Setup.RemoteE2EE.PlaceholderPassphrase": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine1": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedLine2": string;
|
||||
"Setup.RemoteE2EE.StronglyRecommendedTitle": string;
|
||||
"Setup.RemoteE2EE.Title": string;
|
||||
"Setup.ScanQRCode.ButtonClose": string;
|
||||
"Setup.ScanQRCode.Guidance": string;
|
||||
"Setup.ScanQRCode.Step1": string;
|
||||
"Setup.ScanQRCode.Step2": string;
|
||||
"Setup.ScanQRCode.Step3": string;
|
||||
"Setup.ScanQRCode.Step4": string;
|
||||
"Setup.ScanQRCode.Title": string;
|
||||
"Setup.UseSetupURI.ButtonCancel": string;
|
||||
"Setup.UseSetupURI.ButtonProceed": string;
|
||||
"Setup.UseSetupURI.ErrorFailedToParse": string;
|
||||
"Setup.UseSetupURI.ErrorPassphraseRequired": string;
|
||||
"Setup.UseSetupURI.GuidanceLine1": string;
|
||||
"Setup.UseSetupURI.GuidanceLine2": string;
|
||||
"Setup.UseSetupURI.InvalidInfo": string;
|
||||
"Setup.UseSetupURI.LabelPassphrase": string;
|
||||
"Setup.UseSetupURI.LabelSetupURI": string;
|
||||
"Setup.UseSetupURI.PlaceholderPassphrase": string;
|
||||
"Setup.UseSetupURI.Title": string;
|
||||
"Setup.UseSetupURI.ValidInfo": string;
|
||||
"Show full banner": string;
|
||||
"Show history": string;
|
||||
"Show icon only": string;
|
||||
"Show status icon instead of file warnings banner": string;
|
||||
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": string;
|
||||
"Storage -> Database": string;
|
||||
"Switch to IDB": string;
|
||||
"Switch to IndexedDB": string;
|
||||
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": string;
|
||||
"Synchronising files": string;
|
||||
Syncing: string;
|
||||
"Target patterns": string;
|
||||
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": string;
|
||||
"The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": string;
|
||||
"The minimum interval for automatic synchronisation on event.": string;
|
||||
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": string;
|
||||
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": string;
|
||||
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": string;
|
||||
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": string;
|
||||
"Use a Setup URI (Recommended)": string;
|
||||
"Verify all": string;
|
||||
"Verify and repair all files": string;
|
||||
"We will now guide you through a few questions to simplify the synchronisation setup.": string;
|
||||
"We will now proceed with the server configuration.": string;
|
||||
"Welcome to Self-hosted LiveSync": string;
|
||||
"xxhash32 (Fast but less collision resistance)": string;
|
||||
"xxhash64 (Fastest)": string;
|
||||
"Yes, I want to add this device to my existing synchronisation": string;
|
||||
"Yes, I want to set up a new synchronisation": string;
|
||||
"You are adding this device to an existing synchronisation setup.": string;
|
||||
};
|
||||
};
|
||||
+1093
File diff suppressed because it is too large
Load Diff
+41
@@ -0,0 +1,41 @@
|
||||
export type CouchDBCredentials = BasicCredentials | JWTCredentials;
|
||||
export type JWTAlgorithm = "HS256" | "HS512" | "ES256" | "ES512" | "";
|
||||
export type Credential = {
|
||||
username: string;
|
||||
password: string;
|
||||
};
|
||||
export type BasicCredentials = {
|
||||
username: string;
|
||||
password: string;
|
||||
type: "basic";
|
||||
};
|
||||
export type JWTCredentials = {
|
||||
jwtAlgorithm: JWTAlgorithm;
|
||||
jwtKey: string;
|
||||
jwtKid: string;
|
||||
jwtSub: string;
|
||||
jwtExpDuration: number;
|
||||
type: "jwt";
|
||||
};
|
||||
export interface JWTHeader {
|
||||
alg: string;
|
||||
typ: string;
|
||||
kid?: string;
|
||||
}
|
||||
export interface JWTPayload {
|
||||
sub: string;
|
||||
exp: number;
|
||||
iss?: string;
|
||||
iat: number;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
export interface JWTParams {
|
||||
header: JWTHeader;
|
||||
payload: JWTPayload;
|
||||
credentials: JWTCredentials;
|
||||
}
|
||||
export interface PreparedJWT {
|
||||
header: JWTHeader;
|
||||
payload: JWTPayload;
|
||||
token: string;
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import type { DocumentID } from "./db.type";
|
||||
export declare const VERSIONING_DOCID: DocumentID;
|
||||
export declare const MILESTONE_DOCID: DocumentID;
|
||||
export declare const NODEINFO_DOCID: DocumentID;
|
||||
export declare const SYNCINFO_ID: DocumentID;
|
||||
export declare const EntryTypes: {
|
||||
readonly NOTE_LEGACY: "notes";
|
||||
readonly NOTE_BINARY: "newnote";
|
||||
readonly NOTE_PLAIN: "plain";
|
||||
readonly INTERNAL_FILE: "internalfile";
|
||||
readonly CHUNK: "leaf";
|
||||
readonly CHUNK_PACK: "chunkpack";
|
||||
readonly VERSION_INFO: "versioninfo";
|
||||
readonly SYNC_INFO: "syncinfo";
|
||||
readonly SYNC_PARAMETERS: "sync-parameters";
|
||||
readonly MILESTONE_INFO: "milestoneinfo";
|
||||
readonly NODE_INFO: "nodeinfo";
|
||||
};
|
||||
export declare const NoteTypes: ("notes" | "newnote" | "plain")[];
|
||||
export declare const ChunkTypes: ("leaf" | "chunkpack")[];
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
import type { MILESTONE_DOCID, NODEINFO_DOCID } from "./db.const";
|
||||
import type { AnyEntry, ChunkVersionRange, DatabaseEntry, EntryChunkPack, EntryLeaf, EntryTypes, EntryVersionInfo, LoadedEntry, MetaEntry } from "./db.type";
|
||||
import type { TweakValues } from "./tweak.definition";
|
||||
export type NodeKey = string;
|
||||
export interface DeviceInfo {
|
||||
/**
|
||||
* Name of the device (Initially from deviceAndVaultName setting, configurable).
|
||||
*/
|
||||
device_name: string;
|
||||
/**
|
||||
* Vault name (From vaultName setting).
|
||||
*/
|
||||
vault_name: string;
|
||||
/**
|
||||
* Obsidian App version of the device.
|
||||
*/
|
||||
app_version: string;
|
||||
/**
|
||||
* Plugin version of the device.
|
||||
*/
|
||||
plugin_version: string;
|
||||
progress: string;
|
||||
}
|
||||
export interface NodeData extends DeviceInfo {
|
||||
/**
|
||||
* Epoch time in milliseconds when the device last connected.
|
||||
*/
|
||||
last_connected: number;
|
||||
}
|
||||
export interface EntryMilestoneInfo extends DatabaseEntry {
|
||||
_id: typeof MILESTONE_DOCID;
|
||||
type: EntryTypes["MILESTONE_INFO"];
|
||||
created: number;
|
||||
accepted_nodes: string[];
|
||||
node_info: {
|
||||
[key: NodeKey]: NodeData;
|
||||
};
|
||||
locked: boolean;
|
||||
cleaned?: boolean;
|
||||
node_chunk_info: {
|
||||
[key: NodeKey]: ChunkVersionRange;
|
||||
};
|
||||
tweak_values: {
|
||||
[key: NodeKey]: TweakValues;
|
||||
};
|
||||
}
|
||||
export interface EntryNodeInfo extends DatabaseEntry {
|
||||
_id: typeof NODEINFO_DOCID;
|
||||
type: EntryTypes["NODE_INFO"];
|
||||
nodeid: string;
|
||||
v20220607?: boolean;
|
||||
}
|
||||
export type EntryBody = AnyEntry;
|
||||
export type EntryDoc = EntryBody | LoadedEntry | EntryLeaf | EntryVersionInfo | EntryMilestoneInfo | EntryNodeInfo | EntryChunkPack;
|
||||
export type EntryDocResponse = EntryDoc & PouchDB.Core.IdMeta & PouchDB.Core.GetMeta;
|
||||
export declare function isMetaEntry(entry: AnyEntry): entry is MetaEntry;
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
import type { TaggedType } from "octagonal-wheels/common/types";
|
||||
import type { EntryTypes, SYNCINFO_ID } from "./db.const";
|
||||
export type FilePath = TaggedType<string, "FilePath">;
|
||||
export type FilePathWithPrefixLC = TaggedType<string, "FilePathWithPrefixLC">;
|
||||
export type FilePathWithPrefix = TaggedType<string, "FilePathWithPrefix"> | FilePath | FilePathWithPrefixLC;
|
||||
export type DocumentID = TaggedType<string, "documentId">;
|
||||
export type EntryType = (typeof EntryTypes)[keyof typeof EntryTypes];
|
||||
export type EntryTypes = typeof EntryTypes;
|
||||
export type EntryTypeNotes = EntryTypes["NOTE_BINARY"] | EntryTypes["NOTE_PLAIN"];
|
||||
export type EntryTypeNotesWithLegacy = EntryTypeNotes | EntryTypes["NOTE_LEGACY"];
|
||||
/**
|
||||
* Represents an entry in the database.
|
||||
*/
|
||||
export interface DatabaseEntry {
|
||||
/**
|
||||
* The ID of the document.
|
||||
*/
|
||||
_id: DocumentID;
|
||||
/**
|
||||
* The revision of the document.
|
||||
*/
|
||||
_rev?: string;
|
||||
/**
|
||||
* Deleted flag.
|
||||
*/
|
||||
_deleted?: boolean;
|
||||
/**
|
||||
* Conflicts (if exists).
|
||||
*/
|
||||
_conflicts?: string[];
|
||||
}
|
||||
/**
|
||||
* Represents the base structure for an entry that represents a file.
|
||||
*/
|
||||
export interface EntryBase {
|
||||
/**
|
||||
* The creation time of the file.
|
||||
*/
|
||||
ctime: number;
|
||||
/**
|
||||
* The modification time of the file.
|
||||
*/
|
||||
mtime: number;
|
||||
/**
|
||||
* The size of the file.
|
||||
*/
|
||||
size: number;
|
||||
/**
|
||||
* Deleted flag.
|
||||
*/
|
||||
deleted?: boolean;
|
||||
}
|
||||
export type EdenChunk = {
|
||||
data: string;
|
||||
epoch: number;
|
||||
};
|
||||
export type EntryWithEden = {
|
||||
eden: Record<DocumentID, EdenChunk>;
|
||||
};
|
||||
/**
|
||||
* Represents the common fields for all database entries representing physical files.
|
||||
*/
|
||||
export interface FileEntryBase extends DatabaseEntry, EntryBase, EntryWithEden {
|
||||
/**
|
||||
* The path of the file.
|
||||
*/
|
||||
path: FilePathWithPrefix;
|
||||
}
|
||||
/**
|
||||
* Represents an entry that contains children (chunk IDs).
|
||||
*/
|
||||
export interface EntryWithChildren {
|
||||
/**
|
||||
* Chunk IDs indicating the contents of the file.
|
||||
*/
|
||||
children: string[];
|
||||
}
|
||||
/**
|
||||
* Represents an entry that contains content data.
|
||||
*/
|
||||
export interface EntryWithData<T = string | string[] | Blob> {
|
||||
/**
|
||||
* Contents / payload of the entry.
|
||||
*/
|
||||
data: T;
|
||||
}
|
||||
/**
|
||||
* Represents an entry that contains document body text.
|
||||
*/
|
||||
export type EntryWithBody = EntryWithData<string | string[]>;
|
||||
/**
|
||||
* Represents an entry that contains a binary Blob.
|
||||
*/
|
||||
export type EntryWithBlob = EntryWithData<Blob>;
|
||||
/**
|
||||
* Represents a legacy note entry where file content is stored directly in the metadata.
|
||||
*/
|
||||
export interface NoteEntry extends FileEntryBase, EntryWithBody {
|
||||
/**
|
||||
* The type of the entry.
|
||||
*/
|
||||
type: EntryTypes["NOTE_LEGACY"];
|
||||
}
|
||||
/**
|
||||
* Represents a chunk-split binary file entry.
|
||||
*/
|
||||
export interface NewEntry extends FileEntryBase, EntryWithChildren {
|
||||
/**
|
||||
* The type of the entry.
|
||||
*/
|
||||
type: EntryTypes["NOTE_BINARY"];
|
||||
}
|
||||
/**
|
||||
* Represents a chunk-split plain text file entry.
|
||||
*/
|
||||
export interface PlainEntry extends FileEntryBase, EntryWithChildren {
|
||||
/**
|
||||
* The type of the entry.
|
||||
*/
|
||||
type: EntryTypes["NOTE_PLAIN"];
|
||||
}
|
||||
/**
|
||||
* Represents a customization / configuration file entry.
|
||||
* @deprecated Use NewEntry or PlainEntry directly.
|
||||
*/
|
||||
export type InternalFileEntry = NewEntry;
|
||||
/**
|
||||
* Represents any file-related database entry.
|
||||
*/
|
||||
export type AnyEntry = NoteEntry | NewEntry | PlainEntry;
|
||||
/**
|
||||
* Represents a file entry after its contents have been loaded and assembled.
|
||||
*/
|
||||
export type LoadedEntry = AnyEntry & EntryWithBody & {
|
||||
datatype: EntryTypeNotes;
|
||||
};
|
||||
/**
|
||||
* Represents a file entry prepared for saving.
|
||||
*/
|
||||
export type SavingEntry = AnyEntry & EntryWithBlob & {
|
||||
datatype: EntryTypeNotes;
|
||||
};
|
||||
/**
|
||||
* Represents a metadata entry (chunked file entry) without full content.
|
||||
*/
|
||||
export type MetaEntry = NewEntry | PlainEntry;
|
||||
/**
|
||||
* Represents a leaf (chunk) document in the database.
|
||||
*/
|
||||
export interface EntryLeaf extends DatabaseEntry, EntryWithData<string> {
|
||||
type: EntryTypes["CHUNK"];
|
||||
isCorrupted?: boolean;
|
||||
}
|
||||
/**
|
||||
* Represents a chunk pack document.
|
||||
*/
|
||||
export interface EntryChunkPack extends DatabaseEntry, EntryWithData<string> {
|
||||
type: EntryTypes["CHUNK_PACK"];
|
||||
}
|
||||
export interface EntryVersionInfo extends DatabaseEntry {
|
||||
type: EntryTypes["VERSION_INFO"];
|
||||
version: number;
|
||||
}
|
||||
export interface EntryHasPath {
|
||||
path: FilePathWithPrefix | FilePath;
|
||||
}
|
||||
export interface ChunkVersionRange {
|
||||
min: number;
|
||||
max: number;
|
||||
current: number;
|
||||
}
|
||||
export interface SyncInfo extends DatabaseEntry, EntryWithData<string> {
|
||||
_id: typeof SYNCINFO_ID;
|
||||
type: EntryTypes["SYNC_INFO"];
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import type { AUTO_MERGED, CANCELLED, MISSING_OR_ERROR, NOT_CONFLICTED } from "./shared.const.symbols";
|
||||
export type diff_result_leaf = {
|
||||
rev: string;
|
||||
data: string;
|
||||
ctime: number;
|
||||
mtime: number;
|
||||
deleted?: boolean;
|
||||
};
|
||||
export type dmp_result = Array<[number, string]>;
|
||||
export type diff_result = {
|
||||
left: diff_result_leaf;
|
||||
right: diff_result_leaf;
|
||||
diff: dmp_result;
|
||||
};
|
||||
export type DIFF_CHECK_RESULT_AUTO = typeof CANCELLED | typeof AUTO_MERGED | typeof NOT_CONFLICTED | typeof MISSING_OR_ERROR;
|
||||
export type diff_check_result = DIFF_CHECK_RESULT_AUTO | diff_result;
|
||||
@@ -0,0 +1,7 @@
|
||||
export declare const CHeader = "h:";
|
||||
export declare const PSCHeader = "ps:";
|
||||
export declare const PSCHeaderEnd = "ps;";
|
||||
export declare const ICHeader = "i:";
|
||||
export declare const ICHeaderEnd = "i;";
|
||||
export declare const ICHeaderLength: number;
|
||||
export declare const ICXHeader = "ix:";
|
||||
@@ -0,0 +1,83 @@
|
||||
import type { FilePath, FilePathWithPrefix } from "./db.type";
|
||||
export interface UXStat {
|
||||
size: number;
|
||||
mtime: number;
|
||||
ctime: number;
|
||||
type: "file" | "folder";
|
||||
}
|
||||
/**
|
||||
* Represents the common base properties for any filesystem object stub.
|
||||
*/
|
||||
export interface UXFileSystemStubBase {
|
||||
name: string;
|
||||
path: FilePath | FilePathWithPrefix;
|
||||
deleted?: boolean;
|
||||
isInternal?: boolean;
|
||||
}
|
||||
/**
|
||||
* Represents a stub for a regular file.
|
||||
*/
|
||||
export interface UXFileInfoStub extends UXFileSystemStubBase {
|
||||
stat: UXStat;
|
||||
isFolder?: false;
|
||||
}
|
||||
/**
|
||||
* Represents a complete file containing its binary body.
|
||||
*/
|
||||
export interface UXFileInfo extends UXFileInfoStub {
|
||||
body: Blob;
|
||||
}
|
||||
export type UXAbstractInfoStub = UXFileInfoStub | UXFolderInfo;
|
||||
/**
|
||||
* Represents a stub for an internal/hidden file.
|
||||
*/
|
||||
export interface UXInternalFileInfoStub extends UXFileSystemStubBase {
|
||||
isFolder?: false;
|
||||
isInternal: true;
|
||||
stat: undefined;
|
||||
}
|
||||
/**
|
||||
* Represents information about a folder.
|
||||
*/
|
||||
export interface UXFolderInfo extends UXFileSystemStubBase {
|
||||
isFolder: true;
|
||||
children: UXFileInfoStub[];
|
||||
parent: FilePath | FilePathWithPrefix | undefined;
|
||||
}
|
||||
export interface UXDataWriteOptions {
|
||||
/**
|
||||
* Time of creation, represented as a unix timestamp, in milliseconds.
|
||||
* Omit this if you want to keep the default behaviour.
|
||||
* @public
|
||||
* */
|
||||
ctime?: number;
|
||||
/**
|
||||
* Time of last modification, represented as a unix timestamp, in milliseconds.
|
||||
* Omit this if you want to keep the default behaviour.
|
||||
* @public
|
||||
* */
|
||||
mtime?: number;
|
||||
}
|
||||
export type CacheData = string | ArrayBuffer;
|
||||
export type FileEventType = "CREATE" | "DELETE" | "CHANGED" | "INTERNAL";
|
||||
export interface FileEventArgs {
|
||||
file: UXFileInfoStub | UXInternalFileInfoStub;
|
||||
cache?: CacheData;
|
||||
oldPath?: string;
|
||||
ctx?: unknown;
|
||||
}
|
||||
export interface FileEventItem {
|
||||
type: FileEventType;
|
||||
args: FileEventArgs;
|
||||
key: string;
|
||||
skipBatchWait?: boolean;
|
||||
cancelled?: boolean;
|
||||
batched?: boolean;
|
||||
}
|
||||
export interface FileWithFileStat extends Omit<UXStat, "type"> {
|
||||
path: FilePath;
|
||||
}
|
||||
export interface FileWithStatAsProp {
|
||||
path: FilePath;
|
||||
stat: Omit<UXStat, "type">;
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
import type { FilePath } from "./db.type";
|
||||
export declare const PREFIXMD_LOGFILE = "livesync_log_";
|
||||
export declare const PREFIXMD_LOGFILE_UC = "LIVESYNC_LOG_";
|
||||
export declare const FlagFilesOriginal: {
|
||||
readonly SUSPEND_ALL: FilePath;
|
||||
readonly REBUILD_ALL: FilePath;
|
||||
readonly FETCH_ALL: FilePath;
|
||||
};
|
||||
export declare const FlagFilesHumanReadable: {
|
||||
readonly REBUILD_ALL: FilePath;
|
||||
readonly FETCH_ALL: FilePath;
|
||||
};
|
||||
/**
|
||||
* @deprecated Use `FlagFilesOriginal.SUSPEND_ALL` instead.
|
||||
*/
|
||||
export declare const FLAGMD_REDFLAG: FilePath;
|
||||
/**
|
||||
* @deprecated Use `FlagFilesHumanReadable.REBUILD_ALL` instead.
|
||||
*/
|
||||
export declare const FLAGMD_REDFLAG2: FilePath;
|
||||
/**
|
||||
* @deprecated Use `FlagFilesHumanReadable.FETCH_ALL` instead.
|
||||
*/
|
||||
export declare const FLAGMD_REDFLAG2_HR: FilePath;
|
||||
/**
|
||||
* @deprecated Use `FlagFilesOriginal.FETCH_ALL` instead.
|
||||
*/
|
||||
export declare const FLAGMD_REDFLAG3: FilePath;
|
||||
/**
|
||||
* @deprecated Use `FlagFilesHumanReadable.FETCH_ALL` instead.
|
||||
*/
|
||||
export declare const FLAGMD_REDFLAG3_HR: FilePath;
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
export declare const SETTING_VERSION_INITIAL = 0;
|
||||
export declare const SETTING_VERSION_SUPPORT_CASE_INSENSITIVE = 10;
|
||||
export declare const CURRENT_SETTING_VERSION = 10;
|
||||
export declare const RemoteTypes: {
|
||||
readonly REMOTE_COUCHDB: "";
|
||||
readonly REMOTE_MINIO: "MINIO";
|
||||
readonly REMOTE_P2P: "ONLY_P2P";
|
||||
};
|
||||
export declare const REMOTE_COUCHDB: "";
|
||||
export declare const REMOTE_MINIO: "MINIO";
|
||||
export declare const REMOTE_P2P: "ONLY_P2P";
|
||||
export declare const E2EEAlgorithmNames: {
|
||||
readonly "": "V1: Legacy";
|
||||
readonly v2: "V2: AES-256-GCM With HKDF";
|
||||
readonly forceV1: "Force-V1: Force Legacy (Not recommended)";
|
||||
};
|
||||
export declare const E2EEAlgorithms: {
|
||||
readonly V1: "";
|
||||
readonly V2: "v2";
|
||||
readonly ForceV1: "forceV1";
|
||||
};
|
||||
export declare const HashAlgorithms: {
|
||||
readonly XXHASH32: "xxhash32";
|
||||
readonly XXHASH64: "xxhash64";
|
||||
readonly MIXED_PUREJS: "mixed-purejs";
|
||||
readonly SHA1: "sha1";
|
||||
readonly LEGACY: "";
|
||||
};
|
||||
export declare const ChunkAlgorithmNames: {
|
||||
readonly v1: "V1: Legacy";
|
||||
readonly v2: "V2: Simple (Default)";
|
||||
readonly "v2-segmenter": "V2.5: Lexical chunks";
|
||||
readonly "v3-rabin-karp": "V3: Fine deduplication";
|
||||
};
|
||||
export declare const ChunkAlgorithms: {
|
||||
readonly V1: "v1";
|
||||
readonly V2: "v2";
|
||||
readonly V2Segmenter: "v2-segmenter";
|
||||
readonly RabinKarp: "v3-rabin-karp";
|
||||
};
|
||||
export declare const MODE_SELECTIVE = 0;
|
||||
export declare const MODE_AUTOMATIC = 1;
|
||||
export declare const MODE_PAUSED = 2;
|
||||
export declare const MODE_SHINY = 3;
|
||||
export declare const NetworkWarningStyles: {
|
||||
readonly BANNER: "";
|
||||
readonly ICON: "icon";
|
||||
readonly HIDDEN: "hidden";
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
import { type ObsidianLiveSyncSettings, type P2PSyncSetting } from "./setting.type";
|
||||
export declare const P2P_DEFAULT_SETTINGS: P2PSyncSetting;
|
||||
export declare const DEFAULT_SETTINGS: ObsidianLiveSyncSettings;
|
||||
@@ -0,0 +1,5 @@
|
||||
import type { ObsidianLiveSyncSettings } from "./setting.type";
|
||||
export declare const PREFERRED_BASE: Partial<ObsidianLiveSyncSettings>;
|
||||
export declare const PREFERRED_SETTING_CLOUDANT: Partial<ObsidianLiveSyncSettings>;
|
||||
export declare const PREFERRED_SETTING_SELF_HOSTED: Partial<ObsidianLiveSyncSettings>;
|
||||
export declare const PREFERRED_JOURNAL_SYNC: Partial<ObsidianLiveSyncSettings>;
|
||||
@@ -0,0 +1,2 @@
|
||||
import type { ObsidianLiveSyncSettings } from "./setting.type";
|
||||
export declare const KeyIndexOfSettings: Record<keyof ObsidianLiveSyncSettings, number>;
|
||||
+893
@@ -0,0 +1,893 @@
|
||||
import type { ChunkAlgorithms, E2EEAlgorithms, HashAlgorithms, MODE_AUTOMATIC, MODE_PAUSED, MODE_SELECTIVE, MODE_SHINY, RemoteTypes } from "./setting.const";
|
||||
import type { I18N_LANGS } from "@lib/common/rosetta";
|
||||
import type { CustomRegExpSourceList } from "./shared.type.util";
|
||||
import type { JWTAlgorithm } from "./auth.type";
|
||||
/**
|
||||
* Represents the connection details required to connect to a CouchDB instance.
|
||||
*/
|
||||
export interface CouchDBConnection {
|
||||
/**
|
||||
* The URI of the CouchDB instance.
|
||||
*/
|
||||
couchDB_URI: string;
|
||||
/**
|
||||
* The username to use when connecting to the CouchDB instance.
|
||||
*/
|
||||
couchDB_USER: string;
|
||||
/**
|
||||
* The password to use when connecting to the CouchDB instance.
|
||||
*/
|
||||
couchDB_PASSWORD: string;
|
||||
/**
|
||||
* The name of the database to use.
|
||||
*/
|
||||
couchDB_DBNAME: string;
|
||||
/**
|
||||
* e.g. `x-some-header: some-value\n x-some-header2: some-value2`
|
||||
*/
|
||||
couchDB_CustomHeaders: string;
|
||||
useJWT: boolean;
|
||||
jwtAlgorithm: JWTAlgorithm;
|
||||
jwtKey: string;
|
||||
jwtKid: string;
|
||||
jwtSub: string;
|
||||
jwtExpDuration: number;
|
||||
/**
|
||||
* Use Request API to avoid `inevitable` CORS problem.
|
||||
* Seems stable, so promoted to the normal setting.
|
||||
*/
|
||||
useRequestAPI: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for periodic replication.
|
||||
*/
|
||||
interface PeriodicReplicationSettings {
|
||||
/**
|
||||
* Indicates whether periodic replication is enabled.
|
||||
*/
|
||||
periodicReplication: boolean;
|
||||
/**
|
||||
* The interval, in milliseconds, at which periodic replication occurs.
|
||||
*/
|
||||
periodicReplicationInterval: number;
|
||||
}
|
||||
export type ConfigPassphraseStore = "" | "LOCALSTORAGE" | "ASK_AT_LAUNCH";
|
||||
/**
|
||||
* Represents the user settings that are encrypted.
|
||||
*/
|
||||
interface EncryptedUserSettings {
|
||||
/**
|
||||
* The store for the configuration passphrase.
|
||||
*/
|
||||
configPassphraseStore: ConfigPassphraseStore;
|
||||
/**
|
||||
* The encrypted passphrase used for E2EE.
|
||||
*/
|
||||
encryptedPassphrase: string;
|
||||
/**
|
||||
* The encrypted connection details for CouchDB.
|
||||
*/
|
||||
encryptedCouchDBConnection: string;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for different sync invocation methods.
|
||||
*/
|
||||
interface SyncMethodSettings {
|
||||
/**
|
||||
* Synchronise in Live. This is an exclusive setting against other sync methods.
|
||||
*/
|
||||
liveSync: boolean;
|
||||
/**
|
||||
* automatically run sync on save.
|
||||
* File modification will trigger the sync, even if the file is not changed on the editor.
|
||||
*/
|
||||
syncOnSave: boolean;
|
||||
/**
|
||||
* automatically run sync on starting the plug-in.
|
||||
*/
|
||||
syncOnStart: boolean;
|
||||
/**
|
||||
* automatically run sync on opening a file.
|
||||
*/
|
||||
syncOnFileOpen: boolean;
|
||||
/**
|
||||
* automatically run sync on editor save.
|
||||
* Different from syncOnSave, this is only reacts to the editor save event.
|
||||
*/
|
||||
syncOnEditorSave: boolean;
|
||||
/**
|
||||
* The minimum delay between synchronisation operations (in milliseconds).
|
||||
* If the operation is triggered before this delay, the operation will be delayed until the delay is over, and executed as a single operation.
|
||||
*/
|
||||
syncMinimumInterval: number;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for file handling.
|
||||
*/
|
||||
interface FileHandlingSettings {
|
||||
/**
|
||||
* Use trash instead of actually delete.
|
||||
*/
|
||||
trashInsteadDelete: boolean;
|
||||
/**
|
||||
* Do not delete the folder even if it has got empty.
|
||||
*/
|
||||
doNotDeleteFolder: boolean;
|
||||
/**
|
||||
* Thinning out the changes and make a single change for the same file.
|
||||
*/
|
||||
batchSave: boolean;
|
||||
batchSaveMinimumDelay: number;
|
||||
batchSaveMaximumDelay: number;
|
||||
/**
|
||||
* Maximum size of the file to be synchronized (in MB).
|
||||
*/
|
||||
syncMaxSizeInMB: number;
|
||||
/**
|
||||
* Use ignore files.
|
||||
*/
|
||||
useIgnoreFiles: boolean;
|
||||
/**
|
||||
* Ignore files pattern, i,e, `.gitignore, .obsidianignore` (This should be separated by comma)
|
||||
*/
|
||||
ignoreFiles: string;
|
||||
/**
|
||||
* Do not prevent write if the size is mismatched.
|
||||
*/
|
||||
processSizeMismatchedFiles: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for Hidden File Sync.
|
||||
*/
|
||||
interface InternalFileSettings {
|
||||
/**
|
||||
* Synchronise internal files.
|
||||
*/
|
||||
syncInternalFiles: boolean;
|
||||
/**
|
||||
* Scan internal files before replication.
|
||||
*/
|
||||
syncInternalFilesBeforeReplication: boolean;
|
||||
/**
|
||||
* Interval for scanning internal files (in seconds).
|
||||
*/
|
||||
syncInternalFilesInterval: number;
|
||||
/**
|
||||
* Ignore patterns for internal files.
|
||||
* (Comma separated list of regular expressions)
|
||||
*/
|
||||
syncInternalFilesIgnorePatterns: CustomRegExpSourceList<",">;
|
||||
/**
|
||||
* Limit patterns for internal files.
|
||||
*/
|
||||
syncInternalFilesTargetPatterns: CustomRegExpSourceList<",">;
|
||||
/**
|
||||
* Enable watch internal file changes (This option uses the unexposed API)
|
||||
*/
|
||||
watchInternalFileChanges: boolean;
|
||||
/**
|
||||
* Suppress notification of hidden files change.
|
||||
*/
|
||||
suppressNotifyHiddenFilesChange: boolean;
|
||||
/**
|
||||
* Overwrite instead of merging patterns for internal files.
|
||||
*/
|
||||
syncInternalFileOverwritePatterns: CustomRegExpSourceList<",">;
|
||||
}
|
||||
export type SYNC_MODE = typeof MODE_SELECTIVE | typeof MODE_AUTOMATIC | typeof MODE_PAUSED | typeof MODE_SHINY;
|
||||
export interface PluginSyncSettingEntry {
|
||||
key: string;
|
||||
mode: SYNC_MODE;
|
||||
files: string[];
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for plugin synchronisation.
|
||||
*/
|
||||
interface PluginSyncSettings {
|
||||
/**
|
||||
* Indicates whether plugin synchronisation is enabled.
|
||||
*/
|
||||
usePluginSync: boolean;
|
||||
/**
|
||||
* Indicates whether plugin settings synchronisation is enabled.
|
||||
*/
|
||||
usePluginSettings: boolean;
|
||||
/**
|
||||
* Indicates whether to show the device's own plugins.
|
||||
*/
|
||||
showOwnPlugins: boolean;
|
||||
/**
|
||||
* Indicates whether to automatically scan plugins.
|
||||
*/
|
||||
autoSweepPlugins: boolean;
|
||||
/**
|
||||
* Indicates whether to periodically scan plugins automatically.
|
||||
*/
|
||||
autoSweepPluginsPeriodic: boolean;
|
||||
/**
|
||||
* Indicates whether to notify when a plugin or setting is updated.
|
||||
*/
|
||||
notifyPluginOrSettingUpdated: boolean;
|
||||
/**
|
||||
* The name of the device and vault.
|
||||
* This is used to identify the device and vault among synchronised devices and vaults.
|
||||
* Hence, this should be unique among devices and vaults.
|
||||
*/
|
||||
deviceAndVaultName: string;
|
||||
/**
|
||||
* Indicates whether the v2 of plugin synchronisation is enabled.
|
||||
*/
|
||||
usePluginSyncV2: boolean;
|
||||
/**
|
||||
* Indicates whether additional plugin synchronisation settings are enabled.
|
||||
* This setting is hidden from the UI.
|
||||
*/
|
||||
usePluginEtc: boolean;
|
||||
/**
|
||||
* Extended settings for plugin synchronisation.
|
||||
*/
|
||||
pluginSyncExtendedSetting: Record<PluginSyncSettingEntry["key"], PluginSyncSettingEntry>;
|
||||
}
|
||||
/**
|
||||
* Interface representing the user interface settings.
|
||||
*/
|
||||
interface UISettings {
|
||||
/**
|
||||
* Indicates whether verbose logging has been enabled.
|
||||
*/
|
||||
showVerboseLog: boolean;
|
||||
/**
|
||||
* Indicates whether less information should be shown in the log.
|
||||
*/
|
||||
lessInformationInLog: boolean;
|
||||
/**
|
||||
* Indicates whether longer status line should be shown inside the editor.
|
||||
*/
|
||||
showLongerLogInsideEditor: boolean;
|
||||
/**
|
||||
* Indicates whether the status line should be shown on the editor.
|
||||
*/
|
||||
showStatusOnEditor: boolean;
|
||||
/**
|
||||
* Indicates whether the status line should be shown on the status bar.
|
||||
*/
|
||||
showStatusOnStatusbar: boolean;
|
||||
/**
|
||||
* Indicates whether only icons instead of status line should be shown on the editor.
|
||||
*/
|
||||
showOnlyIconsOnEditor: boolean;
|
||||
/**
|
||||
* Hide File warning notice bar.
|
||||
*/
|
||||
hideFileWarningNotice: boolean;
|
||||
/**
|
||||
* How to display connection error warnings.
|
||||
* "banner" shows the full banner, "icon" shows only an icon, "hidden" suppresses entirely.
|
||||
*/
|
||||
networkWarningStyle: "" | "icon" | "hidden";
|
||||
/**
|
||||
* The language to be used for display.
|
||||
*/
|
||||
displayLanguage: I18N_LANGS;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for mode of exposing advanced things.
|
||||
*/
|
||||
interface ModeSettings {
|
||||
/**
|
||||
* Indicates whether the advanced mode is enabled.
|
||||
*/
|
||||
useAdvancedMode: boolean;
|
||||
/**
|
||||
* Indicates whether the power user mode is enabled.
|
||||
*/
|
||||
usePowerUserMode: boolean;
|
||||
/**
|
||||
* Indicates whether the edge case mode is enabled.
|
||||
*/
|
||||
useEdgeCaseMode: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for debug mode.
|
||||
*/
|
||||
interface DebugModeSettings {
|
||||
/**
|
||||
* Indicates whether the debug tools of Self-hosted LiveSync are enabled.
|
||||
*/
|
||||
enableDebugTools: boolean;
|
||||
/**
|
||||
* Indicates whether to write log to the file.
|
||||
*/
|
||||
writeLogToTheFile: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing additional tweak settings.
|
||||
*/
|
||||
interface ExtraTweakSettings {
|
||||
/**
|
||||
* The threshold value for notifying about the size of remote storage.
|
||||
* When the size of the remote storage exceeds this threshold, a notification will be triggered.
|
||||
*/
|
||||
notifyThresholdOfRemoteStorageSize: number;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for beta tweaks.
|
||||
*/
|
||||
interface BetaTweakSettings {
|
||||
/**
|
||||
* Indicates whether to disable the WebWorker for generating chunks.
|
||||
*/
|
||||
disableWorkerForGeneratingChunks: boolean;
|
||||
/**
|
||||
* Indicates whether to process small files in the UI thread.
|
||||
*/
|
||||
processSmallFilesInUIThread: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for synchronising settings via file.
|
||||
*/
|
||||
interface SettingSyncSettings {
|
||||
/**
|
||||
* The file path where the settings is stored.
|
||||
*/
|
||||
settingSyncFile: string;
|
||||
/**
|
||||
* Indicates whether to write credentials for settings synchronising.
|
||||
*/
|
||||
writeCredentialsForSettingSync: boolean;
|
||||
/**
|
||||
* Indicates whether to notify all settings synchronising files events.
|
||||
*/
|
||||
notifyAllSettingSyncFile: boolean;
|
||||
}
|
||||
/**
|
||||
* Represents settings that are considered obsolete and are not configurable from the UI.
|
||||
*/
|
||||
interface ObsoleteSettings {
|
||||
/**
|
||||
* Saving delay (in milliseconds).
|
||||
*/
|
||||
savingDelay: number;
|
||||
/**
|
||||
* Garbage collection delay (in milliseconds). Now, no longer GC is implemented.
|
||||
*/
|
||||
gcDelay: number;
|
||||
/**
|
||||
* Skip older files on sync. No effect now.
|
||||
*/
|
||||
skipOlderFilesOnSync: boolean;
|
||||
/**
|
||||
* Use the IndexedDB adapter. Now always true. Should be.
|
||||
*/
|
||||
useIndexedDBAdapter: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing some data stored in the settings for the plugin.
|
||||
*/
|
||||
interface DataOnSettings {
|
||||
/**
|
||||
* VersionUp flash message which is shown when some incompatible changes are made during the update.
|
||||
*/
|
||||
versionUpFlash: string;
|
||||
/**
|
||||
* Setting file version, to migrate the settings.
|
||||
*/
|
||||
settingVersion: number;
|
||||
/**
|
||||
* Indicates whether the setting of the plug-in is configured once.
|
||||
*/
|
||||
isConfigured?: boolean;
|
||||
/**
|
||||
* The user-last-read version number.
|
||||
*/
|
||||
lastReadUpdates: number;
|
||||
/**
|
||||
* The last checked version by the doctor.
|
||||
*/
|
||||
doctorProcessedVersion: string;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for a safety valve mechanism.
|
||||
*/
|
||||
interface SafetyValveSettings {
|
||||
/**
|
||||
* Indicates whether file watching should be suspended.
|
||||
*/
|
||||
suspendFileWatching: boolean;
|
||||
/**
|
||||
* Indicates whether parsing and reflecting of replication results should be suspended.
|
||||
*/
|
||||
suspendParseReplicationResult: boolean;
|
||||
/**
|
||||
* Indicates whether suspension should be avoided during fetching operations.
|
||||
*/
|
||||
doNotSuspendOnFetching: boolean;
|
||||
/**
|
||||
* Maximum file modification time applied to reflected file events
|
||||
*/
|
||||
maxMTimeForReflectEvents: number;
|
||||
}
|
||||
/**
|
||||
* Represents the settings required to synchronise with a bucket.
|
||||
*/
|
||||
export interface BucketSyncSetting {
|
||||
/**
|
||||
* The access key to use when connecting to the bucket.
|
||||
*/
|
||||
accessKey: string;
|
||||
/**
|
||||
* The secret to use when connecting to the bucket.
|
||||
*/
|
||||
secretKey: string;
|
||||
/**
|
||||
* The name of bucket to use.
|
||||
*/
|
||||
bucket: string;
|
||||
/**
|
||||
* The region of the bucket.
|
||||
*/
|
||||
region: string;
|
||||
/**
|
||||
* The endpoint of the bucket.
|
||||
*/
|
||||
endpoint: string;
|
||||
/**
|
||||
* Indicates whether to use a custom request handler.
|
||||
* (This is for CORS issue).
|
||||
*/
|
||||
useCustomRequestHandler: boolean;
|
||||
bucketCustomHeaders: string;
|
||||
/**
|
||||
* The prefix to use for the bucket (e.g., "my-bucket/", means mostly like a folder).
|
||||
*/
|
||||
bucketPrefix: string;
|
||||
/**
|
||||
* Indicates whether to force path style access.
|
||||
*/
|
||||
forcePathStyle: boolean;
|
||||
}
|
||||
export interface LocalDBSettings {
|
||||
/**
|
||||
* Indicates whether to use the IndexedDB adapter for the local database.
|
||||
* @deprecated
|
||||
*/
|
||||
useIndexedDBAdapter: boolean;
|
||||
}
|
||||
export type RemoteType = (typeof RemoteTypes)[keyof typeof RemoteTypes];
|
||||
export declare enum AutoAccepting {
|
||||
NONE = 0,
|
||||
ALL = 1
|
||||
}
|
||||
export interface P2PConnectionInfo {
|
||||
/**
|
||||
* Indicates whether P2P connection is enabled.
|
||||
*/
|
||||
P2P_Enabled: boolean;
|
||||
/**
|
||||
* Nostr relay server URL. (Comma separated list)
|
||||
* This is only for the channelling server to establish for the P2P connection.
|
||||
* No data is transferred through this server.
|
||||
*/
|
||||
P2P_relays: string;
|
||||
/**
|
||||
* The room ID for `your devices`. This should be unique among the users.
|
||||
* (Or, lines will be got mixed up).
|
||||
*/
|
||||
P2P_roomID: string;
|
||||
/**
|
||||
* The passphrase for your devices.
|
||||
* It can be empty, but it will help you if you have a duplicate Room ID.
|
||||
*/
|
||||
P2P_passphrase: string;
|
||||
/**
|
||||
* The Application ID for the P2P connection.
|
||||
* This is used to identify the application using the P2P network.
|
||||
* In Self-hosted LiveSync, fixed to "self-hosted-livesync".
|
||||
*/
|
||||
P2P_AppID: string;
|
||||
/**
|
||||
* Indicates whether to auto-start the P2P connection on launch.
|
||||
*/
|
||||
P2P_AutoStart: boolean;
|
||||
/**
|
||||
* Indicates whether to automatically broadcast changes to connected peers.
|
||||
*/
|
||||
P2P_AutoBroadcast: boolean;
|
||||
/**
|
||||
* The name of the device peer (This only for editing-setting purpose, not saved in the actual setting file, due to avoid setting-sync issues).
|
||||
*/
|
||||
P2P_DevicePeerName?: string;
|
||||
/**
|
||||
* The TURN server URLs for the P2P connection. (Comma separated list)
|
||||
*/
|
||||
P2P_turnServers: string;
|
||||
/**
|
||||
* The TURN username for the P2P connection.
|
||||
*/
|
||||
P2P_turnUsername: string;
|
||||
/**
|
||||
* The TURN credential (password, secret, etc...) for the P2P connection.
|
||||
*/
|
||||
P2P_turnCredential: string;
|
||||
/**
|
||||
* Use Diagnostic Wrapper for RTCPeerConnection to collect statistics.
|
||||
*/
|
||||
P2P_useDiagRTC?: boolean;
|
||||
}
|
||||
export interface P2PSyncSetting extends P2PConnectionInfo {
|
||||
P2P_AutoAccepting: AutoAccepting;
|
||||
P2P_AutoSyncPeers: string;
|
||||
P2P_AutoWatchPeers: string;
|
||||
P2P_SyncOnReplication: string;
|
||||
P2P_RebuildFrom: string;
|
||||
P2P_AutoAcceptingPeers: string;
|
||||
P2P_AutoDenyingPeers: string;
|
||||
P2P_IsHeadless?: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for a remote type.
|
||||
*/
|
||||
export interface RemoteTypeSettings {
|
||||
/**
|
||||
* The type of the remote.
|
||||
*/
|
||||
remoteType: RemoteType;
|
||||
}
|
||||
export type E2EEAlgorithm = (typeof E2EEAlgorithms)[keyof typeof E2EEAlgorithms] | "";
|
||||
/**
|
||||
* Represents the settings used for End-to-End encryption.
|
||||
*/
|
||||
export interface EncryptionSettings {
|
||||
/**
|
||||
* Indicates whether E2EE is enabled.
|
||||
*/
|
||||
encrypt: boolean;
|
||||
/**
|
||||
* The passphrase used for E2EE.
|
||||
*/
|
||||
passphrase: string;
|
||||
/**
|
||||
* Indicates whether path obfuscation is used.
|
||||
* If not, the path will be stored as it is, as the document ID.
|
||||
*/
|
||||
usePathObfuscation: boolean;
|
||||
/**
|
||||
* The algorithm used for hashing the passphrase.
|
||||
* This is used for E2EE.
|
||||
*/
|
||||
E2EEAlgorithm: E2EEAlgorithm;
|
||||
}
|
||||
export type HashAlgorithm = (typeof HashAlgorithms)[keyof typeof HashAlgorithms];
|
||||
export type ChunkSplitterVersion = (typeof ChunkAlgorithms)[keyof typeof ChunkAlgorithms] | "";
|
||||
/**
|
||||
* Interface representing the settings for chunk processing.
|
||||
*/
|
||||
interface ChunkSettings {
|
||||
/**
|
||||
* The algorithm used for hashing chunks.
|
||||
*/
|
||||
hashAlg: HashAlgorithm;
|
||||
/**
|
||||
* The minimum size of a chunk in chars.
|
||||
*/
|
||||
minimumChunkSize: number;
|
||||
/**
|
||||
* The custom size of a chunk.
|
||||
* Note: This value used as a coefficient for the normal chunk size.
|
||||
*/
|
||||
customChunkSize: number;
|
||||
/**
|
||||
* The threshold for considering a line as long.
|
||||
* (Not respected in v0.24.x).
|
||||
*/
|
||||
longLineThreshold: number;
|
||||
/**
|
||||
* Flag indicating whether to use a segmenter for chunking.
|
||||
* @deprecated use chunkSplitterVersion instead.
|
||||
*/
|
||||
useSegmenter: boolean;
|
||||
/**
|
||||
* Flag indicating whether to enable version 2 of the chunk splitter.
|
||||
* @deprecated use chunkSplitterVersion instead.
|
||||
*/
|
||||
enableChunkSplitterV2: boolean;
|
||||
/**
|
||||
* Flag indicating whether to avoid using a fixed revision for chunks.
|
||||
*/
|
||||
doNotUseFixedRevisionForChunks: boolean;
|
||||
/**
|
||||
* The version of the chunk splitter to use.
|
||||
*/
|
||||
chunkSplitterVersion: ChunkSplitterVersion;
|
||||
}
|
||||
/**
|
||||
* Settings for on-demand chunk fetching.
|
||||
*/
|
||||
interface OnDemandChunkSettings {
|
||||
/**
|
||||
* Indicates whether chunks should be fetch online. (means replication transfers only metadata).
|
||||
*/
|
||||
readChunksOnline: boolean;
|
||||
/**
|
||||
* Indicates whether to use only local chunks without fetching online.
|
||||
*/
|
||||
useOnlyLocalChunk: boolean;
|
||||
/**
|
||||
* The number of concurrent chunk reads allowed when fetching online.
|
||||
*/
|
||||
concurrencyOfReadChunksOnline: number;
|
||||
/**
|
||||
* The minimum interval (in milliseconds) between consecutive online chunk fetching.
|
||||
*/
|
||||
minimumIntervalOfReadChunksOnline: number;
|
||||
}
|
||||
/**
|
||||
* Configuration settings for Eden.
|
||||
*/
|
||||
interface EdenSettings {
|
||||
/**
|
||||
* Indicates whether Eden is enabled.
|
||||
*/
|
||||
useEden: boolean;
|
||||
/**
|
||||
* The maximum number of chunks allowed in Eden.
|
||||
*/
|
||||
maxChunksInEden: number;
|
||||
/**
|
||||
* The maximum total length allowed in Eden.
|
||||
*/
|
||||
maxTotalLengthInEden: number;
|
||||
/**
|
||||
* The maximum age allowed in Eden.
|
||||
*/
|
||||
maxAgeInEden: number;
|
||||
}
|
||||
/**
|
||||
* Interface representing obsolete settings for an remote database.
|
||||
*/
|
||||
interface ObsoleteRemoteDBSettings {
|
||||
/**
|
||||
* Indicates whether to check the integrity of the data on save.
|
||||
*/
|
||||
checkIntegrityOnSave: boolean;
|
||||
/**
|
||||
* Indicates whether to use history tracking.
|
||||
* (Now always true)
|
||||
*/
|
||||
useHistory: boolean;
|
||||
/**
|
||||
* Indicates whether to disable using API of Obsidian.
|
||||
* (Now always true: Note: Obsidian cannot handle multiple requests at the same time).
|
||||
*/
|
||||
disableRequestURI: boolean;
|
||||
/**
|
||||
* Indicates whether to send data in bulk chunks.
|
||||
*/
|
||||
sendChunksBulk: boolean;
|
||||
/**
|
||||
* The maximum size of the bulk chunks to be sent.
|
||||
*/
|
||||
sendChunksBulkMaxSize: number;
|
||||
/**
|
||||
* Indicates whether to use a dynamic iteration count.
|
||||
*/
|
||||
useDynamicIterationCount: boolean;
|
||||
/**
|
||||
* Indicates weather to pace the replication processing interval.
|
||||
* Now (v0.24.x) not be respected.
|
||||
*/
|
||||
doNotPaceReplication: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for beta tweaks for the remote database.
|
||||
*/
|
||||
interface BetaRemoteDBSettings {
|
||||
/**
|
||||
* Indicates whether compression is enabled for the remote database.
|
||||
*/
|
||||
enableCompression: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the some data stored on the settings.
|
||||
*/
|
||||
interface DataOnRemoteDBSettings {
|
||||
/**
|
||||
* VersionUp flash message which is shown when some incompatible changes are made during the update.
|
||||
*/
|
||||
versionUpFlash: string;
|
||||
/**
|
||||
* Unix timestamp (ms) of the latest tweak update.
|
||||
* Used to determine which side has newer tweak values.
|
||||
*/
|
||||
tweakModified: number | undefined;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for replication.
|
||||
*/
|
||||
interface ReplicationSetting {
|
||||
/**
|
||||
* The maximum number of documents to be processed in a batch.
|
||||
*/
|
||||
batch_size: number;
|
||||
/**
|
||||
* The maximum number of batches to be processed.
|
||||
*/
|
||||
batches_limit: number;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for targetting files.
|
||||
*/
|
||||
interface FileHandlingSettings {
|
||||
/**
|
||||
* The regular expression for files to be synchronised.
|
||||
*/
|
||||
syncOnlyRegEx: CustomRegExpSourceList<"|[]|">;
|
||||
/**
|
||||
* The regular expression for files to be ignored during synchronisation.
|
||||
*/
|
||||
syncIgnoreRegEx: CustomRegExpSourceList<"|[]|">;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for processing behaviour.
|
||||
*/
|
||||
interface ProcessingBehaviourSettings {
|
||||
/**
|
||||
* Hash cache maximum count.
|
||||
*/
|
||||
hashCacheMaxCount: number;
|
||||
/**
|
||||
* Hash cache maximum amount.
|
||||
*/
|
||||
hashCacheMaxAmount: number;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for remote database tweaks.
|
||||
*/
|
||||
interface RemoteDBTweakSettings {
|
||||
/**
|
||||
* Indicates whether to ignore the version check.
|
||||
*/
|
||||
ignoreVersionCheck: boolean;
|
||||
/**
|
||||
* Indicates whether to ignore and continue syncing even if the configuration-mismatch is detected.
|
||||
* (Note: Mismatched settings can lead to inappropriate de-duplication, leading to storage wastage and increased traffic).
|
||||
*/
|
||||
disableCheckingConfigMismatch: boolean;
|
||||
/**
|
||||
* Automatically accepts compatible-but-lossy tweak mismatches.
|
||||
* If undefined, the feature is not configured yet.
|
||||
*/
|
||||
autoAcceptCompatibleTweak: boolean | undefined;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for optional and not exposed remote database settings.
|
||||
*/
|
||||
interface OptionalAndNotExposedRemoteDBSettings {
|
||||
/**
|
||||
* Indicates whether to accept empty passphrase.
|
||||
* This not meant to `Not be encrypted`, but `Be encrypted with empty passphrase`.
|
||||
*/
|
||||
permitEmptyPassphrase: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for cross-platform interoperability.
|
||||
*/
|
||||
interface CrossPlatformInteroperabilitySettings {
|
||||
/**
|
||||
* Indicates whether to handle filename case sensitively.
|
||||
*/
|
||||
handleFilenameCaseSensitive: boolean;
|
||||
}
|
||||
/**
|
||||
* Interface representing the settings for conflict handling.
|
||||
*/
|
||||
interface ConflictHandlingSettings {
|
||||
/**
|
||||
* Indicates whether to check conflicts only on file open.
|
||||
*/
|
||||
checkConflictOnlyOnOpen: boolean;
|
||||
/**
|
||||
* Indicates whether to show the merge dialog only on active file.
|
||||
*/
|
||||
showMergeDialogOnlyOnActive: boolean;
|
||||
}
|
||||
/**
|
||||
* Settings that define the behavior of the merge process.
|
||||
*/
|
||||
interface MergeBehaviourSettings {
|
||||
/**
|
||||
* Indicates whether to synchronise after merging.
|
||||
*/
|
||||
syncAfterMerge: boolean;
|
||||
/**
|
||||
* Determines if conflicts should be resolved by choosing the newer file.
|
||||
*/
|
||||
resolveConflictsByNewerFile: boolean;
|
||||
/**
|
||||
* Specifies whether to write documents even if there are conflicts.
|
||||
*/
|
||||
writeDocumentsIfConflicted: boolean;
|
||||
/**
|
||||
* Disables automatic merging of markdown files.
|
||||
*/
|
||||
disableMarkdownAutoMerge: boolean;
|
||||
}
|
||||
/**
|
||||
* Configuration settings for handling edge cases in the application.
|
||||
*/
|
||||
interface EdgeCaseHandlingSettings {
|
||||
/**
|
||||
* An optional suffix to append to the database name after the vault name.
|
||||
*/
|
||||
additionalSuffixOfDatabaseName: string | undefined;
|
||||
/**
|
||||
* Flag to disable the worker thread for generating chunks.
|
||||
*/
|
||||
disableWorkerForGeneratingChunks: boolean;
|
||||
/**
|
||||
* Flag to process small files in the UI thread instead of a worker thread.
|
||||
*/
|
||||
processSmallFilesInUIThread: boolean;
|
||||
/**
|
||||
* Indicates whether to use timeout for PouchDB replication.
|
||||
*/
|
||||
useTimeouts: boolean;
|
||||
}
|
||||
/**
|
||||
* Configuration settings for handling deleted files.
|
||||
*/
|
||||
interface DeletedFileMetadataSettings {
|
||||
/**
|
||||
* Indicates whether to delete metadata of deleted files.
|
||||
*/
|
||||
deleteMetadataOfDeletedFiles: boolean;
|
||||
/**
|
||||
* The number of days to wait before automatically deleting metadata of deleted files.
|
||||
*/
|
||||
automaticallyDeleteMetadataOfDeletedFiles: number;
|
||||
}
|
||||
/**
|
||||
* Represents a single remote configuration.
|
||||
*/
|
||||
export interface RemoteConfiguration {
|
||||
/**
|
||||
* Unique identifier for this configuration.
|
||||
*/
|
||||
id: string;
|
||||
/**
|
||||
* Display name for the configuration.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The connection string (URI) for the remote.
|
||||
* This may be an encrypted string if configPassphraseStore is set.
|
||||
*/
|
||||
uri: string;
|
||||
/**
|
||||
* Indicates whether this configuration is encrypted.
|
||||
*/
|
||||
isEncrypted: boolean;
|
||||
}
|
||||
export interface RemoteConfigurations {
|
||||
/**
|
||||
* The list of remote configurations.
|
||||
*/
|
||||
remoteConfigurations: Record<string, RemoteConfiguration>;
|
||||
/**
|
||||
* The ID of the currently active remote configuration.
|
||||
*/
|
||||
activeConfigurationId: string;
|
||||
/**
|
||||
* The ID of the active remote configuration dedicated for P2P features.
|
||||
* If empty, P2P features should request explicit selection from the user.
|
||||
*/
|
||||
P2P_ActiveRemoteConfigurationId: string;
|
||||
}
|
||||
interface ObsidianLiveSyncSettings_PluginSetting extends SyncMethodSettings, UISettings, FileHandlingSettings, MergeBehaviourSettings, EncryptedUserSettings, PeriodicReplicationSettings, InternalFileSettings, PluginSyncSettings, ModeSettings, ExtraTweakSettings, BetaTweakSettings, ObsoleteSettings, DebugModeSettings, SettingSyncSettings, SafetyValveSettings, DataOnSettings, RemoteConfigurations {
|
||||
}
|
||||
export type RemoteDBSettings = CouchDBConnection & BucketSyncSetting & RemoteTypeSettings & EncryptionSettings & ChunkSettings & EdenSettings & DataOnRemoteDBSettings & ObsoleteRemoteDBSettings & OnDemandChunkSettings & BetaRemoteDBSettings & ReplicationSetting & RemoteDBTweakSettings & FileHandlingSettings & ProcessingBehaviourSettings & OptionalAndNotExposedRemoteDBSettings & CrossPlatformInteroperabilitySettings & ConflictHandlingSettings & EdgeCaseHandlingSettings & DeletedFileMetadataSettings & P2PSyncSetting & RemoteConfigurations;
|
||||
export type ObsidianLiveSyncSettings = ObsidianLiveSyncSettings_PluginSetting & RemoteDBSettings & LocalDBSettings;
|
||||
export interface HasSettings<T extends Partial<ObsidianLiveSyncSettings>> {
|
||||
settings: T;
|
||||
}
|
||||
export {};
|
||||
@@ -0,0 +1,28 @@
|
||||
export declare const MAX_DOC_SIZE = 1000;
|
||||
export declare const MAX_DOC_SIZE_BIN = 102400;
|
||||
export declare const VER = 12;
|
||||
export declare const RECENT_MODIFIED_DOCS_QTY = 30;
|
||||
export declare const LEAF_WAIT_TIMEOUT = 30000;
|
||||
export declare const LEAF_WAIT_ONLY_REMOTE = 5000;
|
||||
export declare const LEAF_WAIT_TIMEOUT_SEQUENTIAL_REPLICATOR = 5000;
|
||||
export declare const REPLICATION_BUSY_TIMEOUT = 3000000;
|
||||
export declare const SALT_OF_PASSPHRASE = "rHGMPtr6oWw7VSa3W3wpa8fT8U";
|
||||
export declare const SALT_OF_ID = "a83hrf7f\u0003y7sa8g31";
|
||||
export declare const SEED_MURMURHASH = 305419896;
|
||||
export declare const IDPrefixes: {
|
||||
Obfuscated: string;
|
||||
Chunk: string;
|
||||
EncryptedChunk: string;
|
||||
};
|
||||
/**
|
||||
* @deprecated Use `IDPrefixes.Obfuscated` instead.
|
||||
*/
|
||||
export declare const PREFIX_OBFUSCATED = "f:";
|
||||
/**
|
||||
* @deprecated Use `IDPrefixes.Chunk` instead.
|
||||
*/
|
||||
export declare const PREFIX_CHUNK = "h:";
|
||||
/**
|
||||
* @deprecated Use `IDPrefixes.EncryptedChunk` instead.
|
||||
*/
|
||||
export declare const PREFIX_ENCRYPTED_CHUNK = "h:+";
|
||||
@@ -0,0 +1,5 @@
|
||||
export declare const SETTING_KEY_P2P_DEVICE_NAME = "p2p_device_name";
|
||||
export declare const configURIBase = "obsidian://setuplivesync?settings=";
|
||||
export declare const configURIBaseQR = "obsidian://setuplivesync?settingsQR=";
|
||||
export declare const SuffixDatabaseName = "-livesync-v2";
|
||||
export declare const ExtraSuffixIndexedDB = "-indexeddb";
|
||||
@@ -0,0 +1,9 @@
|
||||
export declare const CANCELLED: unique symbol;
|
||||
export declare const AUTO_MERGED: unique symbol;
|
||||
export declare const NOT_CONFLICTED: unique symbol;
|
||||
export declare const MISSING_OR_ERROR: unique symbol;
|
||||
export declare const LEAVE_TO_SUBSEQUENT: unique symbol;
|
||||
export declare const TIME_ARGUMENT_INFINITY: unique symbol;
|
||||
export declare const BASE_IS_NEW: unique symbol;
|
||||
export declare const TARGET_IS_NEW: unique symbol;
|
||||
export declare const EVEN: unique symbol;
|
||||
@@ -0,0 +1,36 @@
|
||||
import type { ObsidianLiveSyncSettings } from "./setting.type";
|
||||
export declare const LEVEL_ADVANCED = "ADVANCED";
|
||||
export declare const LEVEL_POWER_USER = "POWER_USER";
|
||||
export declare const LEVEL_EDGE_CASE = "EDGE_CASE";
|
||||
export type ConfigLevel = "" | "ADVANCED" | "POWER_USER" | "EDGE_CASE";
|
||||
export type ConfigurationItem = {
|
||||
name: string;
|
||||
desc?: string;
|
||||
placeHolder?: string;
|
||||
status?: "BETA" | "ALPHA" | "EXPERIMENTAL";
|
||||
obsolete?: boolean;
|
||||
level?: ConfigLevel;
|
||||
isHidden?: boolean;
|
||||
isAdvanced?: boolean;
|
||||
};
|
||||
export declare const configurationNames: Partial<Record<keyof ObsidianLiveSyncSettings, ConfigurationItem>>;
|
||||
/**
|
||||
* Get human readable Configuration stability
|
||||
* @param status
|
||||
* @returns
|
||||
*/
|
||||
export declare function statusDisplay(status?: string): string;
|
||||
/**
|
||||
* Get human readable configuration name.
|
||||
* @param key configuration key
|
||||
* @param alt
|
||||
* @returns
|
||||
*/
|
||||
export declare function confName(key: keyof ObsidianLiveSyncSettings, alt?: string): string;
|
||||
/**
|
||||
* Get human readable configuration description.
|
||||
* @param key configuration key
|
||||
* @param alt
|
||||
* @returns
|
||||
*/
|
||||
export declare function confDesc(key: keyof ObsidianLiveSyncSettings, alt?: string): string | undefined;
|
||||
@@ -0,0 +1,22 @@
|
||||
export declare const DatabaseConnectingStatuses: {
|
||||
readonly STARTED: "STARTED";
|
||||
readonly NOT_CONNECTED: "NOT_CONNECTED";
|
||||
readonly PAUSED: "PAUSED";
|
||||
readonly CONNECTED: "CONNECTED";
|
||||
readonly COMPLETED: "COMPLETED";
|
||||
readonly CLOSED: "CLOSED";
|
||||
readonly ERRORED: "ERRORED";
|
||||
readonly JOURNAL_SEND: "JOURNAL_SEND";
|
||||
readonly JOURNAL_RECEIVE: "JOURNAL_RECEIVE";
|
||||
};
|
||||
export type DatabaseConnectingStatus = (typeof DatabaseConnectingStatuses)[keyof typeof DatabaseConnectingStatuses];
|
||||
export type ReplicationStatics = {
|
||||
sent: number;
|
||||
arrived: number;
|
||||
maxPullSeq: number;
|
||||
maxPushSeq: number;
|
||||
lastSyncPullSeq: number;
|
||||
lastSyncPushSeq: number;
|
||||
syncStatus: DatabaseConnectingStatus;
|
||||
};
|
||||
export declare const DEFAULT_REPLICATION_STATICS: ReplicationStatics;
|
||||
@@ -0,0 +1,8 @@
|
||||
import type { TaggedType } from "octagonal-wheels/common/types";
|
||||
export type { TaggedType };
|
||||
export type CustomRegExpSource = TaggedType<string, "CustomRegExp">;
|
||||
export type CustomRegExpSourceList<D extends string = ","> = TaggedType<string, `CustomRegExpList${D}`>;
|
||||
export type ParsedCustomRegExp = [isInverted: boolean, pattern: string];
|
||||
export type Prettify<T> = {
|
||||
[K in keyof T]: T[K];
|
||||
} & {};
|
||||
@@ -0,0 +1,18 @@
|
||||
import { EntryTypes } from "./db.const";
|
||||
import type { DatabaseEntry, DocumentID } from "./db.type";
|
||||
export declare const ProtocolVersions: {
|
||||
readonly UNSET: undefined;
|
||||
readonly LEGACY: 1;
|
||||
readonly ADVANCED_E2EE: 2;
|
||||
};
|
||||
export type ProtocolVersion = (typeof ProtocolVersions)[keyof typeof ProtocolVersions];
|
||||
export declare const DOCID_SYNC_PARAMETERS: DocumentID;
|
||||
export declare const DOCID_JOURNAL_SYNC_PARAMETERS: DocumentID;
|
||||
export interface SyncParameters extends DatabaseEntry {
|
||||
_id: typeof DOCID_SYNC_PARAMETERS;
|
||||
_rev?: string;
|
||||
type: (typeof EntryTypes)["SYNC_PARAMETERS"];
|
||||
protocolVersion: ProtocolVersion;
|
||||
pbkdf2salt: string;
|
||||
}
|
||||
export declare const DEFAULT_SYNC_PARAMETERS: SyncParameters;
|
||||
+190
@@ -0,0 +1,190 @@
|
||||
import type { ObsidianLiveSyncSettings } from "./setting.type";
|
||||
export declare const TweakValuesShouldMatchedTemplate: Partial<ObsidianLiveSyncSettings>;
|
||||
type TweakKeys = keyof TweakValues;
|
||||
export declare const IncompatibleChanges: TweakKeys[];
|
||||
export declare const CompatibleButLossyChanges: TweakKeys[];
|
||||
type IncompatibleRecommendationPatterns<T extends TweakKeys> = {
|
||||
key: T;
|
||||
isRecommendation?: boolean;
|
||||
} & ({
|
||||
from: TweakValues[T];
|
||||
to: TweakValues[T];
|
||||
} | {
|
||||
from: TweakValues[T];
|
||||
} | {
|
||||
to: TweakValues[T];
|
||||
});
|
||||
export declare const IncompatibleChangesInSpecificPattern: IncompatibleRecommendationPatterns<TweakKeys>[];
|
||||
export declare const TweakValuesRecommendedTemplate: Partial<ObsidianLiveSyncSettings>;
|
||||
export declare const TweakValuesDefault: Partial<ObsidianLiveSyncSettings>;
|
||||
export declare const TweakValuesTemplate: {
|
||||
tweakModified: number;
|
||||
liveSync?: boolean | undefined;
|
||||
syncOnSave?: boolean | undefined;
|
||||
syncOnStart?: boolean | undefined;
|
||||
syncOnFileOpen?: boolean | undefined;
|
||||
syncOnEditorSave?: boolean | undefined;
|
||||
syncMinimumInterval?: number | undefined;
|
||||
showVerboseLog?: boolean | undefined;
|
||||
lessInformationInLog?: boolean | undefined;
|
||||
showLongerLogInsideEditor?: boolean | undefined;
|
||||
showStatusOnEditor?: boolean | undefined;
|
||||
showStatusOnStatusbar?: boolean | undefined;
|
||||
showOnlyIconsOnEditor?: boolean | undefined;
|
||||
hideFileWarningNotice?: boolean | undefined;
|
||||
networkWarningStyle?: "" | "icon" | "hidden" | undefined;
|
||||
displayLanguage?: import("../rosetta").I18N_LANGS | undefined;
|
||||
trashInsteadDelete?: boolean | undefined;
|
||||
doNotDeleteFolder?: boolean | undefined;
|
||||
batchSave?: boolean | undefined;
|
||||
batchSaveMinimumDelay?: number | undefined;
|
||||
batchSaveMaximumDelay?: number | undefined;
|
||||
syncMaxSizeInMB?: number | undefined;
|
||||
useIgnoreFiles?: boolean | undefined;
|
||||
ignoreFiles?: string | undefined;
|
||||
processSizeMismatchedFiles?: boolean | undefined;
|
||||
syncOnlyRegEx?: import("./shared.type.util").CustomRegExpSourceList<"|[]|"> | undefined;
|
||||
syncIgnoreRegEx?: import("./shared.type.util").CustomRegExpSourceList<"|[]|"> | undefined;
|
||||
syncAfterMerge?: boolean | undefined;
|
||||
resolveConflictsByNewerFile?: boolean | undefined;
|
||||
writeDocumentsIfConflicted?: boolean | undefined;
|
||||
disableMarkdownAutoMerge?: boolean | undefined;
|
||||
configPassphraseStore?: import("./setting.type").ConfigPassphraseStore | undefined;
|
||||
encryptedPassphrase?: string | undefined;
|
||||
encryptedCouchDBConnection?: string | undefined;
|
||||
periodicReplication?: boolean | undefined;
|
||||
periodicReplicationInterval?: number | undefined;
|
||||
syncInternalFiles?: boolean | undefined;
|
||||
syncInternalFilesBeforeReplication?: boolean | undefined;
|
||||
syncInternalFilesInterval?: number | undefined;
|
||||
syncInternalFilesIgnorePatterns?: import("./shared.type.util").CustomRegExpSourceList<","> | undefined;
|
||||
syncInternalFilesTargetPatterns?: import("./shared.type.util").CustomRegExpSourceList<","> | undefined;
|
||||
watchInternalFileChanges?: boolean | undefined;
|
||||
suppressNotifyHiddenFilesChange?: boolean | undefined;
|
||||
syncInternalFileOverwritePatterns?: import("./shared.type.util").CustomRegExpSourceList<","> | undefined;
|
||||
usePluginSync?: boolean | undefined;
|
||||
usePluginSettings?: boolean | undefined;
|
||||
showOwnPlugins?: boolean | undefined;
|
||||
autoSweepPlugins?: boolean | undefined;
|
||||
autoSweepPluginsPeriodic?: boolean | undefined;
|
||||
notifyPluginOrSettingUpdated?: boolean | undefined;
|
||||
deviceAndVaultName?: string | undefined;
|
||||
usePluginSyncV2?: boolean | undefined;
|
||||
usePluginEtc?: boolean | undefined;
|
||||
pluginSyncExtendedSetting?: Record<string, import("./setting.type").PluginSyncSettingEntry> | undefined;
|
||||
useAdvancedMode?: boolean | undefined;
|
||||
usePowerUserMode?: boolean | undefined;
|
||||
useEdgeCaseMode?: boolean | undefined;
|
||||
notifyThresholdOfRemoteStorageSize?: number | undefined;
|
||||
disableWorkerForGeneratingChunks?: boolean | undefined;
|
||||
processSmallFilesInUIThread?: boolean | undefined;
|
||||
savingDelay?: number | undefined;
|
||||
gcDelay?: number | undefined;
|
||||
skipOlderFilesOnSync?: boolean | undefined;
|
||||
useIndexedDBAdapter?: boolean | undefined;
|
||||
enableDebugTools?: boolean | undefined;
|
||||
writeLogToTheFile?: boolean | undefined;
|
||||
settingSyncFile?: string | undefined;
|
||||
writeCredentialsForSettingSync?: boolean | undefined;
|
||||
notifyAllSettingSyncFile?: boolean | undefined;
|
||||
suspendFileWatching?: boolean | undefined;
|
||||
suspendParseReplicationResult?: boolean | undefined;
|
||||
doNotSuspendOnFetching?: boolean | undefined;
|
||||
maxMTimeForReflectEvents?: number | undefined;
|
||||
versionUpFlash?: string | undefined;
|
||||
settingVersion?: number | undefined;
|
||||
isConfigured?: boolean;
|
||||
lastReadUpdates?: number | undefined;
|
||||
doctorProcessedVersion?: string | undefined;
|
||||
remoteConfigurations?: Record<string, import("./setting.type").RemoteConfiguration> | undefined;
|
||||
activeConfigurationId?: string | undefined;
|
||||
P2P_ActiveRemoteConfigurationId?: string | undefined;
|
||||
couchDB_URI?: string | undefined;
|
||||
couchDB_USER?: string | undefined;
|
||||
couchDB_PASSWORD?: string | undefined;
|
||||
couchDB_DBNAME?: string | undefined;
|
||||
couchDB_CustomHeaders?: string | undefined;
|
||||
useJWT?: boolean | undefined;
|
||||
jwtAlgorithm?: import("./auth.type").JWTAlgorithm | undefined;
|
||||
jwtKey?: string | undefined;
|
||||
jwtKid?: string | undefined;
|
||||
jwtSub?: string | undefined;
|
||||
jwtExpDuration?: number | undefined;
|
||||
useRequestAPI?: boolean | undefined;
|
||||
accessKey?: string | undefined;
|
||||
secretKey?: string | undefined;
|
||||
bucket?: string | undefined;
|
||||
region?: string | undefined;
|
||||
endpoint?: string | undefined;
|
||||
useCustomRequestHandler?: boolean | undefined;
|
||||
bucketCustomHeaders?: string | undefined;
|
||||
bucketPrefix?: string | undefined;
|
||||
forcePathStyle?: boolean | undefined;
|
||||
remoteType?: import("./setting.type").RemoteType | undefined;
|
||||
encrypt?: boolean | undefined;
|
||||
passphrase?: string | undefined;
|
||||
usePathObfuscation?: boolean | undefined;
|
||||
E2EEAlgorithm?: import("./setting.type").E2EEAlgorithm | undefined;
|
||||
hashAlg?: import("./setting.type").HashAlgorithm | undefined;
|
||||
minimumChunkSize?: number | undefined;
|
||||
customChunkSize?: number | undefined;
|
||||
longLineThreshold?: number | undefined;
|
||||
useSegmenter?: boolean | undefined;
|
||||
enableChunkSplitterV2?: boolean | undefined;
|
||||
doNotUseFixedRevisionForChunks?: boolean | undefined;
|
||||
chunkSplitterVersion?: import("./setting.type").ChunkSplitterVersion | undefined;
|
||||
useEden?: boolean | undefined;
|
||||
maxChunksInEden?: number | undefined;
|
||||
maxTotalLengthInEden?: number | undefined;
|
||||
maxAgeInEden?: number | undefined;
|
||||
checkIntegrityOnSave?: boolean | undefined;
|
||||
useHistory?: boolean | undefined;
|
||||
disableRequestURI?: boolean | undefined;
|
||||
sendChunksBulk?: boolean | undefined;
|
||||
sendChunksBulkMaxSize?: number | undefined;
|
||||
useDynamicIterationCount?: boolean | undefined;
|
||||
doNotPaceReplication?: boolean | undefined;
|
||||
readChunksOnline?: boolean | undefined;
|
||||
useOnlyLocalChunk?: boolean | undefined;
|
||||
concurrencyOfReadChunksOnline?: number | undefined;
|
||||
minimumIntervalOfReadChunksOnline?: number | undefined;
|
||||
enableCompression?: boolean | undefined;
|
||||
batch_size?: number | undefined;
|
||||
batches_limit?: number | undefined;
|
||||
ignoreVersionCheck?: boolean | undefined;
|
||||
disableCheckingConfigMismatch?: boolean | undefined;
|
||||
autoAcceptCompatibleTweak?: boolean | undefined;
|
||||
hashCacheMaxCount?: number | undefined;
|
||||
hashCacheMaxAmount?: number | undefined;
|
||||
permitEmptyPassphrase?: boolean | undefined;
|
||||
handleFilenameCaseSensitive?: boolean | undefined;
|
||||
checkConflictOnlyOnOpen?: boolean | undefined;
|
||||
showMergeDialogOnlyOnActive?: boolean | undefined;
|
||||
additionalSuffixOfDatabaseName?: string | undefined;
|
||||
useTimeouts?: boolean | undefined;
|
||||
deleteMetadataOfDeletedFiles?: boolean | undefined;
|
||||
automaticallyDeleteMetadataOfDeletedFiles?: number | undefined;
|
||||
P2P_AutoAccepting?: import("./setting.type").AutoAccepting | undefined;
|
||||
P2P_AutoSyncPeers?: string | undefined;
|
||||
P2P_AutoWatchPeers?: string | undefined;
|
||||
P2P_SyncOnReplication?: string | undefined;
|
||||
P2P_RebuildFrom?: string | undefined;
|
||||
P2P_AutoAcceptingPeers?: string | undefined;
|
||||
P2P_AutoDenyingPeers?: string | undefined;
|
||||
P2P_IsHeadless?: boolean;
|
||||
P2P_Enabled?: boolean | undefined;
|
||||
P2P_relays?: string | undefined;
|
||||
P2P_roomID?: string | undefined;
|
||||
P2P_passphrase?: string | undefined;
|
||||
P2P_AppID?: string | undefined;
|
||||
P2P_AutoStart?: boolean | undefined;
|
||||
P2P_AutoBroadcast?: boolean | undefined;
|
||||
P2P_DevicePeerName?: string;
|
||||
P2P_turnServers?: string | undefined;
|
||||
P2P_turnUsername?: string | undefined;
|
||||
P2P_turnCredential?: string | undefined;
|
||||
P2P_useDiagRTC?: boolean;
|
||||
};
|
||||
export type TweakValues = Partial<typeof TweakValuesTemplate>;
|
||||
export declare const DEVICE_ID_PREFERRED = "PREFERRED";
|
||||
export {};
|
||||
Vendored
+42
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
# Rosetta stone
|
||||
- To localise messages to your language, please write a translation to this file and submit a PR.
|
||||
- Please order languages in alphabetic order, if you write multiple items.
|
||||
|
||||
## Notice to ensure that your favours are not wasted.
|
||||
|
||||
If you plan to utilise machine translation engines to contribute translated resources,
|
||||
please ensure the engine's terms of service are compatible with our project's license.
|
||||
Your diligence in this matter helps maintain compliance and avoid potential licensing issues.
|
||||
Thank you for your consideration.
|
||||
|
||||
Usually, our projects (Self-hosted LiveSync and its families) are licensed under MIT License.
|
||||
To see details, please refer to the LICENSES file on each repository.
|
||||
|
||||
## How to internationalise untranslated items?
|
||||
1. Change the message literal to use `$msg`
|
||||
"Could not parse YAML" -> $msg('anyKey')
|
||||
2. Create `ls-debug` folder under the `.obsidian` folder of your vault.
|
||||
3. Run Self-hosted LiveSync in dev mode (npm run dev).
|
||||
4. You will get the `missing-translation-YYYY-MM-DD.jsonl` under `ls-debug`. Please copy and paste inside `allMessages` and write the translations.
|
||||
5. Send me the PR!
|
||||
*/
|
||||
declare const LANG_DE = "de";
|
||||
declare const LANG_ES = "es";
|
||||
declare const LANG_FR = "fr";
|
||||
declare const LANG_HE = "he";
|
||||
declare const LANG_JA = "ja";
|
||||
declare const LANG_RU = "ru";
|
||||
declare const LANG_ZH = "zh";
|
||||
declare const LANG_KO = "ko";
|
||||
declare const LANG_ZH_TW = "zh-tw";
|
||||
declare const LANG_DEF = "def";
|
||||
export declare const SUPPORTED_I18N_LANGS: string[];
|
||||
export type I18N_LANGS = typeof LANG_DEF | typeof LANG_DE | typeof LANG_ES | typeof LANG_FR | typeof LANG_HE | typeof LANG_JA | typeof LANG_KO | typeof LANG_RU | typeof LANG_ZH | typeof LANG_ZH_TW | "";
|
||||
export type MESSAGE = {
|
||||
[key in I18N_LANGS]?: string;
|
||||
};
|
||||
import { type MessageKeys } from "./messages/combinedMessages.dev";
|
||||
export declare function expandKeywords<T extends Record<string, U>, U extends Record<string, string>>(message: T, lang: I18N_LANGS, recurseLimit?: number): T;
|
||||
export type AllMessageKeys = MessageKeys;
|
||||
export {};
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
import type { ConfigurationItem } from "@lib/common/models/shared.definition.configNames";
|
||||
import type { ObsidianLiveSyncSettings } from "@lib/common/models/setting.type";
|
||||
type ExtractPropertiesByType<T, U> = {
|
||||
[K in keyof T as T[K] extends U ? K : never]: T[K] extends U ? K : never;
|
||||
};
|
||||
export type FilterStringKeys<T> = keyof ExtractPropertiesByType<T, string | undefined>;
|
||||
export type FilterBooleanKeys<T> = keyof ExtractPropertiesByType<T, boolean | undefined>;
|
||||
export type FilterNumberKeys<T> = keyof ExtractPropertiesByType<T, number | undefined>;
|
||||
import type { FilePath, FilePathWithPrefixLC, FilePathWithPrefix, DocumentID } from "./models/db.type.ts";
|
||||
export type { FilePath, FilePathWithPrefixLC, FilePathWithPrefix, DocumentID };
|
||||
/**
|
||||
* Self-hosted LiveSync settings pane items.
|
||||
*/
|
||||
export type OnDialogSettings = {
|
||||
configPassphrase: string;
|
||||
preset: "" | "PERIODIC" | "LIVESYNC" | "DISABLE";
|
||||
syncMode: "ONEVENTS" | "PERIODIC" | "LIVESYNC";
|
||||
dummy: number;
|
||||
deviceAndVaultName: string;
|
||||
};
|
||||
/**
|
||||
* Default settings for the OnDialogSettings.
|
||||
* Not used for the common library, but used for the Obsidian plugin.
|
||||
*/
|
||||
export declare const OnDialogSettingsDefault: OnDialogSettings;
|
||||
export declare const AllSettingDefault: {
|
||||
configPassphrase: string;
|
||||
preset: "" | "PERIODIC" | "LIVESYNC" | "DISABLE";
|
||||
syncMode: "ONEVENTS" | "PERIODIC" | "LIVESYNC";
|
||||
dummy: number;
|
||||
deviceAndVaultName: string;
|
||||
liveSync: boolean;
|
||||
syncOnSave: boolean;
|
||||
syncOnStart: boolean;
|
||||
syncOnFileOpen: boolean;
|
||||
syncOnEditorSave: boolean;
|
||||
syncMinimumInterval: number;
|
||||
showVerboseLog: boolean;
|
||||
lessInformationInLog: boolean;
|
||||
showLongerLogInsideEditor: boolean;
|
||||
showStatusOnEditor: boolean;
|
||||
showStatusOnStatusbar: boolean;
|
||||
showOnlyIconsOnEditor: boolean;
|
||||
hideFileWarningNotice: boolean;
|
||||
networkWarningStyle: "" | "icon" | "hidden";
|
||||
displayLanguage: import("./rosetta.ts").I18N_LANGS;
|
||||
trashInsteadDelete: boolean;
|
||||
doNotDeleteFolder: boolean;
|
||||
batchSave: boolean;
|
||||
batchSaveMinimumDelay: number;
|
||||
batchSaveMaximumDelay: number;
|
||||
syncMaxSizeInMB: number;
|
||||
useIgnoreFiles: boolean;
|
||||
ignoreFiles: string;
|
||||
processSizeMismatchedFiles: boolean;
|
||||
syncOnlyRegEx: import("./types.ts").CustomRegExpSourceList<"|[]|">;
|
||||
syncIgnoreRegEx: import("./types.ts").CustomRegExpSourceList<"|[]|">;
|
||||
syncAfterMerge: boolean;
|
||||
resolveConflictsByNewerFile: boolean;
|
||||
writeDocumentsIfConflicted: boolean;
|
||||
disableMarkdownAutoMerge: boolean;
|
||||
configPassphraseStore: import("@lib/common/models/setting.type").ConfigPassphraseStore;
|
||||
encryptedPassphrase: string;
|
||||
encryptedCouchDBConnection: string;
|
||||
periodicReplication: boolean;
|
||||
periodicReplicationInterval: number;
|
||||
syncInternalFiles: boolean;
|
||||
syncInternalFilesBeforeReplication: boolean;
|
||||
syncInternalFilesInterval: number;
|
||||
syncInternalFilesIgnorePatterns: import("./types.ts").CustomRegExpSourceList<",">;
|
||||
syncInternalFilesTargetPatterns: import("./types.ts").CustomRegExpSourceList<",">;
|
||||
watchInternalFileChanges: boolean;
|
||||
suppressNotifyHiddenFilesChange: boolean;
|
||||
syncInternalFileOverwritePatterns: import("./types.ts").CustomRegExpSourceList<",">;
|
||||
usePluginSync: boolean;
|
||||
usePluginSettings: boolean;
|
||||
showOwnPlugins: boolean;
|
||||
autoSweepPlugins: boolean;
|
||||
autoSweepPluginsPeriodic: boolean;
|
||||
notifyPluginOrSettingUpdated: boolean;
|
||||
usePluginSyncV2: boolean;
|
||||
usePluginEtc: boolean;
|
||||
pluginSyncExtendedSetting: Record<import("@lib/common/models/setting.type").PluginSyncSettingEntry["key"], import("@lib/common/models/setting.type").PluginSyncSettingEntry>;
|
||||
useAdvancedMode: boolean;
|
||||
usePowerUserMode: boolean;
|
||||
useEdgeCaseMode: boolean;
|
||||
notifyThresholdOfRemoteStorageSize: number;
|
||||
disableWorkerForGeneratingChunks: boolean;
|
||||
processSmallFilesInUIThread: boolean;
|
||||
savingDelay: number;
|
||||
gcDelay: number;
|
||||
skipOlderFilesOnSync: boolean;
|
||||
useIndexedDBAdapter: boolean;
|
||||
enableDebugTools: boolean;
|
||||
writeLogToTheFile: boolean;
|
||||
settingSyncFile: string;
|
||||
writeCredentialsForSettingSync: boolean;
|
||||
notifyAllSettingSyncFile: boolean;
|
||||
suspendFileWatching: boolean;
|
||||
suspendParseReplicationResult: boolean;
|
||||
doNotSuspendOnFetching: boolean;
|
||||
maxMTimeForReflectEvents: number;
|
||||
versionUpFlash: string;
|
||||
settingVersion: number;
|
||||
isConfigured?: boolean;
|
||||
lastReadUpdates: number;
|
||||
doctorProcessedVersion: string;
|
||||
remoteConfigurations: Record<string, import("@lib/common/models/setting.type").RemoteConfiguration>;
|
||||
activeConfigurationId: string;
|
||||
P2P_ActiveRemoteConfigurationId: string;
|
||||
couchDB_URI: string;
|
||||
couchDB_USER: string;
|
||||
couchDB_PASSWORD: string;
|
||||
couchDB_DBNAME: string;
|
||||
couchDB_CustomHeaders: string;
|
||||
useJWT: boolean;
|
||||
jwtAlgorithm: import("./models/auth.type.ts").JWTAlgorithm;
|
||||
jwtKey: string;
|
||||
jwtKid: string;
|
||||
jwtSub: string;
|
||||
jwtExpDuration: number;
|
||||
useRequestAPI: boolean;
|
||||
accessKey: string;
|
||||
secretKey: string;
|
||||
bucket: string;
|
||||
region: string;
|
||||
endpoint: string;
|
||||
useCustomRequestHandler: boolean;
|
||||
bucketCustomHeaders: string;
|
||||
bucketPrefix: string;
|
||||
forcePathStyle: boolean;
|
||||
remoteType: import("@lib/common/models/setting.type").RemoteType;
|
||||
encrypt: boolean;
|
||||
passphrase: string;
|
||||
usePathObfuscation: boolean;
|
||||
E2EEAlgorithm: import("@lib/common/models/setting.type").E2EEAlgorithm;
|
||||
hashAlg: import("@lib/common/models/setting.type").HashAlgorithm;
|
||||
minimumChunkSize: number;
|
||||
customChunkSize: number;
|
||||
longLineThreshold: number;
|
||||
useSegmenter: boolean;
|
||||
enableChunkSplitterV2: boolean;
|
||||
doNotUseFixedRevisionForChunks: boolean;
|
||||
chunkSplitterVersion: import("@lib/common/models/setting.type").ChunkSplitterVersion;
|
||||
useEden: boolean;
|
||||
maxChunksInEden: number;
|
||||
maxTotalLengthInEden: number;
|
||||
maxAgeInEden: number;
|
||||
tweakModified: number | undefined;
|
||||
checkIntegrityOnSave: boolean;
|
||||
useHistory: boolean;
|
||||
disableRequestURI: boolean;
|
||||
sendChunksBulk: boolean;
|
||||
sendChunksBulkMaxSize: number;
|
||||
useDynamicIterationCount: boolean;
|
||||
doNotPaceReplication: boolean;
|
||||
readChunksOnline: boolean;
|
||||
useOnlyLocalChunk: boolean;
|
||||
concurrencyOfReadChunksOnline: number;
|
||||
minimumIntervalOfReadChunksOnline: number;
|
||||
enableCompression: boolean;
|
||||
batch_size: number;
|
||||
batches_limit: number;
|
||||
ignoreVersionCheck: boolean;
|
||||
disableCheckingConfigMismatch: boolean;
|
||||
autoAcceptCompatibleTweak: boolean | undefined;
|
||||
hashCacheMaxCount: number;
|
||||
hashCacheMaxAmount: number;
|
||||
permitEmptyPassphrase: boolean;
|
||||
handleFilenameCaseSensitive: boolean;
|
||||
checkConflictOnlyOnOpen: boolean;
|
||||
showMergeDialogOnlyOnActive: boolean;
|
||||
additionalSuffixOfDatabaseName: string | undefined;
|
||||
useTimeouts: boolean;
|
||||
deleteMetadataOfDeletedFiles: boolean;
|
||||
automaticallyDeleteMetadataOfDeletedFiles: number;
|
||||
P2P_AutoAccepting: import("@lib/common/models/setting.type").AutoAccepting;
|
||||
P2P_AutoSyncPeers: string;
|
||||
P2P_AutoWatchPeers: string;
|
||||
P2P_SyncOnReplication: string;
|
||||
P2P_RebuildFrom: string;
|
||||
P2P_AutoAcceptingPeers: string;
|
||||
P2P_AutoDenyingPeers: string;
|
||||
P2P_IsHeadless?: boolean;
|
||||
P2P_Enabled: boolean;
|
||||
P2P_relays: string;
|
||||
P2P_roomID: string;
|
||||
P2P_passphrase: string;
|
||||
P2P_AppID: string;
|
||||
P2P_AutoStart: boolean;
|
||||
P2P_AutoBroadcast: boolean;
|
||||
P2P_DevicePeerName?: string;
|
||||
P2P_turnServers: string;
|
||||
P2P_turnUsername: string;
|
||||
P2P_turnCredential: string;
|
||||
P2P_useDiagRTC?: boolean;
|
||||
};
|
||||
export type AllSettings = ObsidianLiveSyncSettings & OnDialogSettings;
|
||||
export type AllStringItemKey = FilterStringKeys<AllSettings>;
|
||||
export type AllNumericItemKey = FilterNumberKeys<AllSettings>;
|
||||
export type AllBooleanItemKey = FilterBooleanKeys<AllSettings>;
|
||||
export type AllSettingItemKey = AllStringItemKey | AllNumericItemKey | AllBooleanItemKey;
|
||||
export type ValueOf<T extends AllSettingItemKey> = T extends AllStringItemKey ? string : T extends AllNumericItemKey ? number : T extends AllBooleanItemKey ? boolean : AllSettings[T];
|
||||
export declare const SettingInformation: Partial<Record<keyof AllSettings, ConfigurationItem>>;
|
||||
export declare function getConfig(key: AllSettingItemKey): false | {
|
||||
name: string;
|
||||
desc?: string;
|
||||
placeHolder?: string;
|
||||
status?: "BETA" | "ALPHA" | "EXPERIMENTAL";
|
||||
obsolete?: boolean;
|
||||
level?: import("@lib/common/models/shared.definition.configNames").ConfigLevel;
|
||||
isHidden?: boolean;
|
||||
isAdvanced?: boolean;
|
||||
};
|
||||
export declare function getConfName(key: AllSettingItemKey): string;
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
import type { DocumentID, FilePath, FilePathWithPrefix } from "./models/db.type";
|
||||
import type { UXFileInfoStub } from "@lib/common/models/fileaccess.type";
|
||||
/**
|
||||
* returns is internal chunk of file
|
||||
* @param id ID
|
||||
* @returns
|
||||
*/
|
||||
export declare function isInternalMetadata(id: FilePath | FilePathWithPrefix | DocumentID): boolean;
|
||||
export declare function isInternalFile(file: UXFileInfoStub | string | FilePathWithPrefix): boolean;
|
||||
export declare function stripInternalMetadataPrefix<T extends FilePath | FilePathWithPrefix | DocumentID>(id: T): T;
|
||||
export declare function id2InternalMetadataId(id: DocumentID): DocumentID;
|
||||
export declare function isChunk(str: string): boolean;
|
||||
export declare function isPluginMetadata(str: string): boolean;
|
||||
export declare function isCustomisationSyncMetadata(str: string): boolean;
|
||||
export declare function getPathFromUXFileInfo(file: UXFileInfoStub | string | FilePathWithPrefix): FilePathWithPrefix;
|
||||
export declare function getStoragePathFromUXFileInfo(file: UXFileInfoStub | string | FilePathWithPrefix): FilePath;
|
||||
export declare function getDatabasePathFromUXFileInfo(file: UXFileInfoStub | string | FilePathWithPrefix): FilePathWithPrefix;
|
||||
Vendored
+107
@@ -0,0 +1,107 @@
|
||||
export type { TaggedType } from "./models/shared.type.util.ts";
|
||||
export { LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_NOTICE, LOG_LEVEL_URGENT, LOG_LEVEL_VERBOSE, } from "octagonal-wheels/common/logger";
|
||||
export type { LOG_LEVEL } from "octagonal-wheels/common/logger";
|
||||
import { RESULT_NOT_FOUND, RESULT_TIMED_OUT } from "octagonal-wheels/common/const";
|
||||
import type { Credential } from "./models/auth.type.ts";
|
||||
import type { AnyEntry, ChunkVersionRange, DatabaseEntry, EdenChunk, EntryBase, EntryChunkPack, EntryHasPath, EntryLeaf, EntryType, EntryTypeNotes, EntryTypeNotesWithLegacy, EntryVersionInfo, EntryWithEden, InternalFileEntry, LoadedEntry, MetaEntry, NewEntry, NoteEntry, PlainEntry, SavingEntry, SyncInfo } from "./models/db.type.ts";
|
||||
import { ChunkTypes, EntryTypes, MILESTONE_DOCID, NODEINFO_DOCID, NoteTypes, SYNCINFO_ID, VERSIONING_DOCID } from "./models/db.const.ts";
|
||||
import { AUTO_MERGED, CANCELLED, LEAVE_TO_SUBSEQUENT, MISSING_OR_ERROR, NOT_CONFLICTED, TIME_ARGUMENT_INFINITY } from "./models/shared.const.symbols.ts";
|
||||
import { IDPrefixes, LEAF_WAIT_ONLY_REMOTE, LEAF_WAIT_TIMEOUT, LEAF_WAIT_TIMEOUT_SEQUENTIAL_REPLICATOR, MAX_DOC_SIZE, MAX_DOC_SIZE_BIN, PREFIX_CHUNK, PREFIX_ENCRYPTED_CHUNK, PREFIX_OBFUSCATED, RECENT_MODIFIED_DOCS_QTY, REPLICATION_BUSY_TIMEOUT, SALT_OF_ID, SALT_OF_PASSPHRASE, SEED_MURMURHASH, VER } from "./models/shared.const.behabiour.ts";
|
||||
import { AutoAccepting, type BucketSyncSetting, type ChunkSplitterVersion, type ConfigPassphraseStore, type CouchDBConnection, type E2EEAlgorithm, type EncryptionSettings, type HashAlgorithm, type HasSettings, type LocalDBSettings, type ObsidianLiveSyncSettings, type P2PConnectionInfo, type P2PSyncSetting, type PluginSyncSettingEntry, type RemoteDBSettings, type RemoteType, type RemoteTypeSettings, type SYNC_MODE } from "./models/setting.type.ts";
|
||||
import { ChunkAlgorithmNames, ChunkAlgorithms, CURRENT_SETTING_VERSION, E2EEAlgorithmNames, E2EEAlgorithms, HashAlgorithms, REMOTE_COUCHDB, REMOTE_MINIO, REMOTE_P2P, RemoteTypes, SETTING_VERSION_INITIAL, SETTING_VERSION_SUPPORT_CASE_INSENSITIVE, MODE_AUTOMATIC, MODE_PAUSED, MODE_SELECTIVE, MODE_SHINY } from "./models/setting.const.ts";
|
||||
import { PREFERRED_BASE, PREFERRED_JOURNAL_SYNC, PREFERRED_SETTING_CLOUDANT, PREFERRED_SETTING_SELF_HOSTED } from "./models/setting.const.preferred.ts";
|
||||
import { P2P_DEFAULT_SETTINGS, DEFAULT_SETTINGS } from "./models/setting.const.defaults.ts";
|
||||
import { KeyIndexOfSettings } from "./models/setting.const.qr.ts";
|
||||
import type { DeviceInfo, EntryBody, EntryDoc, EntryDocResponse, EntryMilestoneInfo, EntryNodeInfo, NodeData, NodeKey } from "./models/db.definition.ts";
|
||||
import { isMetaEntry } from "./models/db.definition.ts";
|
||||
import type { CouchDBCredentials, BasicCredentials, JWTCredentials, JWTHeader, JWTPayload, JWTParams, PreparedJWT } from "./models/auth.type.ts";
|
||||
import type { CacheData, FileEventArgs, FileEventItem, FileEventType, UXAbstractInfoStub, UXDataWriteOptions, UXFileInfo, UXFileInfoStub, UXFolderInfo, UXInternalFileInfoStub, UXStat } from "./models/fileaccess.type.ts";
|
||||
import { SETTING_KEY_P2P_DEVICE_NAME, configURIBase, configURIBaseQR, SuffixDatabaseName, ExtraSuffixIndexedDB } from "./models/shared.const.ts";
|
||||
import { configurationNames, LEVEL_ADVANCED, LEVEL_POWER_USER, LEVEL_EDGE_CASE, type ConfigLevel, type ConfigurationItem, statusDisplay, confName, confDesc } from "./models/shared.definition.configNames.ts";
|
||||
import type { CustomRegExpSource, CustomRegExpSourceList, ParsedCustomRegExp, Prettify } from "./models/shared.type.util.ts";
|
||||
import { ProtocolVersions, type ProtocolVersion, DOCID_SYNC_PARAMETERS, DOCID_JOURNAL_SYNC_PARAMETERS, type SyncParameters, DEFAULT_SYNC_PARAMETERS } from "./models/sync.definition.ts";
|
||||
import { TweakValuesShouldMatchedTemplate, IncompatibleChanges, CompatibleButLossyChanges, IncompatibleChangesInSpecificPattern, TweakValuesRecommendedTemplate, TweakValuesDefault, TweakValuesTemplate, type TweakValues, DEVICE_ID_PREFERRED } from "./models/tweak.definition.ts";
|
||||
import type { diff_result_leaf, dmp_result, diff_result, DIFF_CHECK_RESULT_AUTO, diff_check_result } from "./models/diff.definition.ts";
|
||||
import { PREFIXMD_LOGFILE, PREFIXMD_LOGFILE_UC, FlagFilesOriginal, FlagFilesHumanReadable, FLAGMD_REDFLAG, FLAGMD_REDFLAG2, FLAGMD_REDFLAG2_HR, FLAGMD_REDFLAG3, FLAGMD_REDFLAG3_HR } from "./models/redflag.const.ts";
|
||||
import { DatabaseConnectingStatuses, type DatabaseConnectingStatus } from "./models/shared.definition.ts";
|
||||
export { RESULT_NOT_FOUND, RESULT_TIMED_OUT };
|
||||
export type { FilePath, FilePathWithPrefixLC, FilePathWithPrefix, DocumentID } from "./models/db.type.ts";
|
||||
export { MAX_DOC_SIZE, MAX_DOC_SIZE_BIN, VER, RECENT_MODIFIED_DOCS_QTY, LEAF_WAIT_TIMEOUT, LEAF_WAIT_ONLY_REMOTE, LEAF_WAIT_TIMEOUT_SEQUENTIAL_REPLICATOR, REPLICATION_BUSY_TIMEOUT, CANCELLED, AUTO_MERGED, NOT_CONFLICTED, MISSING_OR_ERROR, LEAVE_TO_SUBSEQUENT, TIME_ARGUMENT_INFINITY, VERSIONING_DOCID, MILESTONE_DOCID, NODEINFO_DOCID, };
|
||||
export { type CouchDBConnection };
|
||||
export type { ConfigPassphraseStore };
|
||||
export { MODE_SELECTIVE, MODE_AUTOMATIC, MODE_PAUSED, MODE_SHINY, type SYNC_MODE };
|
||||
export { type PluginSyncSettingEntry };
|
||||
export { SETTING_VERSION_INITIAL, SETTING_VERSION_SUPPORT_CASE_INSENSITIVE, CURRENT_SETTING_VERSION };
|
||||
export type { BucketSyncSetting, LocalDBSettings };
|
||||
export { RemoteTypes, REMOTE_COUCHDB, REMOTE_MINIO, REMOTE_P2P, type RemoteType, AutoAccepting };
|
||||
export type { P2PConnectionInfo, P2PSyncSetting };
|
||||
export { P2P_DEFAULT_SETTINGS };
|
||||
export type { RemoteTypeSettings };
|
||||
export { E2EEAlgorithmNames, E2EEAlgorithms, type E2EEAlgorithm };
|
||||
export type { EncryptionSettings };
|
||||
export { HashAlgorithms, type HashAlgorithm, ChunkAlgorithmNames, ChunkAlgorithms, type ChunkSplitterVersion };
|
||||
export type { RemoteDBSettings };
|
||||
export type { ObsidianLiveSyncSettings };
|
||||
export { DEFAULT_SETTINGS };
|
||||
export { KeyIndexOfSettings };
|
||||
export { type HasSettings };
|
||||
export { PREFERRED_BASE, PREFERRED_SETTING_CLOUDANT, PREFERRED_SETTING_SELF_HOSTED, PREFERRED_JOURNAL_SYNC };
|
||||
export { EntryTypes, NoteTypes, ChunkTypes, type EntryType, type EntryTypeNotes, type EntryTypeNotesWithLegacy, type DatabaseEntry, type EntryBase, type EdenChunk, type EntryWithEden, type NoteEntry, type NewEntry, type PlainEntry, type InternalFileEntry, type AnyEntry, type LoadedEntry, type SavingEntry, type MetaEntry, isMetaEntry, type EntryLeaf, type EntryChunkPack, type EntryVersionInfo, type EntryHasPath, };
|
||||
export type { ChunkVersionRange };
|
||||
export { TweakValuesShouldMatchedTemplate };
|
||||
export { IncompatibleChanges };
|
||||
export { CompatibleButLossyChanges };
|
||||
export { IncompatibleChangesInSpecificPattern };
|
||||
export { TweakValuesRecommendedTemplate };
|
||||
export { TweakValuesDefault };
|
||||
export { configurationNames };
|
||||
export { LEVEL_ADVANCED };
|
||||
export { LEVEL_POWER_USER };
|
||||
export { LEVEL_EDGE_CASE };
|
||||
export type { ConfigLevel };
|
||||
export type { ConfigurationItem };
|
||||
export { statusDisplay };
|
||||
export { confName };
|
||||
export { confDesc };
|
||||
export { TweakValuesTemplate };
|
||||
export type { TweakValues };
|
||||
export { DEVICE_ID_PREFERRED };
|
||||
export type { NodeKey };
|
||||
export type { DeviceInfo };
|
||||
export type { NodeData };
|
||||
export type { EntryMilestoneInfo };
|
||||
export type { EntryNodeInfo };
|
||||
export type { EntryBody };
|
||||
export type { EntryDoc };
|
||||
export type { diff_result_leaf };
|
||||
export type { dmp_result };
|
||||
export type { diff_result };
|
||||
export type { DIFF_CHECK_RESULT_AUTO };
|
||||
export type { diff_check_result };
|
||||
export type { Credential };
|
||||
export type { EntryDocResponse };
|
||||
export { DatabaseConnectingStatuses };
|
||||
export type { DatabaseConnectingStatus };
|
||||
export { PREFIXMD_LOGFILE, PREFIXMD_LOGFILE_UC, FlagFilesOriginal, FlagFilesHumanReadable, FLAGMD_REDFLAG, FLAGMD_REDFLAG2, FLAGMD_REDFLAG2_HR, FLAGMD_REDFLAG3, FLAGMD_REDFLAG3_HR, };
|
||||
export { SYNCINFO_ID };
|
||||
export type { SyncInfo };
|
||||
export { SALT_OF_PASSPHRASE, SALT_OF_ID, SEED_MURMURHASH, IDPrefixes, PREFIX_OBFUSCATED, PREFIX_CHUNK, PREFIX_ENCRYPTED_CHUNK, };
|
||||
export type { UXStat, UXFileInfo, UXAbstractInfoStub, UXFileInfoStub, UXInternalFileInfoStub, UXFolderInfo, UXDataWriteOptions, CacheData, FileEventType, FileEventArgs, FileEventItem, };
|
||||
export type { Prettify };
|
||||
export type { CouchDBCredentials };
|
||||
export type { BasicCredentials };
|
||||
export type { JWTCredentials };
|
||||
export type { JWTHeader };
|
||||
export type { JWTPayload };
|
||||
export type { JWTParams };
|
||||
export type { PreparedJWT };
|
||||
export type { CustomRegExpSource };
|
||||
export type { CustomRegExpSourceList };
|
||||
export type { ParsedCustomRegExp };
|
||||
export { ProtocolVersions };
|
||||
export type { ProtocolVersion };
|
||||
export { DOCID_SYNC_PARAMETERS };
|
||||
export { DOCID_JOURNAL_SYNC_PARAMETERS };
|
||||
export type { SyncParameters };
|
||||
export { DEFAULT_SYNC_PARAMETERS };
|
||||
export { SETTING_KEY_P2P_DEVICE_NAME, configURIBase, configURIBaseQR, SuffixDatabaseName, ExtraSuffixIndexedDB };
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
export declare function resolveWithIgnoreKnownError<T>(p: Promise<T>, def: T): Promise<T>;
|
||||
export declare const Parallels: (ps?: Set<Promise<unknown>>) => {
|
||||
add: (p: Promise<unknown>) => Set<Promise<unknown>>;
|
||||
wait: (limit: number) => false | Promise<unknown>;
|
||||
all: () => Promise<unknown[]>;
|
||||
};
|
||||
export declare function allSettledWithConcurrencyLimit<T>(processes: Promise<T>[], limit: number): Promise<void>;
|
||||
export declare const globalConcurrencyController: import("octagonal-wheels/concurrency/semaphore_v2").SemaphoreObject;
|
||||
export declare function wrapException<T>(func: () => Promise<Awaited<T>>): Promise<Awaited<T> | Error>;
|
||||
export declare function wrapByDefault<T, U>(func: () => T, onError: (err: Error) => U): T | U;
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
import { replaceAll, replaceAllPairs } from "octagonal-wheels/string";
|
||||
export { replaceAll, replaceAllPairs };
|
||||
import { concatUInt8Array } from "octagonal-wheels/binary";
|
||||
export { concatUInt8Array };
|
||||
import { delay, fireAndForget } from "octagonal-wheels/promises";
|
||||
export { delay, fireAndForget };
|
||||
import { arrayToChunkedArray, unique } from "octagonal-wheels/collection";
|
||||
export { arrayToChunkedArray, unique };
|
||||
import { extractObject, isObjectDifferent } from "octagonal-wheels/object";
|
||||
export { extractObject, isObjectDifferent };
|
||||
import { sendValue, sendSignal, waitForSignal, waitForValue } from "octagonal-wheels/messagepassing/signal";
|
||||
export { sendValue, sendSignal, waitForSignal, waitForValue };
|
||||
import { throttle } from "octagonal-wheels/function";
|
||||
export { throttle };
|
||||
import type { SimpleStore } from "octagonal-wheels/databases/SimpleStoreBase";
|
||||
export type { SimpleStore };
|
||||
export { sizeToHumanReadable } from "octagonal-wheels/number";
|
||||
export * from "./utils.concurrency";
|
||||
export * from "./utils.timer";
|
||||
export * from "./utils.notations";
|
||||
export * from "./utils.database";
|
||||
export * from "./utils.regexp";
|
||||
export * from "./utils.settings";
|
||||
export * from "./utils.patch";
|
||||
export * from "./utils.misc";
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import type { AnyEntry, DatabaseEntry, EntryLeaf, SyncInfo, LoadedEntry, SavingEntry, NewEntry, PlainEntry } from "@lib/common/models/db.type";
|
||||
import { BASE_IS_NEW, EVEN, TARGET_IS_NEW } from "./models/shared.const.symbols.ts";
|
||||
export declare function getDocData(doc: string | string[]): string;
|
||||
export declare function getDocDataAsArray(doc: string | string[]): string[];
|
||||
export declare function getDocDataAsArrayBuffer(doc: string | string[] | ArrayBuffer): Uint8Array<ArrayBuffer>;
|
||||
export declare function isTextBlob(blob: Blob): boolean;
|
||||
export declare function createTextBlob(data: string | string[]): Blob;
|
||||
export declare function createBinaryBlob(data: Uint8Array<ArrayBuffer> | ArrayBuffer): Blob;
|
||||
export declare function createBlob(data: string | string[] | Uint8Array<ArrayBuffer> | ArrayBuffer | Blob): Blob;
|
||||
export declare function isTextDocument(doc: LoadedEntry): boolean;
|
||||
export declare function readAsBlob(doc: LoadedEntry): Blob;
|
||||
export declare function readContent(doc: LoadedEntry): string | ArrayBuffer;
|
||||
export declare function isDocContentSame(docA: string | string[] | Blob | ArrayBuffer, docB: string | string[] | Blob | ArrayBuffer): Promise<boolean>;
|
||||
export declare function isObfuscatedEntry(doc: DatabaseEntry): doc is AnyEntry;
|
||||
export declare function isEncryptedChunkEntry(doc: DatabaseEntry): doc is EntryLeaf;
|
||||
export declare function isSyncInfoEntry(doc: DatabaseEntry): doc is SyncInfo;
|
||||
export declare function determineTypeFromBlob(data: Blob): "newnote" | "plain";
|
||||
export declare function determineType(path: string, data: string | string[] | Uint8Array | ArrayBuffer | Blob): "newnote" | "plain";
|
||||
export declare function isAnyNote(doc: DatabaseEntry): doc is NewEntry | PlainEntry;
|
||||
export declare function isLoadedEntry(doc: DatabaseEntry): doc is LoadedEntry;
|
||||
export declare function isDeletedEntry(doc: LoadedEntry): boolean;
|
||||
export declare function createSavingEntryFromLoadedEntry(doc: LoadedEntry): SavingEntry;
|
||||
export declare function compareMTime(baseMTime: number, targetMTime: number): typeof BASE_IS_NEW | typeof TARGET_IS_NEW | typeof EVEN;
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Checks if the error is effectively a 404 error from CouchDB or PouchDB.
|
||||
* @param ex some error object, expected to be from CouchDB or PouchDB.
|
||||
* @returns true if the error is a 404 not found error, false otherwise.
|
||||
* @throws if the input is not an object or does not have a numeric "status" property.
|
||||
*/
|
||||
export declare function isNotFoundError(ex: unknown): boolean;
|
||||
export declare function tryGetFilePath(entry: unknown): string | undefined;
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
export declare function tryParseJSON<T extends object>(str: string, fallbackValue?: T): T | undefined;
|
||||
export declare function parseHeaderValues(strHeader: string): Record<string, string>;
|
||||
export declare function memorizeFuncWithLRUCache<T, U>(func: (key: T) => U): (key: T) => U | undefined;
|
||||
/**
|
||||
*
|
||||
* @param exclusion return only not exclusion
|
||||
* @returns
|
||||
*
|
||||
* ["something",false,"aaaaa"].filter(onlyNot(false)) => yields ["something","aaaaaa"]. but, as string[].
|
||||
*/
|
||||
export declare function onlyNot<A, B>(exclusion: B): (item: A | B) => item is Exclude<A, B>;
|
||||
export declare function isDirty(key: string, value: unknown): boolean;
|
||||
export declare function setAllItems<T>(set: Set<T>, items: T[]): Set<T>;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
export declare function escapeNewLineFromString(str: string): string;
|
||||
export declare function unescapeNewLineFromString(str: string): string;
|
||||
export declare function escapeMarkdownValue<T>(value: T): T;
|
||||
export declare function timeDeltaToHumanReadable(delta: number): string;
|
||||
export declare function toRanges(sorted: number[]): string;
|
||||
export declare function displayRev(rev: string): string;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare function asCopy<T>(obj: T): T;
|
||||
export declare function ensureError(error: unknown): Error;
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
export declare function generatePatchObj(from: Record<string | number | symbol, unknown>, to: Record<string | number | symbol, unknown>): Record<string | number | symbol, unknown>;
|
||||
export declare function applyPatch(from: Record<string | number | symbol, unknown>, patch: Record<string | number | symbol, unknown>): Record<string | number | symbol, unknown>;
|
||||
export declare function mergeObject(objA: Record<string | number | symbol, unknown> | [unknown], objB: Record<string | number | symbol, unknown> | [unknown]): unknown[] | {
|
||||
[k: string]: unknown;
|
||||
};
|
||||
export declare function flattenObject(obj: Record<string | number | symbol, unknown>, path?: string[]): [string, unknown][];
|
||||
export declare function isSensibleMargeApplicable(path: string): boolean;
|
||||
export declare function isObjectMargeApplicable(path: string): boolean;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
import type { CustomRegExpSource, ParsedCustomRegExp, CustomRegExpSourceList } from "@lib/common/models/shared.type.util";
|
||||
import type { ObsidianLiveSyncSettings, RemoteDBSettings } from "@lib/common/models/setting.type";
|
||||
/***
|
||||
* Parse custom regular expression
|
||||
* @param regexp
|
||||
* @returns [negate: boolean, regexp: string]
|
||||
* @example `!!foo` => [true, "foo"]
|
||||
* @example `foo` => [false, "foo"]
|
||||
*/
|
||||
export declare function parseCustomRegExp(regexp: CustomRegExpSource): ParsedCustomRegExp;
|
||||
export declare function matchRegExp(regexp: CustomRegExpSource, target: string): boolean;
|
||||
export declare function isValidRegExp(regexp: CustomRegExpSource): boolean;
|
||||
export declare function isInvertedRegExp(regexp: CustomRegExpSource): boolean;
|
||||
export declare function constructCustomRegExpList<D extends string>(items: CustomRegExpSource[], delimiter: D): CustomRegExpSourceList<D>;
|
||||
export declare function splitCustomRegExpList<D extends string>(list: CustomRegExpSourceList<D>, delimiter: D): CustomRegExpSource[];
|
||||
export declare class CustomRegExp {
|
||||
regexp: RegExp;
|
||||
negate: boolean;
|
||||
pattern: string;
|
||||
constructor(regexp: CustomRegExpSource, flags?: string);
|
||||
test(str: string): boolean;
|
||||
}
|
||||
type RegExpSettingKey = "syncOnlyRegEx" | "syncIgnoreRegEx" | "syncInternalFilesIgnorePatterns" | "syncInternalFilesTargetPatterns" | "syncInternalFileOverwritePatterns";
|
||||
export declare function getFileRegExp(settings: ObsidianLiveSyncSettings | RemoteDBSettings, key: RegExpSettingKey): CustomRegExp[];
|
||||
export {};
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import type { ObsidianLiveSyncSettings, P2PConnectionInfo, BucketSyncSetting, CouchDBConnection, EncryptionSettings } from "@lib/common/models/setting.type";
|
||||
/**
|
||||
* Copies properties from the source object to the target object only if they exist in the target.
|
||||
* @param source The object to copy properties from.
|
||||
* @param target The object to copy properties to.
|
||||
*/
|
||||
export declare function copyTo<T extends object, U extends T>(source: U, target: T): void;
|
||||
export declare function pickBucketSyncSettings(setting: ObsidianLiveSyncSettings): BucketSyncSetting;
|
||||
export declare function pickCouchDBSyncSettings(setting: ObsidianLiveSyncSettings): CouchDBConnection;
|
||||
export declare function pickEncryptionSettings(setting: ObsidianLiveSyncSettings | EncryptionSettings): EncryptionSettings;
|
||||
export declare function pickP2PSyncSettings(setting: Partial<ObsidianLiveSyncSettings> & P2PConnectionInfo): P2PConnectionInfo;
|
||||
/**
|
||||
* Generate a random P2P Room ID in the format `123-456-789-abc`.
|
||||
*/
|
||||
export declare function generateP2PRoomId(): string;
|
||||
/**
|
||||
* Extract the stable suffix (last segment) from a Room ID.
|
||||
*/
|
||||
export declare function extractP2PRoomSuffix(roomId: string): string;
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Run task with keeping minimum interval
|
||||
* @param key waiting key
|
||||
* @param interval interval (ms)
|
||||
* @param task task to perform.
|
||||
* @returns result of task
|
||||
* @remarks This function is not designed to be concurrent.
|
||||
*/
|
||||
export declare function runWithInterval<T>(key: string, interval: number, task: () => Promise<T>): Promise<T>;
|
||||
/**
|
||||
* Run task with keeping minimum interval on start
|
||||
* @param key waiting key
|
||||
* @param interval interval (ms)
|
||||
* @param task task to perform.
|
||||
* @returns result of task
|
||||
* @remarks This function is not designed to be concurrent.
|
||||
*/
|
||||
export declare function runWithStartInterval<T>(key: string, interval: number, task: () => Promise<T>): Promise<T>;
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
import type { SimpleStore } from "octagonal-wheels/databases/SimpleStoreBase";
|
||||
export declare class StoredMapLike<U> {
|
||||
_store: SimpleStore<U>;
|
||||
_cache: Map<string, U>;
|
||||
_prefix: string;
|
||||
constructor(store: SimpleStore<Awaited<U>>, prefix?: string);
|
||||
addPrefix(key: string): string;
|
||||
get(key: string): Promise<U | undefined>;
|
||||
set(key: string, value: U): Promise<void>;
|
||||
delete(key: string): Promise<void>;
|
||||
has(key: string): Promise<boolean>;
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
type InstanceHaveOnBindFunction = {
|
||||
onBindFunction: (core: any, services: any) => void;
|
||||
} & Record<string, any>;
|
||||
export declare function __$checkInstanceBinding<T extends InstanceHaveOnBindFunction>(instance: T): void;
|
||||
export {};
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { encryptHKDFWorker, decryptHKDFWorker } from "@lib/worker/bgWorker.ts";
|
||||
export declare const encryptHKDF: typeof encryptHKDFWorker;
|
||||
export declare const decryptHKDF: typeof decryptHKDFWorker;
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Encrypts a string using a passphrase, unless the string is already encrypted.
|
||||
*
|
||||
* If the input string begins with `ENCRYPT_V2_PREFIX` or `HKDF_SALTED_ENCRYPTED_PREFIX`,
|
||||
* we assume it is already encrypted and return it unchanged.
|
||||
* Otherwise, we encrypt the string using an ephemeral salt and the provided passphrase.
|
||||
*
|
||||
* @param source - The plaintext string to encrypt, or an already encrypted string.
|
||||
* @param passphrase - The passphrase used for encryption.
|
||||
* @returns A promise resolving to the encrypted string, or the original string if it is already encrypted.
|
||||
*/
|
||||
export declare function encryptString(source: string, passphrase: string): Promise<string>;
|
||||
/**
|
||||
* Decrypts an encrypted string using the provided passphrase.
|
||||
*
|
||||
* This function determines the encryption format by inspecting the string prefix, then applies
|
||||
* the appropriate decryption method. It supports several encryption formats, including
|
||||
* HKDF salted encryption and legacy formats (V1, V2, V3). If the format is not supported,
|
||||
* an error is thrown.
|
||||
*
|
||||
* @param encrypted - The encrypted string to decrypt.
|
||||
* @param passphrase - The passphrase used for decryption.
|
||||
* @returns A promise resolving to the decrypted string.
|
||||
* @throws {Error} If the encryption format is unsupported.
|
||||
*/
|
||||
export declare function decryptString(encrypted: string, passphrase: string): Promise<string>;
|
||||
export declare function tryDecryptString(encrypted: string, passphrase: string | false): Promise<string | false>;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user