@hesprs/sync-engine-sdk 3.1.9 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev.js +1 -1
- package/dist/dev.spec.d.ts +1 -1
- package/dist/{index-DbHTJm2U.spec.d.ts → index-DbDrKV7S.spec.d.ts} +125 -149
- package/dist/index.js +1 -1
- package/dist/index.spec.d.ts +2 -2
- package/dist/pipe-wkp7flXx.js +1 -0
- package/dist/plugin/src/components/MigrationModal.js +1 -0
- package/dist/{packages/plugin → plugin}/src/settings/utils.js +1 -1
- package/dist/plugin/test/test-kit.js +1 -0
- package/dist/prefix.js +1 -1
- package/dist/shared/src/error.js +1 -0
- package/package.json +1 -1
- package/dist/node_modules/.bun/synthkernel@._synthkernel.tgz/node_modules/synthkernel/dist/reactive.js +0 -1
- package/dist/packages/plugin/src/components/MigrationModal.js +0 -1
- package/dist/packages/plugin/src/components/render-progress.js +0 -1
- package/dist/packages/plugin/src/utils/round-percent.js +0 -1
- package/dist/packages/plugin/test/test-kit.js +0 -1
- package/dist/packages/shared/src/error.js +0 -1
- package/dist/pipe-DuPrzktU.js +0 -1
- /package/dist/{packages/plugin → plugin}/src/fs/wrappers/memory-control.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/decision/interface.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/AddRecord.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/CreateLocalDir.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/CreateRemoteDir.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/Download.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/MoveLocal.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/MoveRemote.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/RemoveLocal.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/RemoveRecord.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/RemoveRemote.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/ResolveConflict.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/Upload.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/sync/tasks/interface.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/utils/move-value.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/utils/pipe.js +0 -0
- /package/dist/{packages/plugin → plugin}/src/utils/sha-256.js +0 -0
- /package/dist/{packages/shared → shared}/src/path.js +0 -0
package/dist/dev.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./debug-wrapper.js";import t from"./
|
|
1
|
+
import e from"./debug-wrapper.js";import t from"./plugin/test/test-kit.js";import n from"./plugin/src/utils/sha-256.js";export{e as debugWrapper,n as sha256,t as testKit};
|
package/dist/dev.spec.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { At as FileStat, Dt as RootFs, Ft as RecordStatsMap, It as Stat, Lt as StatsMap, Mt as MaybePromise, Ot as WrappedFs, Pt as RecordStat, Rt as Binary,
|
|
1
|
+
import { At as FileStat, Dt as RootFs, Ft as RecordStatsMap, It as Stat, K as Decider, Lt as StatsMap, Mt as MaybePromise, Ot as WrappedFs, Pt as RecordStat, Rt as Binary, ct as TaskNames, d as RequestResponse, jt as FolderStat, l as Request, u as RequestParam, vt as Fs } from "./index-DbDrKV7S.spec.js";
|
|
2
2
|
//#region src/sdk/debug-wrapper.d.ts
|
|
3
3
|
declare function debugWrapper(original: Fs, log: (content: string) => void): WrappedFs;
|
|
4
4
|
//#endregion
|
|
@@ -32,9 +32,9 @@ type RecordStat = {
|
|
|
32
32
|
};
|
|
33
33
|
type StatsMap = Map<string, Stat$1>;
|
|
34
34
|
type RecordStatsMap = Map<string, RecordStat>;
|
|
35
|
-
type
|
|
35
|
+
type GlobStrategy = {
|
|
36
36
|
expr: string;
|
|
37
|
-
|
|
37
|
+
strategy: string;
|
|
38
38
|
};
|
|
39
39
|
type Progress<T = string> = {
|
|
40
40
|
total: number;
|
|
@@ -62,7 +62,8 @@ type RootFs = {
|
|
|
62
62
|
exists(key: string): MaybePromise<boolean>;
|
|
63
63
|
list(key: string, reporter: ListReporter): MaybePromise<Array<Stat$1>>;
|
|
64
64
|
};
|
|
65
|
-
type
|
|
65
|
+
type ListOptions = 'include' | 'exclude' | 'advance';
|
|
66
|
+
type ListReporter = (progress: Required<Progress>) => MaybePromise<ListOptions>;
|
|
66
67
|
type WrappedFs = RootFs & {
|
|
67
68
|
original: Fs;
|
|
68
69
|
};
|
|
@@ -203,7 +204,7 @@ declare class Storage {
|
|
|
203
204
|
private readonly memoryDB;
|
|
204
205
|
private readonly indexedDB;
|
|
205
206
|
constructor(ctx: {
|
|
206
|
-
getNamespace: () => string;
|
|
207
|
+
getNamespace: () => string | Error;
|
|
207
208
|
});
|
|
208
209
|
private readonly getRecordStore;
|
|
209
210
|
private readonly deleteRecordStore;
|
|
@@ -212,16 +213,7 @@ declare class Storage {
|
|
|
212
213
|
readonly root: {
|
|
213
214
|
clearRecordStores: () => Promise<void>;
|
|
214
215
|
deleteRecordStore: (namespace?: string) => MaybePromise<void>;
|
|
215
|
-
getRecordStore: (namespace?:
|
|
216
|
-
get(key: string): Promise<RecordStat | undefined>;
|
|
217
|
-
set(key: string, value: RecordStat): Promise<void>;
|
|
218
|
-
delete(key: string): Promise<void>;
|
|
219
|
-
clear(): Promise<void>;
|
|
220
|
-
keys(): Promise<string[]>;
|
|
221
|
-
values(): Promise<RecordStat[]>;
|
|
222
|
-
entries(): Promise<[string, RecordStat][]>;
|
|
223
|
-
batch(operations: StoreOperations<RecordStat>[]): Promise<GetResult<RecordStat>[]>;
|
|
224
|
-
};
|
|
216
|
+
getRecordStore: <N extends string | undefined>(namespace?: N) => N extends string ? RecordStore : RecordStore | undefined;
|
|
225
217
|
indexedDB: DatabaseAsync<General$1, General$1>;
|
|
226
218
|
memoryDB: {
|
|
227
219
|
getStore<K extends string | number | symbol>(name: K): {
|
|
@@ -401,7 +393,6 @@ type DeciderInput = {
|
|
|
401
393
|
remoteStats: StatsMap;
|
|
402
394
|
records: RecordStatsMap;
|
|
403
395
|
taskFactory: TaskFactory;
|
|
404
|
-
logger: (log: string) => void;
|
|
405
396
|
};
|
|
406
397
|
//#endregion
|
|
407
398
|
//#region src/sync/tasks/CreateLocalDir.d.ts
|
|
@@ -416,8 +407,8 @@ declare class EventBus {
|
|
|
416
407
|
readonly events: {
|
|
417
408
|
logSync: string;
|
|
418
409
|
logGeneral: string;
|
|
419
|
-
errorSync:
|
|
420
|
-
errorGeneral:
|
|
410
|
+
errorSync: Error;
|
|
411
|
+
errorGeneral: Error;
|
|
421
412
|
};
|
|
422
413
|
private readonly cleanupCallbacks;
|
|
423
414
|
private readonly isIdle;
|
|
@@ -427,6 +418,8 @@ declare class EventBus {
|
|
|
427
418
|
private readonly getThisSync;
|
|
428
419
|
private readonly putSyncLog;
|
|
429
420
|
private readonly putGeneralLog;
|
|
421
|
+
private readonly putSyncError;
|
|
422
|
+
private readonly putGeneralError;
|
|
430
423
|
private readonly subscribers;
|
|
431
424
|
private readonly on;
|
|
432
425
|
private readonly dispatch;
|
|
@@ -460,6 +453,84 @@ declare class I18n {
|
|
|
460
453
|
};
|
|
461
454
|
}
|
|
462
455
|
//#endregion
|
|
456
|
+
//#region src/utils/glob-match.d.ts
|
|
457
|
+
type GlobMatchResult = {
|
|
458
|
+
strategy: string;
|
|
459
|
+
advance?: boolean;
|
|
460
|
+
};
|
|
461
|
+
//#endregion
|
|
462
|
+
//#region src/modules/Sync.d.ts
|
|
463
|
+
type SyncTerminateReason = {
|
|
464
|
+
result: 'cancelled';
|
|
465
|
+
} | {
|
|
466
|
+
result: 'completed';
|
|
467
|
+
} | {
|
|
468
|
+
result: 'failed';
|
|
469
|
+
error: Error;
|
|
470
|
+
} | {
|
|
471
|
+
result: 'noop';
|
|
472
|
+
};
|
|
473
|
+
type TaskInfo = {
|
|
474
|
+
name: TaskNames;
|
|
475
|
+
key: string;
|
|
476
|
+
prettyName: string;
|
|
477
|
+
isDir: boolean;
|
|
478
|
+
};
|
|
479
|
+
type FailedTaskInfo = TaskInfo & {
|
|
480
|
+
error: Error;
|
|
481
|
+
};
|
|
482
|
+
type RemoteLister = (info: Infras & {
|
|
483
|
+
reporter: ListReporter;
|
|
484
|
+
}) => MaybePromise<Array<Stat$1>>;
|
|
485
|
+
type SyncOptions = {
|
|
486
|
+
remoteLister?: RemoteLister;
|
|
487
|
+
conflictResolver?: ConflictResolver;
|
|
488
|
+
detectMoves?: boolean;
|
|
489
|
+
needConfirmTasks?: boolean;
|
|
490
|
+
needConfirmDeletion?: boolean;
|
|
491
|
+
syncStrategy?: Array<GlobStrategy>;
|
|
492
|
+
};
|
|
493
|
+
declare class Sync {
|
|
494
|
+
private readonly ctx;
|
|
495
|
+
constructor(ctx: {
|
|
496
|
+
dispatch: Dispatch<Events>;
|
|
497
|
+
initializeSync: () => Infras;
|
|
498
|
+
on: On<Events>;
|
|
499
|
+
translate: Translate<Translations>;
|
|
500
|
+
getConflictResolver: () => ConflictResolver;
|
|
501
|
+
decideTasks: (input: DecideTasksInput) => Array<BaseTask>;
|
|
502
|
+
});
|
|
503
|
+
readonly events: {
|
|
504
|
+
syncStarted: {
|
|
505
|
+
isCancelled: Ref<boolean>;
|
|
506
|
+
trigger: string;
|
|
507
|
+
};
|
|
508
|
+
syncInitialized: Infras & {
|
|
509
|
+
match: (path: string) => GlobMatchResult;
|
|
510
|
+
};
|
|
511
|
+
remoteWalkProgress: Progress;
|
|
512
|
+
syncTerminated: SyncTerminateReason;
|
|
513
|
+
requestConfirmDelete: Array<RemoveLocal>;
|
|
514
|
+
requestConfirmTasks: Array<BaseTask>;
|
|
515
|
+
syncCanceled: undefined;
|
|
516
|
+
taskCompleted: TaskInfo;
|
|
517
|
+
taskFailed: FailedTaskInfo;
|
|
518
|
+
executionStarted: Array<BaseTask>;
|
|
519
|
+
};
|
|
520
|
+
readonly settings: {
|
|
521
|
+
maxFileSize: TogglableValue;
|
|
522
|
+
syncStrategy: Array<GlobStrategy>;
|
|
523
|
+
};
|
|
524
|
+
private readonly postProcess;
|
|
525
|
+
private readonly confirmTasks;
|
|
526
|
+
private readonly confirmDeletion;
|
|
527
|
+
private readonly executeSync;
|
|
528
|
+
private readonly convertDeleteToUpload;
|
|
529
|
+
root: {
|
|
530
|
+
executeSync: (trigger: string, options?: SyncOptions) => Promise<SyncTerminateReason>;
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
//#endregion
|
|
463
534
|
//#region src/modules/Observability.d.ts
|
|
464
535
|
type SyncStage = 'none' | 'walkingRemote' | 'awaitingConfirmation' | 'executing' | 'completed' | 'completedNoop' | 'cancelled' | 'failed';
|
|
465
536
|
type AddRibbonIcon = (icon: IconName, title: string, callback: (evt: MouseEvent) => void) => HTMLElement;
|
|
@@ -709,7 +780,7 @@ declare function reactivelyValidate<T>({ text, parse, onSave, format, immediate
|
|
|
709
780
|
onSave: (value: T) => void;
|
|
710
781
|
immediate?: boolean;
|
|
711
782
|
}): void;
|
|
712
|
-
declare function generateEditableList<T>({ memoryDB, items, identifier, saveSettings, rerenderSettingTab, defaultValue, render, translations: { add, empty, heading }, extraButtons }: {
|
|
783
|
+
declare function generateEditableList<T>({ memoryDB, items, identifier, saveSettings, rerenderSettingTab, defaultValue, render, translations: { add, empty, heading }, extraButtons, reorder }: {
|
|
713
784
|
memoryDB: DatabaseSync<EphemeralEditableListSchema>;
|
|
714
785
|
items: Array<T>;
|
|
715
786
|
identifier: string;
|
|
@@ -723,6 +794,7 @@ declare function generateEditableList<T>({ memoryDB, items, identifier, saveSett
|
|
|
723
794
|
heading?: string;
|
|
724
795
|
};
|
|
725
796
|
extraButtons?: Array<(button: ExtraButtonComponent, list: Array<EphemeralEditableItem<T>>, save: () => void) => void>;
|
|
797
|
+
reorder?: boolean;
|
|
726
798
|
}): SettingDefinitionList;
|
|
727
799
|
//#endregion
|
|
728
800
|
//#region src/settings/controls.d.ts
|
|
@@ -765,28 +837,14 @@ type DevelopmentSettingTranslations = {
|
|
|
765
837
|
//#region src/components/MigrationModal.d.ts
|
|
766
838
|
type MigrationModalTranslations = {
|
|
767
839
|
cancel: string;
|
|
840
|
+
confirm: string;
|
|
768
841
|
remoteMigration: string;
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
migrationPhase1Description: string;
|
|
773
|
-
migrationPhase2Description: string;
|
|
774
|
-
migrationPhase3Description: string;
|
|
775
|
-
toggleWithoutMigration: string;
|
|
776
|
-
migrationFailed: string;
|
|
777
|
-
completed: string;
|
|
778
|
-
hide: string;
|
|
779
|
-
done: string;
|
|
780
|
-
};
|
|
781
|
-
type MigrationContext = {
|
|
842
|
+
migrationInstruction: Fragment;
|
|
843
|
+
};
|
|
844
|
+
declare function setNeedMigration({ app, translate }: {
|
|
782
845
|
app: App;
|
|
783
|
-
dispatch: Dispatch<Events>;
|
|
784
846
|
translate: Translate<MigrationModalTranslations>;
|
|
785
|
-
|
|
786
|
-
initializeSync: () => Infras;
|
|
787
|
-
memoryDB: ExistingMemoryDB;
|
|
788
|
-
};
|
|
789
|
-
declare function setNeedMigration(ctx: MigrationContext, { toggle, needMigration, content, apply }: {
|
|
847
|
+
}, { toggle, needMigration, content, apply }: {
|
|
790
848
|
toggle: ToggleComponent;
|
|
791
849
|
needMigration?: (value: boolean) => MaybePromise<boolean>;
|
|
792
850
|
content: (value: boolean) => string | DocumentFragment;
|
|
@@ -812,21 +870,6 @@ type FeaturesSettingTranslations = {
|
|
|
812
870
|
asymmetricStorageMigration: Fragment<boolean>;
|
|
813
871
|
} & MigrationModalTranslations;
|
|
814
872
|
//#endregion
|
|
815
|
-
//#region src/settings/filter.d.ts
|
|
816
|
-
type FilterSettingTranslations = {
|
|
817
|
-
filterRules: string;
|
|
818
|
-
inclusionRules: string;
|
|
819
|
-
inclusionRulesDescription: Fragment;
|
|
820
|
-
exclusionRules: string;
|
|
821
|
-
exclusionRulesDescription: Fragment;
|
|
822
|
-
xConfigured: Snippet<number>;
|
|
823
|
-
addInclusionRule: string;
|
|
824
|
-
addExclusionRule: string;
|
|
825
|
-
noRuleConfigured: string;
|
|
826
|
-
filterPlaceholder: string;
|
|
827
|
-
caseSensitive: string;
|
|
828
|
-
};
|
|
829
|
-
//#endregion
|
|
830
873
|
//#region src/sdk/prefix.d.ts
|
|
831
874
|
declare function prefixWrapper(original: Fs, prefix: string): WrappedFs;
|
|
832
875
|
//#endregion
|
|
@@ -854,17 +897,22 @@ type HeadSettingTranslations = {
|
|
|
854
897
|
backend: string;
|
|
855
898
|
backendDescription: string;
|
|
856
899
|
syncStrategy: string;
|
|
857
|
-
syncStrategyDescription:
|
|
900
|
+
syncStrategyDescription: Fragment;
|
|
901
|
+
globPlaceholder: string;
|
|
858
902
|
checkConnectionFailed: string;
|
|
859
903
|
checkConnectionSuccess: string;
|
|
860
904
|
checkConnection: string;
|
|
861
905
|
conflictResolveStrategy: string;
|
|
862
906
|
conflictResolveStrategyDescription: string;
|
|
863
907
|
xEnabled: Snippet<number>;
|
|
908
|
+
xConfigured: Snippet<number>;
|
|
864
909
|
settingTips: Fragment<{
|
|
865
910
|
labels: Array<LabelDefinition>;
|
|
866
911
|
addLabel: typeof addLabel;
|
|
867
912
|
}>;
|
|
913
|
+
addStrategy: string;
|
|
914
|
+
noStrategyConfigured: string;
|
|
915
|
+
dontSync: string;
|
|
868
916
|
};
|
|
869
917
|
declare function addLabel(element: Element, { text, tooltip, color, textColor }: LabelDefinition): HTMLSpanElement;
|
|
870
918
|
//#endregion
|
|
@@ -981,7 +1029,7 @@ declare class Bootstrap {
|
|
|
981
1029
|
keepRemote: string;
|
|
982
1030
|
renameAndKeepBoth: string;
|
|
983
1031
|
skip: string;
|
|
984
|
-
} & ControlsSettingTranslations & DevelopmentSettingTranslations & FeaturesSettingTranslations &
|
|
1032
|
+
} & ControlsSettingTranslations & DevelopmentSettingTranslations & FeaturesSettingTranslations & HeadSettingTranslations & MiscellaneousSettingTranslations & UntrustedModuleTranslations & FileTreeTranslations & ModulesTranslations;
|
|
985
1033
|
readonly settings: {
|
|
986
1034
|
maxMemoryConsumption: TogglableValue;
|
|
987
1035
|
maxRequestConcurrency: TogglableValue;
|
|
@@ -1103,8 +1151,7 @@ declare class Scheduler {
|
|
|
1103
1151
|
startupSync: TogglableValue;
|
|
1104
1152
|
scheduledSync: TogglableValue;
|
|
1105
1153
|
realtimeSync: TogglableValue;
|
|
1106
|
-
|
|
1107
|
-
inclusionRules: Array<GlobMatchRule>;
|
|
1154
|
+
syncStrategy: Array<GlobStrategy>;
|
|
1108
1155
|
avoidAutoSyncWhenOffline: boolean;
|
|
1109
1156
|
};
|
|
1110
1157
|
private readonly requestSync;
|
|
@@ -1138,84 +1185,6 @@ type Events = MergeSingleKey<InternalModules, 'events'>;
|
|
|
1138
1185
|
type Settings = MergeSingleKey<InternalModules, 'settings'>;
|
|
1139
1186
|
type Translations = MergeSingleKey<InternalModules, 'i18n'>;
|
|
1140
1187
|
//#endregion
|
|
1141
|
-
//#region src/utils/glob-match.d.ts
|
|
1142
|
-
type GlobMatchResult = 'include' | 'exclude' | 'advance' | 'probe';
|
|
1143
|
-
//#endregion
|
|
1144
|
-
//#region src/modules/Sync.d.ts
|
|
1145
|
-
type SyncTerminateReason = {
|
|
1146
|
-
result: 'cancelled';
|
|
1147
|
-
} | {
|
|
1148
|
-
result: 'completed';
|
|
1149
|
-
} | {
|
|
1150
|
-
result: 'failed';
|
|
1151
|
-
error: string;
|
|
1152
|
-
} | {
|
|
1153
|
-
result: 'noop';
|
|
1154
|
-
};
|
|
1155
|
-
type TaskInfo = {
|
|
1156
|
-
name: TaskNames;
|
|
1157
|
-
key: string;
|
|
1158
|
-
prettyName: string;
|
|
1159
|
-
isDir: boolean;
|
|
1160
|
-
};
|
|
1161
|
-
type FailedTaskInfo = TaskInfo & {
|
|
1162
|
-
error: string;
|
|
1163
|
-
};
|
|
1164
|
-
type RemoteLister = (info: Infras & {
|
|
1165
|
-
reporter: ListReporter;
|
|
1166
|
-
}) => MaybePromise<Array<Stat$1>>;
|
|
1167
|
-
type SyncOptions = {
|
|
1168
|
-
decider?: Decider;
|
|
1169
|
-
remoteLister?: RemoteLister;
|
|
1170
|
-
conflictResolver?: ConflictResolver;
|
|
1171
|
-
detectMoves?: boolean;
|
|
1172
|
-
needConfirmTasks?: boolean;
|
|
1173
|
-
needConfirmDeletion?: boolean;
|
|
1174
|
-
exclusionRules?: Array<GlobMatchRule>;
|
|
1175
|
-
inclusionRules?: Array<GlobMatchRule>;
|
|
1176
|
-
};
|
|
1177
|
-
declare class Sync {
|
|
1178
|
-
private readonly ctx;
|
|
1179
|
-
constructor(ctx: {
|
|
1180
|
-
dispatch: Dispatch<Events>;
|
|
1181
|
-
initializeSync: () => Infras;
|
|
1182
|
-
getDecider: () => Decider;
|
|
1183
|
-
on: On<Events>;
|
|
1184
|
-
translate: Translate<Translations>;
|
|
1185
|
-
getConflictResolver: () => ConflictResolver;
|
|
1186
|
-
});
|
|
1187
|
-
readonly events: {
|
|
1188
|
-
syncStarted: {
|
|
1189
|
-
isCancelled: Ref<boolean>;
|
|
1190
|
-
trigger: string;
|
|
1191
|
-
};
|
|
1192
|
-
syncInitialized: Infras & {
|
|
1193
|
-
match: (path: string) => GlobMatchResult;
|
|
1194
|
-
};
|
|
1195
|
-
remoteWalkProgress: Progress;
|
|
1196
|
-
syncTerminated: SyncTerminateReason;
|
|
1197
|
-
requestConfirmDelete: Array<RemoveLocal>;
|
|
1198
|
-
requestConfirmTasks: Array<BaseTask>;
|
|
1199
|
-
syncCanceled: undefined;
|
|
1200
|
-
taskCompleted: TaskInfo;
|
|
1201
|
-
taskFailed: FailedTaskInfo;
|
|
1202
|
-
executionStarted: Array<BaseTask>;
|
|
1203
|
-
};
|
|
1204
|
-
readonly settings: {
|
|
1205
|
-
maxFileSize: TogglableValue;
|
|
1206
|
-
exclusionRules: Array<GlobMatchRule>;
|
|
1207
|
-
inclusionRules: Array<GlobMatchRule>;
|
|
1208
|
-
};
|
|
1209
|
-
private readonly postProcess;
|
|
1210
|
-
private readonly confirmTasks;
|
|
1211
|
-
private readonly confirmDeletion;
|
|
1212
|
-
private readonly executeSync;
|
|
1213
|
-
private readonly convertDeleteToUpload;
|
|
1214
|
-
root: {
|
|
1215
|
-
executeSync: (trigger: string, options?: SyncOptions) => Promise<SyncTerminateReason>;
|
|
1216
|
-
};
|
|
1217
|
-
}
|
|
1218
|
-
//#endregion
|
|
1219
1188
|
//#region src/modules/Registrar.d.ts
|
|
1220
1189
|
type RejectableWrapper<T> = (value: T) => T | undefined;
|
|
1221
1190
|
type OrderedWrapperEntry<T> = {
|
|
@@ -1225,16 +1194,10 @@ type OrderedWrapperEntry<T> = {
|
|
|
1225
1194
|
type RemoteRequestMiddlewareEntry = OrderedWrapperEntry<Request>;
|
|
1226
1195
|
type LocalRequestMiddlewareEntry = OrderedWrapperEntry<VaultRequest>;
|
|
1227
1196
|
type FsWrapperEntry = OrderedWrapperEntry<Fs>;
|
|
1228
|
-
type CheckConnectionResult = {
|
|
1229
|
-
success: true;
|
|
1230
|
-
} | {
|
|
1231
|
-
success: false;
|
|
1232
|
-
reason: string;
|
|
1233
|
-
};
|
|
1234
1197
|
type RemoteFsEntry = {
|
|
1235
1198
|
instantiate: (request: Request) => RootFs;
|
|
1236
1199
|
prettyName: () => string;
|
|
1237
|
-
checkConnection: (request: Request) => MaybePromise<
|
|
1200
|
+
checkConnection: (request: Request) => MaybePromise<void | Error>;
|
|
1238
1201
|
};
|
|
1239
1202
|
type DeciderEntry = {
|
|
1240
1203
|
decider: Decider;
|
|
@@ -1272,6 +1235,12 @@ type RequestResponse = {
|
|
|
1272
1235
|
status: number;
|
|
1273
1236
|
};
|
|
1274
1237
|
type Request = (url: string, params?: RequestParam) => Promise<RequestResponse>;
|
|
1238
|
+
type DecideTasksInput = {
|
|
1239
|
+
local: Record<string, StatsMap>;
|
|
1240
|
+
remote: Record<string, StatsMap>;
|
|
1241
|
+
record: Record<string, RecordStatsMap>;
|
|
1242
|
+
taskFactory: TaskFactory;
|
|
1243
|
+
};
|
|
1275
1244
|
declare class Registrar {
|
|
1276
1245
|
private readonly ctx;
|
|
1277
1246
|
private readonly cleanupCallbacks;
|
|
@@ -1287,19 +1256,26 @@ declare class Registrar {
|
|
|
1287
1256
|
private readonly conflictResolverRegistry;
|
|
1288
1257
|
readonly settings: {
|
|
1289
1258
|
remoteFs: string;
|
|
1290
|
-
decider: string;
|
|
1291
1259
|
conflictResolver: string;
|
|
1292
1260
|
};
|
|
1261
|
+
readonly i18n: {
|
|
1262
|
+
pleaseSetBackend: string;
|
|
1263
|
+
backendNotInstalled: Snippet<string>;
|
|
1264
|
+
syncStrategyNotInstalled: Snippet<string>;
|
|
1265
|
+
conflictResolveStrategyNotInstalled: Snippet<string>;
|
|
1266
|
+
};
|
|
1293
1267
|
constructor(ctx: {
|
|
1294
1268
|
app: App;
|
|
1295
|
-
getRecordStore: (namespace
|
|
1269
|
+
getRecordStore: (namespace: string) => RecordStore;
|
|
1270
|
+
translate: Translate<Translations>;
|
|
1271
|
+
dispatch: Dispatch<Events>;
|
|
1296
1272
|
});
|
|
1297
1273
|
private readonly getVaultRequest;
|
|
1298
1274
|
private readonly createLocalFs;
|
|
1299
1275
|
private readonly createRemoteFs;
|
|
1300
1276
|
private readonly getRequest;
|
|
1301
1277
|
private readonly getCheckConnection;
|
|
1302
|
-
private readonly
|
|
1278
|
+
private readonly decideTasks;
|
|
1303
1279
|
private readonly optimizeLocal;
|
|
1304
1280
|
private readonly optimizeRemote;
|
|
1305
1281
|
private readonly reduceTriggers;
|
|
@@ -1309,12 +1285,12 @@ declare class Registrar {
|
|
|
1309
1285
|
root: {
|
|
1310
1286
|
conflictResolverRegistry: Map<string, ConflictResolverEntry>;
|
|
1311
1287
|
createLocalFs: () => Fs;
|
|
1312
|
-
createRemoteFs: (remoteFs?: string) => Fs;
|
|
1288
|
+
createRemoteFs: (remoteFs?: string) => Fs | Error;
|
|
1289
|
+
decideTasks: ({ local, record, remote, taskFactory }: DecideTasksInput) => BaseTask<TaskOptions>[];
|
|
1313
1290
|
deciderRegistry: Map<string, DeciderEntry>;
|
|
1314
|
-
getCheckConnection: (remoteFs?: string) => () => MaybePromise<
|
|
1291
|
+
getCheckConnection: (remoteFs?: string) => () => MaybePromise<void | Error>;
|
|
1315
1292
|
getConflictResolver: () => ConflictResolver;
|
|
1316
|
-
|
|
1317
|
-
getNamespace: (localFs?: Fs, remoteFs?: Fs) => string;
|
|
1293
|
+
getNamespace: <R extends Fs | undefined>(localFs?: Fs, remoteFs?: R) => R extends Fs ? string : string | Error;
|
|
1318
1294
|
getRequest: () => Request;
|
|
1319
1295
|
getVaultRequest: () => VaultRequest;
|
|
1320
1296
|
initializeSync: () => Infras;
|
|
@@ -1392,4 +1368,4 @@ type VaultRequest = <T extends VaultRequestParam = {
|
|
|
1392
1368
|
}>(key: string, params?: T) => Promise<VaultRequestResponseMap[T['method']]>;
|
|
1393
1369
|
type TrashOption = 'local' | 'system' | 'permanent';
|
|
1394
1370
|
//#endregion
|
|
1395
|
-
export {
|
|
1371
|
+
export { RemoveLocal as $, s as A, FileStat as At, Snippet as B, readWithSize as C, MoveAtom as Ct, LabelDefinition as D, RootFs as Dt, setNeedMigration as E, OutputAtom as Et, RemoteLister as F, RecordStatsMap as Ft, CreateLocalDir as G, TranslationResource as H, SyncOptions as I, Stat$1 as It, TaskFactory as J, Decider as K, SyncTerminateReason as L, StatsMap as Lt, SettingEntry as M, MaybePromise as Mt, AugmentedModuleMeta as N, Progress as Nt, generateEditableList as O, WrappedFs as Ot, ModuleMeta as P, RecordStat as Pt, RemoveRecord as Q, Fragment as R, Binary as Rt, pipe as S, MkdirAtom as St, prefixWrapper as T, OptimizerOutput as Tt, Dispatch as U, Translate as V, On as W, ResolveConflict as X, Upload as Y, RemoveRemote as Z, ExistingMemoryDB as _, DeleteAtom as _t, LocalRequestMiddlewareEntry as a, BaseTask as at, chunkSize as b, ListOptions as bt, RemoteRequestMiddlewareEntry as c, TaskNames as ct, RequestResponse as d, DatabaseSync as dt, MoveRemote as et, TriggerEntry as f, StoreAsync as ft, Translations as g, CustomAtom as gt, Settings as h, BatchOptimizer as ht, FsWrapperEntry as i, AddRecord as it, CallableOrObjectTree as j, FolderStat as jt, reactivelyValidate as k, WriteAtom as kt, Request as l, RecordStore as lt, Events as m, StoreSync as mt, ConflictResolverEntry as n, Download as nt, OptimizerEntry as o, ConflictResolver as ot, Context as p, StoreOperations as pt, DeciderInput as q, DeciderEntry as r, CreateRemoteDir as rt, RemoteFsEntry as s, ConflictResolverPayload as st, VaultRequest as t, MoveLocal as tt, RequestParam as u, DatabaseAsync as ut, SelectFromContext as v, Fs as vt, writeWithValue as w, OptimizerInput as wt, concurrency as x, ListReporter as xt, digOriginal as y, InputAtom as yt, ObsidianLanguageCode as z };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{chunkSize as e,concurrency as t,pipe as n,readWithSize as r,writeWithValue as i}from"./
|
|
1
|
+
import{chunkSize as e,concurrency as t,pipe as n,readWithSize as r,writeWithValue as i}from"./plugin/src/utils/pipe.js";import a from"./plugin/src/components/MigrationModal.js";import o from"./prefix.js";import{generateEditableList as s,reactivelyValidate as c,s as l}from"./plugin/src/settings/utils.js";function u(e){let t=e;for(;`original`in t;)t=t.original;return t}export{e as chunkSize,t as concurrency,u as digOriginal,s as generateEditableList,n as pipe,o as prefixWrapper,c as reactivelyValidate,r as readWithSize,l as s,a as setNeedMigration,i as writeWithValue};
|
package/dist/index.spec.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
export { type AddRecord, type AugmentedModuleMeta, type BaseTask, type BatchOptimizer, type Binary, type CallableOrObjectTree, type
|
|
1
|
+
import { $ as RemoveLocal, A as s, At as FileStat, B as Snippet, C as readWithSize, Ct as MoveAtom, D as LabelDefinition, Dt as RootFs, E as setNeedMigration, Et as OutputAtom, F as RemoteLister, Ft as RecordStatsMap, G as CreateLocalDir, H as TranslationResource, I as SyncOptions, It as Stat, J as TaskFactory, K as Decider, L as SyncTerminateReason, Lt as StatsMap, M as SettingEntry, Mt as MaybePromise, N as AugmentedModuleMeta, Nt as Progress, O as generateEditableList, Ot as WrappedFs, P as ModuleMeta, Pt as RecordStat, Q as RemoveRecord, R as Fragment, Rt as Binary, S as pipe, St as MkdirAtom, T as prefixWrapper, Tt as OptimizerOutput, U as Dispatch, V as Translate, W as On, X as ResolveConflict, Y as Upload, Z as RemoveRemote, _ as ExistingMemoryDB, _t as DeleteAtom, a as LocalRequestMiddlewareEntry, at as BaseTask, b as chunkSize, bt as ListOptions, c as RemoteRequestMiddlewareEntry, ct as TaskNames, d as RequestResponse, dt as DatabaseSync, et as MoveRemote, f as TriggerEntry, ft as StoreAsync, g as Translations, gt as CustomAtom, h as Settings, ht as BatchOptimizer, i as FsWrapperEntry, it as AddRecord, j as CallableOrObjectTree, jt as FolderStat, k as reactivelyValidate, kt as WriteAtom, l as Request, lt as RecordStore, m as Events, mt as StoreSync, n as ConflictResolverEntry, nt as Download, o as OptimizerEntry, ot as ConflictResolver, p as Context, pt as StoreOperations, q as DeciderInput, r as DeciderEntry, rt as CreateRemoteDir, s as RemoteFsEntry, st as ConflictResolverPayload, t as VaultRequest, tt as MoveLocal, u as RequestParam, ut as DatabaseAsync, v as SelectFromContext, vt as Fs, w as writeWithValue, wt as OptimizerInput, x as concurrency, xt as ListReporter, y as digOriginal, yt as InputAtom, z as ObsidianLanguageCode } from "./index-DbDrKV7S.spec.js";
|
|
2
|
+
export { type AddRecord, type AugmentedModuleMeta, type BaseTask, type BatchOptimizer, type Binary, type CallableOrObjectTree, type ConflictResolver, type ConflictResolverEntry, type ConflictResolverPayload, type Context, type CreateLocalDir, type CreateRemoteDir, type CustomAtom, type DatabaseAsync, type DatabaseSync, type Decider, type DeciderEntry, type DeciderInput, type DeleteAtom, type Dispatch, type Download, type Events, type ExistingMemoryDB, type FileStat, type FolderStat, type Fragment, type Fs, type FsWrapperEntry, type InputAtom, type LabelDefinition, type ListOptions, type ListReporter, type LocalRequestMiddlewareEntry, type MaybePromise, type MkdirAtom, type ModuleMeta, type MoveAtom, type MoveLocal, type MoveRemote, type ObsidianLanguageCode, type On, type OptimizerEntry, type OptimizerInput, type OptimizerOutput, type OutputAtom, type Progress, type RecordStat, type RecordStatsMap, type RecordStore, type RemoteFsEntry, type RemoteLister, type RemoteRequestMiddlewareEntry, type RemoveLocal, type RemoveRecord, type RemoveRemote, type Request, type RequestParam, type RequestResponse, type ResolveConflict, type RootFs, SelectFromContext, type SettingEntry, type Settings, type Snippet, type Stat, type StatsMap, type StoreAsync, type StoreOperations, type StoreSync, type SyncOptions, type SyncTerminateReason, type TaskFactory, type TaskNames, type Translate, type TranslationResource, type Translations, type TriggerEntry, type Upload, type VaultRequest, type WrappedFs, type WriteAtom, chunkSize, concurrency, digOriginal, generateEditableList, pipe, prefixWrapper, reactivelyValidate, readWithSize, s, setNeedMigration, writeWithValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Platform as e}from"obsidian";function t(e){let t=e,n=[t.status,t.res?.status,t.response?.status];for(let e of n)if(typeof e==`number`)return e}function n(){let t=5*1024**2;`deviceMemory`in navigator&&typeof navigator.deviceMemory==`number`?navigator.deviceMemory<=4&&(t/=2):navigator.hardwareConcurrency<=4&&(t/=2),e.isAndroidApp&&(t/=2);let n=t*.8;return{chunkSize:n,concurrency:Math.floor(16777216/n),streamThreshold:t}}const{chunkSize:r,concurrency:i,streamThreshold:a}=n();async function o({from:e,to:t,stat:n,key:r}){let i=await s(e,r,n);if(i)return c(t,r,i,n)}async function s(e,t,n){try{return n.size>a?await e.readStream(t,n):await e.read(t,n)}catch(e){if(l(e))return;throw e}}function c(e,t,n,r){return n instanceof ReadableStream?e.writeStream(t,n,r):e.write(t,n,r)}function l(e){return t(e)===404||(e.message??String(e)).toLocaleUpperCase().includes(`ENOENT`)}export{c as a,s as i,i as n,o as r,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ConfirmationModal as e}from"obsidian";function t({app:t,translate:n},{toggle:r,needMigration:i,content:a,apply:o}){let s=!1;r.onChange(c=>{if(s){s=!1;return}let l=async i=>{if(i){s=!0,r.setValue(!c);let i=new e(t).setTitle(n(`remoteMigration`)).setContent(createFragment(e=>{let t=a(c);e.append(t instanceof DocumentFragment?t:createEl(`p`,{text:t}),n(`migrationInstruction`))})).addCancelButton(n(`cancel`)).addButton(e=>e.setButtonText(n(`confirm`)).setCta().onClick(()=>(s=!0,r.setValue(c),o(c))));i.contentEl.addClass(`markdown-rendered`),i.open()}else await o(c)},u=i?.(c)??!0;u instanceof Promise?u.then(l):l(u)})}export{t as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{encodeURIComponent3986 as e}from"../../../shared/src/path.js";import{setIcon as t}from"obsidian";function n(e,t){return t?Object.assign(e,t):e}function r(){let n=`--sync-engine-warning`;if(activeDocument.body.style.getPropertyValue(n))return;let r=createDiv();t(r,`triangle-alert`),r.firstElementChild.setAttr(`stroke`,getComputedStyle(activeDocument.body).getPropertyValue(`--text-warning`)),activeDocument.body.style.setProperty(n,`url("data:image/svg+xml,${e(r.innerHTML)}")`)}function i({text:e,parse:t,onSave:n,format:i=String,immediate:a=!1}){r();let o,s=`sync-engine-invalid-input`,c=n=>{o=t(n),o===void 0?e.inputEl.addClass(s):e.inputEl.removeClass(s)};e.onChange(c).inputEl.addEventListener(`blur`,()=>{o!==void 0&&(n(o),e.setValue(i(o)))}),a&&c(e.getValue())}function a({memoryDB:e,items:t,identifier:n,saveSettings:r,rerenderSettingTab:i,defaultValue:a,render:o,translations:{add:s,empty:c,heading:l},extraButtons:u}){let
|
|
1
|
+
import{encodeURIComponent3986 as e}from"../../../shared/src/path.js";import{setIcon as t}from"obsidian";function n(e,t){return t?Object.assign(e,t):e}function r(){let n=`--sync-engine-warning`;if(activeDocument.body.style.getPropertyValue(n))return;let r=createDiv();t(r,`triangle-alert`),r.firstElementChild.setAttr(`stroke`,getComputedStyle(activeDocument.body).getPropertyValue(`--text-warning`)),activeDocument.body.style.setProperty(n,`url("data:image/svg+xml,${e(r.innerHTML)}")`)}function i({text:e,parse:t,onSave:n,format:i=String,immediate:a=!1}){r();let o,s=`sync-engine-invalid-input`,c=n=>{o=t(n),o===void 0?e.inputEl.addClass(s):e.inputEl.removeClass(s)};e.onChange(c).inputEl.addEventListener(`blur`,()=>{o!==void 0&&(n(o),e.setValue(i(o)))}),a&&c(e.getValue())}function a({memoryDB:e,items:t,identifier:n,saveSettings:r,rerenderSettingTab:i,defaultValue:a,render:o,translations:{add:s,empty:c,heading:l},extraButtons:u,reorder:d}){let f=e.getStore(`ephemeralEditableLists`),p=f.get(n)??t.map(e=>({new:!1,valid:!0,value:e}));f.set(n,p);let m=()=>{let e=p.filter(({valid:e})=>e).map(({value:e})=>e);t.length=0,t.push(...e),r()};return{addItem:{action:()=>{p.push({new:!0,valid:!1,value:structuredClone(a)}),i()},name:s},emptyState:c,extraButtons:u?u.map(e=>t=>e(t,p,m)):void 0,heading:l,items:p.map(e=>({name:``,render:t=>{t.settingEl.addClass(`sync-engine-editable-list`);let n=o(t,e,m);return e.new&&=!1,n},searchable:!1})),onDelete:e=>{p.splice(e,1),m(),i()},onReorder:d?(e,t)=>{let[n]=p.splice(e,1);p.splice(t,0,n),m(),i()}:void 0,type:`list`}}export{a as generateEditableList,i as reactivelyValidate,n as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{taskMap as e}from"../src/sync/decision/interface.js";const t=new TextEncoder;function n(e){return t.encode(e)}function r(e,t={}){let{mtime:n=1,size:r=5,uid:i=`${e}-uid`}=t;return{isDir:!1,key:e,mtime:n,size:r,uid:i}}function i(e){return{isDir:!0,key:e}}function a(e,t){return{isDir:!1,local:e,remote:t}}function o(){return{isDir:!0}}function s(t,n){let r=n.localStats??/* @__PURE__ */ new Map,i=n.remoteStats??/* @__PURE__ */ new Map,a=n.records??/* @__PURE__ */ new Map,o=[];return t({localStats:r,records:a,remoteStats:i,taskFactory:((t,n)=>{let r=e[t],i=new r({...n,localFs:{},record:{},remoteFs:{}});return i.name=t,i.prettyName=t,o.push({key:n.key,name:t,...n.local!==void 0&&{local:n.local},...n.remote!==void 0&&{remote:n.remote}}),i})}),o}function c(e){return e.map(e=>e.name)}function l(e){return e.map(e=>e.key)}function u(e,t){let n=e.filter(e=>e.key===t);if(n.length!==1)throw Error(`Expected one task for ${t}, found ${n.length}.`);return n[0]}function d(e){return e===`/`||e.endsWith(`/`)?i(e):r(e,{mtime:10,size:5,uid:`uid`})}function f(e=[]){return new ReadableStream({start(t){for(let r of e)t.enqueue(typeof r==`string`?n(r):r);t.close()}})}function p(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}async function m(e=4){for(let t=0;t<e;t+=1)await new Promise(e=>{queueMicrotask(e)})}function h(){return{delete:[],exists:[],list:[],mkdir:[],move:[],read:[],readStream:[],stat:[],write:[],writeStream:[]}}function g(e={}){return{delete:()=>{},exists:()=>!1,getUid:()=>`FsControl`,list:e=>[d(e),i(`${e}folder/`),r(`${e}folder/note.md`,{mtime:12,size:7,uid:`note-2`})],mkdir:()=>{},move:()=>{},read:()=>n(``),readStream:()=>f(),stat:e=>d(e),write:()=>`write-uid`,writeStream:()=>`stream-uid`,...e}}const _=()=>n(`ok`),v=()=>`ok`,y=()=>({});function b(e={}){return{bytes:_,headers:{},status:200,text:v,...e,json:e.json??y}}function x(e){let t=[];return{calls:t,request:async(n,r)=>(t.push({url:n,...r}),b(await e(n,r??{})))}}function S(e={}){let t=h(),n=g(e.control),r=e.uid??`uid`;return{calls:t,control:n,fs:{delete:e=>(t.delete.push(e),n.delete(e)),exists:e=>(t.exists.push(e),n.exists(e)),getUid:()=>r,list:(e,r)=>(t.list.push(e),n.list(e,r)),mkdir:(e,r)=>(t.mkdir.push(e),n.mkdir(e,r)),move:(e,r)=>(t.move.push([e,r]),n.move(e,r)),read:(e,r)=>(t.read.push([e,r]),n.read(e,r)),readStream:(e,r)=>(t.readStream.push([e,r]),n.readStream(e,r)),stat:e=>(t.stat.push(e),n.stat(e)),write:(e,r,i)=>(t.write.push([e,r,i]),n.write(e,r,i)),writeStream:(e,r,i)=>(t.writeStream.push([e,i]),n.writeStream(e,r,i))}}}const C={bytes:n,deferred:p,file:r,fileRecord:a,findTask:u,flush:m,folder:i,folderRecord:o,fs:S,request:x,runDecider:s,stream:f,taskKeys:l,taskNames:c};export{C as default};
|
package/dist/prefix.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{normalizeBaseDir as e}from"./
|
|
1
|
+
import{normalizeBaseDir as e}from"./shared/src/path.js";function t(e,t){return t===`/`?e:e===`/`?t:`${e}${t}`}function n(e,t){if(e===`/`)return t;if(!t.startsWith(e))throw Error(`Accessed out-of-scope path "${t}"`);return t=t.slice(e.length),t===``?`/`:t}function r(e,t){return Object.assign(t,{key:n(e,t.key)})}function i(e,t){return t.map(t=>r(e,t)).filter(e=>e.key!==`/`)}var a=class{original;prefix;constructor(e,t){this.original=e,this.prefix=t}getUid(){return`${this.original.getUid()}~${this.prefix}`}read(e,n){return this.original.read(t(this.prefix,e),n)}readStream(e,n){return this.original.readStream(t(this.prefix,e),n)}write(e,n,r){return this.original.write(t(this.prefix,e),n,r)}writeStream(e,n,r){return this.original.writeStream(t(this.prefix,e),n,r)}delete(e){return this.original.delete(t(this.prefix,e))}move(e,n){return this.original.move(t(this.prefix,e),t(this.prefix,n))}mkdir(e,n){return this.original.mkdir(t(this.prefix,e),n)}async stat(e){let n=await this.original.stat(t(this.prefix,e));return r(this.prefix,n)}exists(e){return this.original.exists(t(this.prefix,e))}async list(e,r){let a=await this.original.list(t(this.prefix,e),e=>r(Object.assign(e,{current:n(this.prefix,e.current)})));return i(this.prefix,a)}};function o(t,n){return new a(t,e(n))}export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){let t=e,n=[t.status,t.res?.status,t.response?.status];for(let e of n)if(typeof e==`number`)return e}export{e as getStatus};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e,n){let{equals:r=(e,t)=>e===t}=n??{},i=e,a=/* @__PURE__ */ new Set,o=(e=>{if(e===void 0)return t?.(o),i;if(r(e,i))return;let n=i;i=e;for(let t of[...a])if(t(e,n)===`stop`)break});return o.subscribe=(e,t)=>(a.add(e),t?.immediate&&e(i,i),()=>o.unsubscribe(e)),o.clear=a.clear.bind(a),o.unsubscribe=e=>a.delete(e),o}let t;export{e as ref};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getMessage as e}from"../../../shared/src/error.js";import{ref as t}from"../../../../node_modules/.bun/synthkernel@._synthkernel.tgz/node_modules/synthkernel/dist/reactive.js";import n from"./render-progress.js";import r from"../utils/round-percent.js";import{Modal as i,Notice as a,Setting as o}from"obsidian";var s=class extends i{ctx;options;cleanupCallbacks=[];completed=t(0);current=t(``);constructor(e,t){super(e.app),this.ctx=e,this.options=t,this.contentEl.addClass(`markdown-rendered`),this.setTitle(e.translate(`remoteMigration`))}onOpen(){let{contentEl:e,options:{content:t,apply:n}}=this,{translate:r}=this.ctx;e.empty(),typeof t==`string`?e.createEl(`p`,{cls:`whitespace-pre-wrap`,text:t}):e.append(t),e.createEl(`p`,{cls:`whitespace-pre-wrap`,text:r(`migrationDescription`)}),new o(e).addButton(e=>e.setButtonText(r(`cancel`)).onClick(this.close.bind(this))).addButton(e=>e.setButtonText(r(`toggleWithoutMigration`)).onClick(async()=>{await n(),this.close()})).addButton(e=>e.setButtonText(r(`startMigration`)).setCta().onClick(this.handleMigration))}handleMigration=()=>{let{current:e,completed:t,ctx:i,cleanupCallbacks:a,contentEl:s,migrate:c}=this,{translate:l,dispatch:u}=i;s.empty(),this.setTitle(l(`migrationProcess`));let{left:d,right:f,bar:p}=n(s,`mb-3`),m,h=e=>{m?.remove(),m=new o(s).addButton(t=>t.setButtonText(l(e)).onClick(()=>this.close())).settingEl};h(`hide`),a.push(t.subscribe(e=>{f.setText(`${e}/3 ${l(`completed`)}`),p.setValue(r(e,3))}),e.subscribe(e=>d.setText(e))),c().then(e=>{h(`done`),e.success||(u(`errorGeneral`,`Migration failed.`),d.setText(l(`migrationFailed`)))})};migrate=async()=>{let{current:t,completed:n,ctx:r}=this,{dispatch:i,requestSync:o,initializeSync:s,translate:c,memoryDB:l}=r,u=(e,t)=>{if(e.result===`failed`)return{reason:`Phase ${t}: ${e.error}`,success:!1};if(e.result===`cancelled`)return{reason:`Phase ${t}: sync cancelled`,success:!1}};i(`logGeneral`,`Migration started.`),n(0),t(c(`migrationPhase1Description`));let d=u(await o(`nonInteractiveManual`),1);if(d)return d;n(1),t(c(`migrationPhase2Description`));try{let{record:e,remoteFs:t}=s();await Promise.all([e.clear(),this.options.apply(),...l.getStore(`remoteContext20000`).keys().sort((e,t)=>t.length-e.length).map(e=>t.delete(e))])}catch(t){let n=e(t);return new a(`${c(`migrationFailed`)}: ${n}`),{reason:`Phase 2: ${n}`,success:!1}}return n(2),t(c(`migrationPhase3Description`)),u(await o(`migration`),3)||(n(3),t(c(`completed`)),{success:!0})};onClose(){this.cleanupCallbacks.splice(0).forEach(e=>e()),this.contentEl.empty()}};function c(e,{toggle:t,needMigration:n,content:r,apply:i}){let a=!1;t.onChange(o=>{if(a){a=!1;return}let c=async n=>{n?(a=!0,t.setValue(!o),new s(e,{apply:async()=>{await i(o),a=!0,t.setValue(o)},content:r(o)}).open()):await i(o)},l=n?.(o)??!0;l instanceof Promise?l.then(c):c(l)})}export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ProgressBarComponent as e}from"obsidian";function t(t,n){let r=t.createDiv(`flex flex-col gap-2 ${n??``}`),i=r.createDiv(`flex flex-row text-3 text-[--text-muted] whitespace-nowrap`),a=i.createDiv(`truncate mr-auto`),o=i.createDiv(`ml-2`);return{bar:new e(r),left:a,right:o}}export{t as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e,t){return Math.round(e/(t||1)*1e4)/100}export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{taskMap as e}from"../src/sync/decision/interface.js";const t=new TextEncoder;function n(e){return t.encode(e)}function r(e,t={}){let{mtime:n=1,size:r=5,uid:i=`${e}-uid`}=t;return{isDir:!1,key:e,mtime:n,size:r,uid:i}}function i(e){return{isDir:!0,key:e}}function a(e,t){return{isDir:!1,local:e,remote:t}}function o(){return{isDir:!0}}function s(t,n){let r=n.localStats??/* @__PURE__ */ new Map,i=n.remoteStats??/* @__PURE__ */ new Map,a=n.records??/* @__PURE__ */ new Map,o=[];return t({localStats:r,logger:()=>{},records:a,remoteStats:i,taskFactory:((t,n)=>{let r=e[t],i=new r({...n,localFs:{},record:{},remoteFs:{}});return i.name=t,i.prettyName=t,o.push({key:n.key,name:t,...n.local!==void 0&&{local:n.local},...n.remote!==void 0&&{remote:n.remote}}),i})}),o}function c(e){return e.map(e=>e.name)}function l(e){return e.map(e=>e.key)}function u(e,t){let n=e.filter(e=>e.key===t);if(n.length!==1)throw Error(`Expected one task for ${t}, found ${n.length}.`);return n[0]}function d(e){return e===`/`||e.endsWith(`/`)?i(e):r(e,{mtime:10,size:5,uid:`uid`})}function f(e=[]){return new ReadableStream({start(t){for(let r of e)t.enqueue(typeof r==`string`?n(r):r);t.close()}})}function p(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}async function m(e=4){for(let t=0;t<e;t+=1)await new Promise(e=>{queueMicrotask(e)})}function h(){return{delete:[],exists:[],list:[],mkdir:[],move:[],read:[],readStream:[],stat:[],write:[],writeStream:[]}}function g(e={}){return{delete:()=>{},exists:()=>!1,getUid:()=>`FsControl`,list:e=>[d(e),i(`${e}folder/`),r(`${e}folder/note.md`,{mtime:12,size:7,uid:`note-2`})],mkdir:()=>{},move:()=>{},read:()=>n(``),readStream:()=>f(),stat:e=>d(e),write:()=>`write-uid`,writeStream:()=>`stream-uid`,...e}}const _=()=>n(`ok`),v=()=>`ok`,y=()=>({});function b(e={}){return{bytes:_,headers:{},status:200,text:v,...e,json:e.json??y}}function x(e){let t=[];return{calls:t,request:async(n,r)=>(t.push({url:n,...r}),b(await e(n,r??{})))}}function S(e={}){let t=h(),n=g(e.control),r=e.uid??`uid`;return{calls:t,control:n,fs:{delete:e=>(t.delete.push(e),n.delete(e)),exists:e=>(t.exists.push(e),n.exists(e)),getUid:()=>r,list:(e,r)=>(t.list.push(e),n.list(e,r)),mkdir:(e,r)=>(t.mkdir.push(e),n.mkdir(e,r)),move:(e,r)=>(t.move.push([e,r]),n.move(e,r)),read:(e,r)=>(t.read.push([e,r]),n.read(e,r)),readStream:(e,r)=>(t.readStream.push([e,r]),n.readStream(e,r)),stat:e=>(t.stat.push(e),n.stat(e)),write:(e,r,i)=>(t.write.push([e,r,i]),n.write(e,r,i)),writeStream:(e,r,i)=>(t.writeStream.push([e,i]),n.writeStream(e,r,i))}}}const C={bytes:n,deferred:p,file:r,fileRecord:a,findTask:u,flush:m,folder:i,folderRecord:o,fs:S,request:x,runDecider:s,stream:f,taskKeys:l,taskNames:c};export{C as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){let t=e,n=[t.status,t.res?.status,t.response?.status];for(let e of n)if(typeof e==`number`)return e}function t(e){return e instanceof Error?e.message:String(e)}export{t as getMessage,e as getStatus};
|
package/dist/pipe-DuPrzktU.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Platform as e}from"obsidian";function t(e){let t=e,n=[t.status,t.res?.status,t.response?.status];for(let e of n)if(typeof e==`number`)return e}function n(e){return e instanceof Error?e.message:String(e)}function r(){let t=5*1024**2;`deviceMemory`in navigator&&typeof navigator.deviceMemory==`number`?navigator.deviceMemory<=4&&(t/=2):navigator.hardwareConcurrency<=4&&(t/=2),e.isAndroidApp&&(t/=2);let n=t*.8;return{chunkSize:n,concurrency:Math.floor(16777216/n),streamThreshold:t}}const{chunkSize:i,concurrency:a,streamThreshold:o}=r();async function s({from:e,to:t,stat:n,key:r}){let i=await c(e,r,n);if(i)return l(t,r,i,n)}async function c(e,t,n){try{return n.size>o?await e.readStream(t,n):await e.read(t,n)}catch(e){if(u(e))return;throw e}}function l(e,t,n,r){return n instanceof ReadableStream?e.writeStream(t,n,r):e.write(t,n,r)}function u(e){return t(e)===404||(e.message??String(e)).toLocaleUpperCase().includes(`ENOENT`)}export{l as a,c as i,a as n,n as o,s as r,i as t};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|