@haex-space/vault-sdk 2.5.37 → 2.5.42
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/{client-BF1XJY-3.d.mts → client-BAu3VPE3.d.mts} +264 -4
- package/dist/{client-D1sxoc42.d.ts → client-CF0wJxT2.d.ts} +264 -4
- package/dist/index.d.mts +68 -28
- package/dist/index.d.ts +68 -28
- package/dist/index.js +373 -80
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +371 -81
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +346 -80
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +346 -80
- package/dist/react.mjs.map +1 -1
- package/dist/runtime/nuxt.plugin.client.d.mts +1 -1
- package/dist/runtime/nuxt.plugin.client.d.ts +1 -1
- package/dist/runtime/nuxt.plugin.client.js +346 -80
- package/dist/runtime/nuxt.plugin.client.js.map +1 -1
- package/dist/runtime/nuxt.plugin.client.mjs +346 -80
- package/dist/runtime/nuxt.plugin.client.mjs.map +1 -1
- package/dist/svelte.d.mts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/svelte.js +346 -80
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +346 -80
- package/dist/svelte.mjs.map +1 -1
- package/dist/vue.d.mts +1 -1
- package/dist/vue.d.ts +1 -1
- package/dist/vue.js +346 -80
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +346 -80
- package/dist/vue.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -487,39 +487,50 @@ var HAEXTENSION_METHODS = {
|
|
|
487
487
|
filesystem: {
|
|
488
488
|
saveFile: "haextension:filesystem:save-file",
|
|
489
489
|
openFile: "haextension:filesystem:open-file",
|
|
490
|
-
showImage: "haextension:filesystem:show-image"
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
490
|
+
showImage: "haextension:filesystem:show-image"
|
|
491
|
+
},
|
|
492
|
+
filesync: {
|
|
493
|
+
// Spaces
|
|
494
|
+
listSpaces: "haextension:filesync:list-spaces",
|
|
495
|
+
createSpace: "haextension:filesync:create-space",
|
|
496
|
+
deleteSpace: "haextension:filesync:delete-space",
|
|
497
|
+
// Files
|
|
498
|
+
listFiles: "haextension:filesync:list-files",
|
|
499
|
+
getFile: "haextension:filesync:get-file",
|
|
500
|
+
uploadFile: "haextension:filesync:upload-file",
|
|
501
|
+
downloadFile: "haextension:filesync:download-file",
|
|
502
|
+
deleteFile: "haextension:filesync:delete-file",
|
|
503
|
+
// Backends
|
|
504
|
+
listBackends: "haextension:filesync:list-backends",
|
|
505
|
+
addBackend: "haextension:filesync:add-backend",
|
|
506
|
+
removeBackend: "haextension:filesync:remove-backend",
|
|
507
|
+
testBackend: "haextension:filesync:test-backend",
|
|
508
|
+
// Sync Rules
|
|
509
|
+
listSyncRules: "haextension:filesync:list-sync-rules",
|
|
510
|
+
addSyncRule: "haextension:filesync:add-sync-rule",
|
|
511
|
+
updateSyncRule: "haextension:filesync:update-sync-rule",
|
|
512
|
+
removeSyncRule: "haextension:filesync:remove-sync-rule",
|
|
513
|
+
// Sync Operations
|
|
514
|
+
getSyncStatus: "haextension:filesync:get-sync-status",
|
|
515
|
+
triggerSync: "haextension:filesync:trigger-sync",
|
|
516
|
+
pauseSync: "haextension:filesync:pause-sync",
|
|
517
|
+
resumeSync: "haextension:filesync:resume-sync",
|
|
518
|
+
// Conflict Resolution
|
|
519
|
+
resolveConflict: "haextension:filesync:resolve-conflict",
|
|
520
|
+
// UI Helpers
|
|
521
|
+
selectFolder: "haextension:filesync:select-folder",
|
|
522
|
+
scanLocal: "haextension:filesync:scan-local",
|
|
523
|
+
// Sync Queue (persistent upload/download queue)
|
|
524
|
+
addToQueue: "haextension:filesync:add-to-queue",
|
|
525
|
+
getQueue: "haextension:filesync:get-queue",
|
|
526
|
+
getQueueSummary: "haextension:filesync:get-queue-summary",
|
|
527
|
+
startQueueEntry: "haextension:filesync:start-queue-entry",
|
|
528
|
+
completeQueueEntry: "haextension:filesync:complete-queue-entry",
|
|
529
|
+
failQueueEntry: "haextension:filesync:fail-queue-entry",
|
|
530
|
+
retryFailedQueue: "haextension:filesync:retry-failed-queue",
|
|
531
|
+
removeQueueEntry: "haextension:filesync:remove-queue-entry",
|
|
532
|
+
clearQueue: "haextension:filesync:clear-queue",
|
|
533
|
+
recoverQueue: "haextension:filesync:recover-queue"
|
|
523
534
|
},
|
|
524
535
|
storage: {
|
|
525
536
|
getItem: "haextension:storage:get-item",
|
|
@@ -528,6 +539,19 @@ var HAEXTENSION_METHODS = {
|
|
|
528
539
|
clear: "haextension:storage:clear",
|
|
529
540
|
keys: "haextension:storage:keys"
|
|
530
541
|
},
|
|
542
|
+
// Remote Storage API (S3, WebDAV, FTP, etc.)
|
|
543
|
+
remoteStorage: {
|
|
544
|
+
// Backend Management
|
|
545
|
+
listBackends: "haextension:remote-storage:list-backends",
|
|
546
|
+
addBackend: "haextension:remote-storage:add-backend",
|
|
547
|
+
removeBackend: "haextension:remote-storage:remove-backend",
|
|
548
|
+
testBackend: "haextension:remote-storage:test-backend",
|
|
549
|
+
// Storage Operations
|
|
550
|
+
upload: "haextension:remote-storage:upload",
|
|
551
|
+
download: "haextension:remote-storage:download",
|
|
552
|
+
delete: "haextension:remote-storage:delete",
|
|
553
|
+
list: "haextension:remote-storage:list"
|
|
554
|
+
},
|
|
531
555
|
web: {
|
|
532
556
|
fetch: "haextension:web:fetch"
|
|
533
557
|
},
|
|
@@ -685,6 +709,16 @@ var CONFLICT_STRATEGY = {
|
|
|
685
709
|
/** Keep both versions (create conflict copy) */
|
|
686
710
|
KEEP_BOTH: "keepBoth"
|
|
687
711
|
};
|
|
712
|
+
var QUEUE_OPERATION = {
|
|
713
|
+
UPLOAD: "upload",
|
|
714
|
+
DOWNLOAD: "download"
|
|
715
|
+
};
|
|
716
|
+
var QUEUE_STATUS = {
|
|
717
|
+
PENDING: "pending",
|
|
718
|
+
IN_PROGRESS: "inProgress",
|
|
719
|
+
COMPLETED: "completed",
|
|
720
|
+
FAILED: "failed"
|
|
721
|
+
};
|
|
688
722
|
var FileSyncAPI = class {
|
|
689
723
|
constructor(client) {
|
|
690
724
|
this.client = client;
|
|
@@ -697,7 +731,7 @@ var FileSyncAPI = class {
|
|
|
697
731
|
*/
|
|
698
732
|
async listSpacesAsync() {
|
|
699
733
|
return this.client.request(
|
|
700
|
-
HAEXTENSION_METHODS.
|
|
734
|
+
HAEXTENSION_METHODS.filesync.listSpaces
|
|
701
735
|
);
|
|
702
736
|
}
|
|
703
737
|
/**
|
|
@@ -705,7 +739,7 @@ var FileSyncAPI = class {
|
|
|
705
739
|
*/
|
|
706
740
|
async createSpaceAsync(options) {
|
|
707
741
|
return this.client.request(
|
|
708
|
-
HAEXTENSION_METHODS.
|
|
742
|
+
HAEXTENSION_METHODS.filesync.createSpace,
|
|
709
743
|
options
|
|
710
744
|
);
|
|
711
745
|
}
|
|
@@ -713,7 +747,7 @@ var FileSyncAPI = class {
|
|
|
713
747
|
* Delete a file space
|
|
714
748
|
*/
|
|
715
749
|
async deleteSpaceAsync(spaceId) {
|
|
716
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
750
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.deleteSpace, {
|
|
717
751
|
spaceId
|
|
718
752
|
});
|
|
719
753
|
}
|
|
@@ -725,7 +759,7 @@ var FileSyncAPI = class {
|
|
|
725
759
|
*/
|
|
726
760
|
async listFilesAsync(options) {
|
|
727
761
|
return this.client.request(
|
|
728
|
-
HAEXTENSION_METHODS.
|
|
762
|
+
HAEXTENSION_METHODS.filesync.listFiles,
|
|
729
763
|
options
|
|
730
764
|
);
|
|
731
765
|
}
|
|
@@ -735,7 +769,7 @@ var FileSyncAPI = class {
|
|
|
735
769
|
*/
|
|
736
770
|
async scanLocalAsync(options) {
|
|
737
771
|
return this.client.request(
|
|
738
|
-
HAEXTENSION_METHODS.
|
|
772
|
+
HAEXTENSION_METHODS.filesync.scanLocal,
|
|
739
773
|
options
|
|
740
774
|
);
|
|
741
775
|
}
|
|
@@ -744,7 +778,7 @@ var FileSyncAPI = class {
|
|
|
744
778
|
*/
|
|
745
779
|
async getFileAsync(fileId) {
|
|
746
780
|
return this.client.request(
|
|
747
|
-
HAEXTENSION_METHODS.
|
|
781
|
+
HAEXTENSION_METHODS.filesync.getFile,
|
|
748
782
|
{ fileId }
|
|
749
783
|
);
|
|
750
784
|
}
|
|
@@ -753,7 +787,7 @@ var FileSyncAPI = class {
|
|
|
753
787
|
*/
|
|
754
788
|
async uploadFileAsync(options) {
|
|
755
789
|
return this.client.request(
|
|
756
|
-
HAEXTENSION_METHODS.
|
|
790
|
+
HAEXTENSION_METHODS.filesync.uploadFile,
|
|
757
791
|
options
|
|
758
792
|
);
|
|
759
793
|
}
|
|
@@ -762,7 +796,7 @@ var FileSyncAPI = class {
|
|
|
762
796
|
*/
|
|
763
797
|
async downloadFileAsync(options) {
|
|
764
798
|
await this.client.request(
|
|
765
|
-
HAEXTENSION_METHODS.
|
|
799
|
+
HAEXTENSION_METHODS.filesync.downloadFile,
|
|
766
800
|
options
|
|
767
801
|
);
|
|
768
802
|
}
|
|
@@ -770,7 +804,7 @@ var FileSyncAPI = class {
|
|
|
770
804
|
* Delete a file from the sync system
|
|
771
805
|
*/
|
|
772
806
|
async deleteFileAsync(fileId) {
|
|
773
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
807
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.deleteFile, {
|
|
774
808
|
fileId
|
|
775
809
|
});
|
|
776
810
|
}
|
|
@@ -782,7 +816,7 @@ var FileSyncAPI = class {
|
|
|
782
816
|
*/
|
|
783
817
|
async listBackendsAsync() {
|
|
784
818
|
return this.client.request(
|
|
785
|
-
HAEXTENSION_METHODS.
|
|
819
|
+
HAEXTENSION_METHODS.filesync.listBackends
|
|
786
820
|
);
|
|
787
821
|
}
|
|
788
822
|
/**
|
|
@@ -790,7 +824,7 @@ var FileSyncAPI = class {
|
|
|
790
824
|
*/
|
|
791
825
|
async addBackendAsync(options) {
|
|
792
826
|
return this.client.request(
|
|
793
|
-
HAEXTENSION_METHODS.
|
|
827
|
+
HAEXTENSION_METHODS.filesync.addBackend,
|
|
794
828
|
options
|
|
795
829
|
);
|
|
796
830
|
}
|
|
@@ -798,7 +832,7 @@ var FileSyncAPI = class {
|
|
|
798
832
|
* Remove a storage backend
|
|
799
833
|
*/
|
|
800
834
|
async removeBackendAsync(backendId) {
|
|
801
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
835
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.removeBackend, {
|
|
802
836
|
backendId
|
|
803
837
|
});
|
|
804
838
|
}
|
|
@@ -807,7 +841,7 @@ var FileSyncAPI = class {
|
|
|
807
841
|
*/
|
|
808
842
|
async testBackendAsync(backendId) {
|
|
809
843
|
return this.client.request(
|
|
810
|
-
HAEXTENSION_METHODS.
|
|
844
|
+
HAEXTENSION_METHODS.filesync.testBackend,
|
|
811
845
|
{ backendId }
|
|
812
846
|
);
|
|
813
847
|
}
|
|
@@ -819,7 +853,7 @@ var FileSyncAPI = class {
|
|
|
819
853
|
*/
|
|
820
854
|
async listSyncRulesAsync() {
|
|
821
855
|
return this.client.request(
|
|
822
|
-
HAEXTENSION_METHODS.
|
|
856
|
+
HAEXTENSION_METHODS.filesync.listSyncRules
|
|
823
857
|
);
|
|
824
858
|
}
|
|
825
859
|
/**
|
|
@@ -827,7 +861,7 @@ var FileSyncAPI = class {
|
|
|
827
861
|
*/
|
|
828
862
|
async addSyncRuleAsync(options) {
|
|
829
863
|
return this.client.request(
|
|
830
|
-
HAEXTENSION_METHODS.
|
|
864
|
+
HAEXTENSION_METHODS.filesync.addSyncRule,
|
|
831
865
|
options
|
|
832
866
|
);
|
|
833
867
|
}
|
|
@@ -836,7 +870,7 @@ var FileSyncAPI = class {
|
|
|
836
870
|
*/
|
|
837
871
|
async updateSyncRuleAsync(options) {
|
|
838
872
|
return this.client.request(
|
|
839
|
-
HAEXTENSION_METHODS.
|
|
873
|
+
HAEXTENSION_METHODS.filesync.updateSyncRule,
|
|
840
874
|
options
|
|
841
875
|
);
|
|
842
876
|
}
|
|
@@ -844,7 +878,7 @@ var FileSyncAPI = class {
|
|
|
844
878
|
* Remove a sync rule
|
|
845
879
|
*/
|
|
846
880
|
async removeSyncRuleAsync(ruleId) {
|
|
847
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
881
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.removeSyncRule, {
|
|
848
882
|
ruleId
|
|
849
883
|
});
|
|
850
884
|
}
|
|
@@ -856,26 +890,26 @@ var FileSyncAPI = class {
|
|
|
856
890
|
*/
|
|
857
891
|
async getSyncStatusAsync() {
|
|
858
892
|
return this.client.request(
|
|
859
|
-
HAEXTENSION_METHODS.
|
|
893
|
+
HAEXTENSION_METHODS.filesync.getSyncStatus
|
|
860
894
|
);
|
|
861
895
|
}
|
|
862
896
|
/**
|
|
863
897
|
* Trigger a manual sync
|
|
864
898
|
*/
|
|
865
899
|
async triggerSyncAsync() {
|
|
866
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
900
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.triggerSync);
|
|
867
901
|
}
|
|
868
902
|
/**
|
|
869
903
|
* Pause syncing
|
|
870
904
|
*/
|
|
871
905
|
async pauseSyncAsync() {
|
|
872
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
906
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.pauseSync);
|
|
873
907
|
}
|
|
874
908
|
/**
|
|
875
909
|
* Resume syncing
|
|
876
910
|
*/
|
|
877
911
|
async resumeSyncAsync() {
|
|
878
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
912
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.resumeSync);
|
|
879
913
|
}
|
|
880
914
|
// --------------------------------------------------------------------------
|
|
881
915
|
// Conflict Resolution
|
|
@@ -884,7 +918,7 @@ var FileSyncAPI = class {
|
|
|
884
918
|
* Resolve a file conflict
|
|
885
919
|
*/
|
|
886
920
|
async resolveConflictAsync(fileId, resolution) {
|
|
887
|
-
await this.client.request(HAEXTENSION_METHODS.
|
|
921
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.resolveConflict, {
|
|
888
922
|
fileId,
|
|
889
923
|
resolution
|
|
890
924
|
});
|
|
@@ -897,9 +931,91 @@ var FileSyncAPI = class {
|
|
|
897
931
|
*/
|
|
898
932
|
async selectFolderAsync() {
|
|
899
933
|
return this.client.request(
|
|
900
|
-
HAEXTENSION_METHODS.
|
|
934
|
+
HAEXTENSION_METHODS.filesync.selectFolder
|
|
935
|
+
);
|
|
936
|
+
}
|
|
937
|
+
// --------------------------------------------------------------------------
|
|
938
|
+
// Sync Queue
|
|
939
|
+
// --------------------------------------------------------------------------
|
|
940
|
+
/**
|
|
941
|
+
* Add files to the sync queue
|
|
942
|
+
*/
|
|
943
|
+
async addToQueueAsync(options) {
|
|
944
|
+
return this.client.request(
|
|
945
|
+
HAEXTENSION_METHODS.filesync.addToQueue,
|
|
946
|
+
options
|
|
947
|
+
);
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
950
|
+
* Get queue entries for the current device
|
|
951
|
+
*/
|
|
952
|
+
async getQueueAsync(options) {
|
|
953
|
+
return this.client.request(
|
|
954
|
+
HAEXTENSION_METHODS.filesync.getQueue,
|
|
955
|
+
options
|
|
956
|
+
);
|
|
957
|
+
}
|
|
958
|
+
/**
|
|
959
|
+
* Get aggregated queue summary for the current device
|
|
960
|
+
*/
|
|
961
|
+
async getQueueSummaryAsync() {
|
|
962
|
+
return this.client.request(
|
|
963
|
+
HAEXTENSION_METHODS.filesync.getQueueSummary
|
|
901
964
|
);
|
|
902
965
|
}
|
|
966
|
+
/**
|
|
967
|
+
* Mark a queue entry as started (in_progress)
|
|
968
|
+
*/
|
|
969
|
+
async startQueueEntryAsync(entryId) {
|
|
970
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.startQueueEntry, {
|
|
971
|
+
entryId
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
/**
|
|
975
|
+
* Mark a queue entry as completed
|
|
976
|
+
*/
|
|
977
|
+
async completeQueueEntryAsync(entryId) {
|
|
978
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.completeQueueEntry, {
|
|
979
|
+
entryId
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Mark a queue entry as failed
|
|
984
|
+
*/
|
|
985
|
+
async failQueueEntryAsync(entryId, errorMessage) {
|
|
986
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.failQueueEntry, {
|
|
987
|
+
entryId,
|
|
988
|
+
errorMessage
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
/**
|
|
992
|
+
* Retry all failed queue entries (reset to pending)
|
|
993
|
+
*/
|
|
994
|
+
async retryFailedQueueAsync() {
|
|
995
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.retryFailedQueue);
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Remove a queue entry
|
|
999
|
+
*/
|
|
1000
|
+
async removeQueueEntryAsync(entryId) {
|
|
1001
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.removeQueueEntry, {
|
|
1002
|
+
entryId
|
|
1003
|
+
});
|
|
1004
|
+
}
|
|
1005
|
+
/**
|
|
1006
|
+
* Clear all queue entries for a sync rule
|
|
1007
|
+
*/
|
|
1008
|
+
async clearQueueAsync(ruleId) {
|
|
1009
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.clearQueue, {
|
|
1010
|
+
ruleId
|
|
1011
|
+
});
|
|
1012
|
+
}
|
|
1013
|
+
/**
|
|
1014
|
+
* Reset in_progress entries to pending (for recovery after crash)
|
|
1015
|
+
*/
|
|
1016
|
+
async recoverQueueAsync() {
|
|
1017
|
+
await this.client.request(HAEXTENSION_METHODS.filesync.recoverQueue);
|
|
1018
|
+
}
|
|
903
1019
|
};
|
|
904
1020
|
|
|
905
1021
|
// src/api/filesystem.ts
|
|
@@ -1130,6 +1246,111 @@ var PermissionsAPI = class {
|
|
|
1130
1246
|
}
|
|
1131
1247
|
};
|
|
1132
1248
|
|
|
1249
|
+
// src/api/remoteStorage.ts
|
|
1250
|
+
var RemoteStorageAPI = class {
|
|
1251
|
+
constructor(client) {
|
|
1252
|
+
this.client = client;
|
|
1253
|
+
this.backends = new BackendManagement(client);
|
|
1254
|
+
}
|
|
1255
|
+
/**
|
|
1256
|
+
* Upload data to a storage backend
|
|
1257
|
+
* @param backendId - Backend ID to upload to
|
|
1258
|
+
* @param key - Object key (path in the bucket)
|
|
1259
|
+
* @param data - Data to upload
|
|
1260
|
+
*/
|
|
1261
|
+
async upload(backendId, key, data) {
|
|
1262
|
+
const base64 = btoa(String.fromCharCode(...data));
|
|
1263
|
+
await this.client.request(HAEXTENSION_METHODS.remoteStorage.upload, {
|
|
1264
|
+
backendId,
|
|
1265
|
+
key,
|
|
1266
|
+
data: base64
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
/**
|
|
1270
|
+
* Download data from a storage backend
|
|
1271
|
+
* @param backendId - Backend ID to download from
|
|
1272
|
+
* @param key - Object key (path in the bucket)
|
|
1273
|
+
* @returns Downloaded data as Uint8Array
|
|
1274
|
+
*/
|
|
1275
|
+
async download(backendId, key) {
|
|
1276
|
+
const base64 = await this.client.request(
|
|
1277
|
+
HAEXTENSION_METHODS.remoteStorage.download,
|
|
1278
|
+
{ backendId, key }
|
|
1279
|
+
);
|
|
1280
|
+
const binary = atob(base64);
|
|
1281
|
+
const bytes = new Uint8Array(binary.length);
|
|
1282
|
+
for (let i = 0; i < binary.length; i++) {
|
|
1283
|
+
bytes[i] = binary.charCodeAt(i);
|
|
1284
|
+
}
|
|
1285
|
+
return bytes;
|
|
1286
|
+
}
|
|
1287
|
+
/**
|
|
1288
|
+
* Delete an object from a storage backend
|
|
1289
|
+
* @param backendId - Backend ID
|
|
1290
|
+
* @param key - Object key to delete
|
|
1291
|
+
*/
|
|
1292
|
+
async delete(backendId, key) {
|
|
1293
|
+
await this.client.request(HAEXTENSION_METHODS.remoteStorage.delete, {
|
|
1294
|
+
backendId,
|
|
1295
|
+
key
|
|
1296
|
+
});
|
|
1297
|
+
}
|
|
1298
|
+
/**
|
|
1299
|
+
* List objects in a storage backend
|
|
1300
|
+
* @param backendId - Backend ID
|
|
1301
|
+
* @param prefix - Optional prefix to filter objects
|
|
1302
|
+
* @returns List of objects
|
|
1303
|
+
*/
|
|
1304
|
+
async list(backendId, prefix) {
|
|
1305
|
+
return this.client.request(
|
|
1306
|
+
HAEXTENSION_METHODS.remoteStorage.list,
|
|
1307
|
+
{ backendId, prefix }
|
|
1308
|
+
);
|
|
1309
|
+
}
|
|
1310
|
+
};
|
|
1311
|
+
var BackendManagement = class {
|
|
1312
|
+
constructor(client) {
|
|
1313
|
+
this.client = client;
|
|
1314
|
+
}
|
|
1315
|
+
/**
|
|
1316
|
+
* List all available storage backends
|
|
1317
|
+
*/
|
|
1318
|
+
async list() {
|
|
1319
|
+
return this.client.request(
|
|
1320
|
+
HAEXTENSION_METHODS.remoteStorage.listBackends
|
|
1321
|
+
);
|
|
1322
|
+
}
|
|
1323
|
+
/**
|
|
1324
|
+
* Add a new storage backend
|
|
1325
|
+
* @param request - Backend configuration
|
|
1326
|
+
* @returns Created backend info
|
|
1327
|
+
*/
|
|
1328
|
+
async add(request) {
|
|
1329
|
+
return this.client.request(
|
|
1330
|
+
HAEXTENSION_METHODS.remoteStorage.addBackend,
|
|
1331
|
+
request
|
|
1332
|
+
);
|
|
1333
|
+
}
|
|
1334
|
+
/**
|
|
1335
|
+
* Remove a storage backend
|
|
1336
|
+
* @param backendId - Backend ID to remove
|
|
1337
|
+
*/
|
|
1338
|
+
async remove(backendId) {
|
|
1339
|
+
await this.client.request(HAEXTENSION_METHODS.remoteStorage.removeBackend, {
|
|
1340
|
+
backendId
|
|
1341
|
+
});
|
|
1342
|
+
}
|
|
1343
|
+
/**
|
|
1344
|
+
* Test connection to a storage backend
|
|
1345
|
+
* @param backendId - Backend ID to test
|
|
1346
|
+
*/
|
|
1347
|
+
async test(backendId) {
|
|
1348
|
+
await this.client.request(HAEXTENSION_METHODS.remoteStorage.testBackend, {
|
|
1349
|
+
backendId
|
|
1350
|
+
});
|
|
1351
|
+
}
|
|
1352
|
+
};
|
|
1353
|
+
|
|
1133
1354
|
// src/client/tableName.ts
|
|
1134
1355
|
function validatePublicKey(publicKey) {
|
|
1135
1356
|
if (!publicKey || typeof publicKey !== "string" || publicKey.trim() === "") {
|
|
@@ -1379,6 +1600,20 @@ var TAURI_COMMANDS = {
|
|
|
1379
1600
|
getInfo: "webview_extension_get_info",
|
|
1380
1601
|
getContext: "webview_extension_context_get"
|
|
1381
1602
|
},
|
|
1603
|
+
storage: {
|
|
1604
|
+
// Backend Management (generic, shared by all extensions)
|
|
1605
|
+
// These commands don't use webview_ prefix because storage backends are global,
|
|
1606
|
+
// not extension-specific. All extensions share the same storage backends.
|
|
1607
|
+
listBackends: "storage_list_backends",
|
|
1608
|
+
addBackend: "storage_add_backend",
|
|
1609
|
+
removeBackend: "storage_remove_backend",
|
|
1610
|
+
testBackend: "storage_test_backend",
|
|
1611
|
+
// Storage Operations
|
|
1612
|
+
upload: "storage_upload",
|
|
1613
|
+
download: "storage_download",
|
|
1614
|
+
delete: "storage_delete",
|
|
1615
|
+
list: "storage_list"
|
|
1616
|
+
},
|
|
1382
1617
|
filesync: {
|
|
1383
1618
|
// Spaces (webview_* commands extract extension info from WebviewWindow)
|
|
1384
1619
|
listSpaces: "webview_filesync_list_spaces",
|
|
@@ -1409,7 +1644,18 @@ var TAURI_COMMANDS = {
|
|
|
1409
1644
|
resolveConflict: "webview_filesync_resolve_conflict",
|
|
1410
1645
|
// UI Helpers (selectFolder doesn't need extension info)
|
|
1411
1646
|
selectFolder: "filesync_select_folder",
|
|
1412
|
-
scanLocal: "webview_filesync_scan_local"
|
|
1647
|
+
scanLocal: "webview_filesync_scan_local",
|
|
1648
|
+
// Sync Queue
|
|
1649
|
+
addToQueue: "webview_filesync_add_to_queue",
|
|
1650
|
+
getQueue: "webview_filesync_get_queue",
|
|
1651
|
+
getQueueSummary: "webview_filesync_get_queue_summary",
|
|
1652
|
+
startQueueEntry: "webview_filesync_start_queue_entry",
|
|
1653
|
+
completeQueueEntry: "webview_filesync_complete_queue_entry",
|
|
1654
|
+
failQueueEntry: "webview_filesync_fail_queue_entry",
|
|
1655
|
+
retryFailedQueue: "webview_filesync_retry_failed_queue",
|
|
1656
|
+
removeQueueEntry: "webview_filesync_remove_queue_entry",
|
|
1657
|
+
clearQueue: "webview_filesync_clear_queue",
|
|
1658
|
+
recoverQueue: "webview_filesync_recover_queue"
|
|
1413
1659
|
}
|
|
1414
1660
|
};
|
|
1415
1661
|
|
|
@@ -1525,115 +1771,158 @@ var filesyncHandlers = {
|
|
|
1525
1771
|
// ==========================================================================
|
|
1526
1772
|
// Spaces
|
|
1527
1773
|
// ==========================================================================
|
|
1528
|
-
[HAEXTENSION_METHODS.
|
|
1774
|
+
[HAEXTENSION_METHODS.filesync.listSpaces]: {
|
|
1529
1775
|
command: TAURI_COMMANDS.filesync.listSpaces,
|
|
1530
1776
|
args: () => ({})
|
|
1531
1777
|
},
|
|
1532
|
-
[HAEXTENSION_METHODS.
|
|
1778
|
+
[HAEXTENSION_METHODS.filesync.createSpace]: {
|
|
1533
1779
|
command: TAURI_COMMANDS.filesync.createSpace,
|
|
1534
1780
|
args: (p) => ({ request: p })
|
|
1535
1781
|
},
|
|
1536
|
-
[HAEXTENSION_METHODS.
|
|
1782
|
+
[HAEXTENSION_METHODS.filesync.deleteSpace]: {
|
|
1537
1783
|
command: TAURI_COMMANDS.filesync.deleteSpace,
|
|
1538
1784
|
args: (p) => ({ spaceId: p.spaceId })
|
|
1539
1785
|
},
|
|
1540
1786
|
// ==========================================================================
|
|
1541
1787
|
// Files
|
|
1542
1788
|
// ==========================================================================
|
|
1543
|
-
[HAEXTENSION_METHODS.
|
|
1789
|
+
[HAEXTENSION_METHODS.filesync.listFiles]: {
|
|
1544
1790
|
command: TAURI_COMMANDS.filesync.listFiles,
|
|
1545
1791
|
args: (p) => ({ request: p })
|
|
1546
1792
|
},
|
|
1547
|
-
[HAEXTENSION_METHODS.
|
|
1793
|
+
[HAEXTENSION_METHODS.filesync.getFile]: {
|
|
1548
1794
|
command: TAURI_COMMANDS.filesync.getFile,
|
|
1549
1795
|
args: (p) => ({ fileId: p.fileId })
|
|
1550
1796
|
},
|
|
1551
|
-
[HAEXTENSION_METHODS.
|
|
1797
|
+
[HAEXTENSION_METHODS.filesync.uploadFile]: {
|
|
1552
1798
|
command: TAURI_COMMANDS.filesync.uploadFile,
|
|
1553
1799
|
args: (p) => ({ request: p })
|
|
1554
1800
|
},
|
|
1555
|
-
[HAEXTENSION_METHODS.
|
|
1801
|
+
[HAEXTENSION_METHODS.filesync.downloadFile]: {
|
|
1556
1802
|
command: TAURI_COMMANDS.filesync.downloadFile,
|
|
1557
1803
|
args: (p) => ({ request: p })
|
|
1558
1804
|
},
|
|
1559
|
-
[HAEXTENSION_METHODS.
|
|
1805
|
+
[HAEXTENSION_METHODS.filesync.deleteFile]: {
|
|
1560
1806
|
command: TAURI_COMMANDS.filesync.deleteFile,
|
|
1561
1807
|
args: (p) => ({ fileId: p.fileId })
|
|
1562
1808
|
},
|
|
1563
1809
|
// ==========================================================================
|
|
1564
1810
|
// Backends
|
|
1565
1811
|
// ==========================================================================
|
|
1566
|
-
[HAEXTENSION_METHODS.
|
|
1812
|
+
[HAEXTENSION_METHODS.filesync.listBackends]: {
|
|
1567
1813
|
command: TAURI_COMMANDS.filesync.listBackends,
|
|
1568
1814
|
args: () => ({})
|
|
1569
1815
|
},
|
|
1570
|
-
[HAEXTENSION_METHODS.
|
|
1816
|
+
[HAEXTENSION_METHODS.filesync.addBackend]: {
|
|
1571
1817
|
command: TAURI_COMMANDS.filesync.addBackend,
|
|
1572
1818
|
args: (p) => ({ request: p })
|
|
1573
1819
|
},
|
|
1574
|
-
[HAEXTENSION_METHODS.
|
|
1820
|
+
[HAEXTENSION_METHODS.filesync.removeBackend]: {
|
|
1575
1821
|
command: TAURI_COMMANDS.filesync.removeBackend,
|
|
1576
1822
|
args: (p) => ({ backendId: p.backendId })
|
|
1577
1823
|
},
|
|
1578
|
-
[HAEXTENSION_METHODS.
|
|
1824
|
+
[HAEXTENSION_METHODS.filesync.testBackend]: {
|
|
1579
1825
|
command: TAURI_COMMANDS.filesync.testBackend,
|
|
1580
1826
|
args: (p) => ({ backendId: p.backendId })
|
|
1581
1827
|
},
|
|
1582
1828
|
// ==========================================================================
|
|
1583
1829
|
// Sync Rules
|
|
1584
1830
|
// ==========================================================================
|
|
1585
|
-
[HAEXTENSION_METHODS.
|
|
1831
|
+
[HAEXTENSION_METHODS.filesync.listSyncRules]: {
|
|
1586
1832
|
command: TAURI_COMMANDS.filesync.listSyncRules,
|
|
1587
1833
|
args: () => ({})
|
|
1588
1834
|
},
|
|
1589
|
-
[HAEXTENSION_METHODS.
|
|
1835
|
+
[HAEXTENSION_METHODS.filesync.addSyncRule]: {
|
|
1590
1836
|
command: TAURI_COMMANDS.filesync.addSyncRule,
|
|
1591
1837
|
args: (p) => ({ request: p })
|
|
1592
1838
|
},
|
|
1593
|
-
[HAEXTENSION_METHODS.
|
|
1839
|
+
[HAEXTENSION_METHODS.filesync.updateSyncRule]: {
|
|
1594
1840
|
command: TAURI_COMMANDS.filesync.updateSyncRule,
|
|
1595
1841
|
args: (p) => ({ request: p })
|
|
1596
1842
|
},
|
|
1597
|
-
[HAEXTENSION_METHODS.
|
|
1843
|
+
[HAEXTENSION_METHODS.filesync.removeSyncRule]: {
|
|
1598
1844
|
command: TAURI_COMMANDS.filesync.removeSyncRule,
|
|
1599
1845
|
args: (p) => ({ ruleId: p.ruleId })
|
|
1600
1846
|
},
|
|
1601
1847
|
// ==========================================================================
|
|
1602
1848
|
// Sync Operations
|
|
1603
1849
|
// ==========================================================================
|
|
1604
|
-
[HAEXTENSION_METHODS.
|
|
1850
|
+
[HAEXTENSION_METHODS.filesync.getSyncStatus]: {
|
|
1605
1851
|
command: TAURI_COMMANDS.filesync.getSyncStatus,
|
|
1606
1852
|
args: () => ({})
|
|
1607
1853
|
},
|
|
1608
|
-
[HAEXTENSION_METHODS.
|
|
1854
|
+
[HAEXTENSION_METHODS.filesync.triggerSync]: {
|
|
1609
1855
|
command: TAURI_COMMANDS.filesync.triggerSync,
|
|
1610
1856
|
args: () => ({})
|
|
1611
1857
|
},
|
|
1612
|
-
[HAEXTENSION_METHODS.
|
|
1858
|
+
[HAEXTENSION_METHODS.filesync.pauseSync]: {
|
|
1613
1859
|
command: TAURI_COMMANDS.filesync.pauseSync,
|
|
1614
1860
|
args: () => ({})
|
|
1615
1861
|
},
|
|
1616
|
-
[HAEXTENSION_METHODS.
|
|
1862
|
+
[HAEXTENSION_METHODS.filesync.resumeSync]: {
|
|
1617
1863
|
command: TAURI_COMMANDS.filesync.resumeSync,
|
|
1618
1864
|
args: () => ({})
|
|
1619
1865
|
},
|
|
1620
1866
|
// ==========================================================================
|
|
1621
1867
|
// Conflict Resolution
|
|
1622
1868
|
// ==========================================================================
|
|
1623
|
-
[HAEXTENSION_METHODS.
|
|
1869
|
+
[HAEXTENSION_METHODS.filesync.resolveConflict]: {
|
|
1624
1870
|
command: TAURI_COMMANDS.filesync.resolveConflict,
|
|
1625
1871
|
args: (p) => ({ request: p })
|
|
1626
1872
|
},
|
|
1627
1873
|
// ==========================================================================
|
|
1628
1874
|
// UI Helpers
|
|
1629
1875
|
// ==========================================================================
|
|
1630
|
-
[HAEXTENSION_METHODS.
|
|
1876
|
+
[HAEXTENSION_METHODS.filesync.selectFolder]: {
|
|
1631
1877
|
command: TAURI_COMMANDS.filesync.selectFolder,
|
|
1632
1878
|
args: () => ({})
|
|
1633
1879
|
},
|
|
1634
|
-
[HAEXTENSION_METHODS.
|
|
1880
|
+
[HAEXTENSION_METHODS.filesync.scanLocal]: {
|
|
1635
1881
|
command: TAURI_COMMANDS.filesync.scanLocal,
|
|
1636
1882
|
args: (p) => ({ request: p })
|
|
1883
|
+
},
|
|
1884
|
+
// ==========================================================================
|
|
1885
|
+
// Sync Queue
|
|
1886
|
+
// ==========================================================================
|
|
1887
|
+
[HAEXTENSION_METHODS.filesync.addToQueue]: {
|
|
1888
|
+
command: TAURI_COMMANDS.filesync.addToQueue,
|
|
1889
|
+
args: (p) => ({ request: p })
|
|
1890
|
+
},
|
|
1891
|
+
[HAEXTENSION_METHODS.filesync.getQueue]: {
|
|
1892
|
+
command: TAURI_COMMANDS.filesync.getQueue,
|
|
1893
|
+
args: (p) => ({ request: p ?? {} })
|
|
1894
|
+
},
|
|
1895
|
+
[HAEXTENSION_METHODS.filesync.getQueueSummary]: {
|
|
1896
|
+
command: TAURI_COMMANDS.filesync.getQueueSummary,
|
|
1897
|
+
args: () => ({})
|
|
1898
|
+
},
|
|
1899
|
+
[HAEXTENSION_METHODS.filesync.startQueueEntry]: {
|
|
1900
|
+
command: TAURI_COMMANDS.filesync.startQueueEntry,
|
|
1901
|
+
args: (p) => ({ entryId: p.entryId })
|
|
1902
|
+
},
|
|
1903
|
+
[HAEXTENSION_METHODS.filesync.completeQueueEntry]: {
|
|
1904
|
+
command: TAURI_COMMANDS.filesync.completeQueueEntry,
|
|
1905
|
+
args: (p) => ({ entryId: p.entryId })
|
|
1906
|
+
},
|
|
1907
|
+
[HAEXTENSION_METHODS.filesync.failQueueEntry]: {
|
|
1908
|
+
command: TAURI_COMMANDS.filesync.failQueueEntry,
|
|
1909
|
+
args: (p) => ({ entryId: p.entryId, errorMessage: p.errorMessage })
|
|
1910
|
+
},
|
|
1911
|
+
[HAEXTENSION_METHODS.filesync.retryFailedQueue]: {
|
|
1912
|
+
command: TAURI_COMMANDS.filesync.retryFailedQueue,
|
|
1913
|
+
args: () => ({})
|
|
1914
|
+
},
|
|
1915
|
+
[HAEXTENSION_METHODS.filesync.removeQueueEntry]: {
|
|
1916
|
+
command: TAURI_COMMANDS.filesync.removeQueueEntry,
|
|
1917
|
+
args: (p) => ({ entryId: p.entryId })
|
|
1918
|
+
},
|
|
1919
|
+
[HAEXTENSION_METHODS.filesync.clearQueue]: {
|
|
1920
|
+
command: TAURI_COMMANDS.filesync.clearQueue,
|
|
1921
|
+
args: (p) => ({ ruleId: p.ruleId })
|
|
1922
|
+
},
|
|
1923
|
+
[HAEXTENSION_METHODS.filesync.recoverQueue]: {
|
|
1924
|
+
command: TAURI_COMMANDS.filesync.recoverQueue,
|
|
1925
|
+
args: () => ({})
|
|
1637
1926
|
}
|
|
1638
1927
|
};
|
|
1639
1928
|
|
|
@@ -1945,6 +2234,7 @@ var HaexVaultSdk = class {
|
|
|
1945
2234
|
this.filesystem = new FilesystemAPI(this);
|
|
1946
2235
|
this.web = new WebAPI(this);
|
|
1947
2236
|
this.permissions = new PermissionsAPI(this);
|
|
2237
|
+
this.remoteStorage = new RemoteStorageAPI(this);
|
|
1948
2238
|
installConsoleForwarding(this.config.debug);
|
|
1949
2239
|
this.readyPromise = new Promise((resolve) => {
|
|
1950
2240
|
this.resolveReady = resolve;
|
|
@@ -2586,6 +2876,9 @@ exports.HaexVaultSdk = HaexVaultSdk;
|
|
|
2586
2876
|
exports.HaexVaultSdkError = HaexVaultSdkError;
|
|
2587
2877
|
exports.PermissionStatus = PermissionStatus;
|
|
2588
2878
|
exports.PermissionsAPI = PermissionsAPI;
|
|
2879
|
+
exports.QUEUE_OPERATION = QUEUE_OPERATION;
|
|
2880
|
+
exports.QUEUE_STATUS = QUEUE_STATUS;
|
|
2881
|
+
exports.RemoteStorageAPI = RemoteStorageAPI;
|
|
2589
2882
|
exports.STORAGE_BACKEND_TYPE = STORAGE_BACKEND_TYPE;
|
|
2590
2883
|
exports.SYNC_DIRECTION = SYNC_DIRECTION;
|
|
2591
2884
|
exports.TABLE_SEPARATOR = TABLE_SEPARATOR;
|