@haex-space/vault-sdk 2.5.42 → 2.5.45
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-BAu3VPE3.d.mts → client-BDxVgihp.d.mts} +124 -408
- package/dist/{client-CF0wJxT2.d.ts → client-Bgu2k1yJ.d.ts} +124 -408
- package/dist/index.d.mts +24 -37
- package/dist/index.d.ts +24 -37
- package/dist/index.js +147 -385
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +148 -379
- 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 +134 -337
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +134 -337
- 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 +134 -337
- package/dist/runtime/nuxt.plugin.client.js.map +1 -1
- package/dist/runtime/nuxt.plugin.client.mjs +134 -337
- 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 +134 -337
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +134 -337
- 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 +134 -337
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +134 -337
- package/dist/vue.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -487,50 +487,19 @@ 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
|
-
// 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"
|
|
490
|
+
showImage: "haextension:filesystem:show-image",
|
|
491
|
+
// Generic FS operations (Phase 2)
|
|
492
|
+
readFile: "haextension:filesystem:read-file",
|
|
493
|
+
writeFile: "haextension:filesystem:write-file",
|
|
494
|
+
readDir: "haextension:filesystem:read-dir",
|
|
495
|
+
mkdir: "haextension:filesystem:mkdir",
|
|
496
|
+
remove: "haextension:filesystem:remove",
|
|
497
|
+
exists: "haextension:filesystem:exists",
|
|
498
|
+
stat: "haextension:filesystem:stat",
|
|
499
|
+
selectFolder: "haextension:filesystem:select-folder",
|
|
500
|
+
selectFile: "haextension:filesystem:select-file",
|
|
501
|
+
rename: "haextension:filesystem:rename",
|
|
502
|
+
copy: "haextension:filesystem:copy"
|
|
534
503
|
},
|
|
535
504
|
storage: {
|
|
536
505
|
getItem: "haextension:storage:get-item",
|
|
@@ -676,406 +645,193 @@ var DatabaseAPI = class {
|
|
|
676
645
|
}
|
|
677
646
|
};
|
|
678
647
|
|
|
679
|
-
// src/api/
|
|
680
|
-
var
|
|
681
|
-
SYNCED: "synced",
|
|
682
|
-
SYNCING: "syncing",
|
|
683
|
-
LOCAL_ONLY: "localOnly",
|
|
684
|
-
REMOTE_ONLY: "remoteOnly",
|
|
685
|
-
CONFLICT: "conflict",
|
|
686
|
-
ERROR: "error"
|
|
687
|
-
};
|
|
688
|
-
var SYNC_DIRECTION = {
|
|
689
|
-
UP: "up",
|
|
690
|
-
DOWN: "down",
|
|
691
|
-
BOTH: "both"
|
|
692
|
-
};
|
|
693
|
-
var STORAGE_BACKEND_TYPE = {
|
|
694
|
-
S3: "s3",
|
|
695
|
-
R2: "r2",
|
|
696
|
-
MINIO: "minio",
|
|
697
|
-
GDRIVE: "gdrive",
|
|
698
|
-
DROPBOX: "dropbox"
|
|
699
|
-
};
|
|
700
|
-
var CONFLICT_STRATEGY = {
|
|
701
|
-
/** Always prefer local version */
|
|
702
|
-
LOCAL: "local",
|
|
703
|
-
/** Always prefer remote version */
|
|
704
|
-
REMOTE: "remote",
|
|
705
|
-
/** Prefer newer version (Last-Writer-Wins) */
|
|
706
|
-
NEWER: "newer",
|
|
707
|
-
/** Ask user to resolve each conflict manually */
|
|
708
|
-
ASK: "ask",
|
|
709
|
-
/** Keep both versions (create conflict copy) */
|
|
710
|
-
KEEP_BOTH: "keepBoth"
|
|
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
|
-
};
|
|
722
|
-
var FileSyncAPI = class {
|
|
648
|
+
// src/api/filesystem.ts
|
|
649
|
+
var FilesystemAPI = class {
|
|
723
650
|
constructor(client) {
|
|
724
651
|
this.client = client;
|
|
725
652
|
}
|
|
726
|
-
// --------------------------------------------------------------------------
|
|
727
|
-
// Spaces
|
|
728
|
-
// --------------------------------------------------------------------------
|
|
729
|
-
/**
|
|
730
|
-
* List all file spaces
|
|
731
|
-
*/
|
|
732
|
-
async listSpacesAsync() {
|
|
733
|
-
return this.client.request(
|
|
734
|
-
HAEXTENSION_METHODS.filesync.listSpaces
|
|
735
|
-
);
|
|
736
|
-
}
|
|
737
|
-
/**
|
|
738
|
-
* Create a new file space
|
|
739
|
-
*/
|
|
740
|
-
async createSpaceAsync(options) {
|
|
741
|
-
return this.client.request(
|
|
742
|
-
HAEXTENSION_METHODS.filesync.createSpace,
|
|
743
|
-
options
|
|
744
|
-
);
|
|
745
|
-
}
|
|
746
|
-
/**
|
|
747
|
-
* Delete a file space
|
|
748
|
-
*/
|
|
749
|
-
async deleteSpaceAsync(spaceId) {
|
|
750
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.deleteSpace, {
|
|
751
|
-
spaceId
|
|
752
|
-
});
|
|
753
|
-
}
|
|
754
|
-
// --------------------------------------------------------------------------
|
|
755
|
-
// Files
|
|
756
|
-
// --------------------------------------------------------------------------
|
|
757
653
|
/**
|
|
758
|
-
*
|
|
654
|
+
* Opens a save file dialog and saves the provided data to the selected location
|
|
655
|
+
* @param data The file data as Uint8Array
|
|
656
|
+
* @param options Options for the save dialog
|
|
657
|
+
* @returns The path where the file was saved, or null if cancelled
|
|
759
658
|
*/
|
|
760
|
-
async
|
|
761
|
-
|
|
762
|
-
HAEXTENSION_METHODS.
|
|
763
|
-
|
|
659
|
+
async saveFileAsync(data, options = {}) {
|
|
660
|
+
const result = await this.client.request(
|
|
661
|
+
HAEXTENSION_METHODS.filesystem.saveFile,
|
|
662
|
+
{
|
|
663
|
+
data: Array.from(data),
|
|
664
|
+
// Convert Uint8Array to regular array for postMessage
|
|
665
|
+
defaultPath: options.defaultPath,
|
|
666
|
+
title: options.title,
|
|
667
|
+
filters: options.filters
|
|
668
|
+
}
|
|
764
669
|
);
|
|
670
|
+
return result;
|
|
765
671
|
}
|
|
766
672
|
/**
|
|
767
|
-
*
|
|
768
|
-
*
|
|
673
|
+
* Opens a file with the system's default viewer
|
|
674
|
+
* @param data The file data as Uint8Array
|
|
675
|
+
* @param options Options for opening the file
|
|
676
|
+
* @returns The result of the operation
|
|
769
677
|
*/
|
|
770
|
-
async
|
|
771
|
-
|
|
772
|
-
HAEXTENSION_METHODS.
|
|
773
|
-
|
|
678
|
+
async openFileAsync(data, options) {
|
|
679
|
+
const result = await this.client.request(
|
|
680
|
+
HAEXTENSION_METHODS.filesystem.openFile,
|
|
681
|
+
{
|
|
682
|
+
data: Array.from(data),
|
|
683
|
+
// Convert Uint8Array to regular array for postMessage
|
|
684
|
+
fileName: options.fileName,
|
|
685
|
+
mimeType: options.mimeType
|
|
686
|
+
}
|
|
774
687
|
);
|
|
688
|
+
return result;
|
|
775
689
|
}
|
|
776
690
|
/**
|
|
777
|
-
*
|
|
691
|
+
* Shows an image using a data URL (safe, read-only viewing)
|
|
692
|
+
* This is safe to use without special permissions as it only displays images
|
|
693
|
+
* and doesn't execute any code or open files with external applications
|
|
694
|
+
* @param options Options containing the data URL
|
|
695
|
+
* @returns The result of the operation
|
|
778
696
|
*/
|
|
779
|
-
async
|
|
780
|
-
|
|
781
|
-
HAEXTENSION_METHODS.
|
|
782
|
-
{
|
|
697
|
+
async showImageAsync(options) {
|
|
698
|
+
const result = await this.client.request(
|
|
699
|
+
HAEXTENSION_METHODS.filesystem.showImage,
|
|
700
|
+
{
|
|
701
|
+
dataUrl: options.dataUrl
|
|
702
|
+
}
|
|
783
703
|
);
|
|
704
|
+
return result;
|
|
784
705
|
}
|
|
706
|
+
// ==========================================================================
|
|
707
|
+
// Generic Filesystem Operations (Phase 2)
|
|
708
|
+
// ==========================================================================
|
|
785
709
|
/**
|
|
786
|
-
*
|
|
710
|
+
* Read file contents
|
|
711
|
+
* @param path Absolute path to the file
|
|
712
|
+
* @returns File contents as Uint8Array
|
|
787
713
|
*/
|
|
788
|
-
async
|
|
789
|
-
|
|
790
|
-
HAEXTENSION_METHODS.
|
|
791
|
-
|
|
714
|
+
async readFile(path) {
|
|
715
|
+
const base64 = await this.client.request(
|
|
716
|
+
HAEXTENSION_METHODS.filesystem.readFile,
|
|
717
|
+
{ path }
|
|
792
718
|
);
|
|
719
|
+
const binary = atob(base64);
|
|
720
|
+
const bytes = new Uint8Array(binary.length);
|
|
721
|
+
for (let i = 0; i < binary.length; i++) {
|
|
722
|
+
bytes[i] = binary.charCodeAt(i);
|
|
723
|
+
}
|
|
724
|
+
return bytes;
|
|
793
725
|
}
|
|
794
726
|
/**
|
|
795
|
-
*
|
|
727
|
+
* Write file contents
|
|
728
|
+
* @param path Absolute path to the file
|
|
729
|
+
* @param data File contents as Uint8Array
|
|
796
730
|
*/
|
|
797
|
-
async
|
|
731
|
+
async writeFile(path, data) {
|
|
732
|
+
const base64 = btoa(String.fromCharCode(...data));
|
|
798
733
|
await this.client.request(
|
|
799
|
-
HAEXTENSION_METHODS.
|
|
800
|
-
|
|
801
|
-
);
|
|
802
|
-
}
|
|
803
|
-
/**
|
|
804
|
-
* Delete a file from the sync system
|
|
805
|
-
*/
|
|
806
|
-
async deleteFileAsync(fileId) {
|
|
807
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.deleteFile, {
|
|
808
|
-
fileId
|
|
809
|
-
});
|
|
810
|
-
}
|
|
811
|
-
// --------------------------------------------------------------------------
|
|
812
|
-
// Storage Backends
|
|
813
|
-
// --------------------------------------------------------------------------
|
|
814
|
-
/**
|
|
815
|
-
* List configured storage backends
|
|
816
|
-
*/
|
|
817
|
-
async listBackendsAsync() {
|
|
818
|
-
return this.client.request(
|
|
819
|
-
HAEXTENSION_METHODS.filesync.listBackends
|
|
820
|
-
);
|
|
821
|
-
}
|
|
822
|
-
/**
|
|
823
|
-
* Add a new storage backend
|
|
824
|
-
*/
|
|
825
|
-
async addBackendAsync(options) {
|
|
826
|
-
return this.client.request(
|
|
827
|
-
HAEXTENSION_METHODS.filesync.addBackend,
|
|
828
|
-
options
|
|
734
|
+
HAEXTENSION_METHODS.filesystem.writeFile,
|
|
735
|
+
{ path, data: base64 }
|
|
829
736
|
);
|
|
830
737
|
}
|
|
831
738
|
/**
|
|
832
|
-
*
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.removeBackend, {
|
|
836
|
-
backendId
|
|
837
|
-
});
|
|
838
|
-
}
|
|
839
|
-
/**
|
|
840
|
-
* Test backend connection
|
|
739
|
+
* Read directory contents
|
|
740
|
+
* @param path Absolute path to the directory
|
|
741
|
+
* @returns Array of directory entries
|
|
841
742
|
*/
|
|
842
|
-
async
|
|
743
|
+
async readDir(path) {
|
|
843
744
|
return this.client.request(
|
|
844
|
-
HAEXTENSION_METHODS.
|
|
845
|
-
{
|
|
745
|
+
HAEXTENSION_METHODS.filesystem.readDir,
|
|
746
|
+
{ path }
|
|
846
747
|
);
|
|
847
748
|
}
|
|
848
|
-
// --------------------------------------------------------------------------
|
|
849
|
-
// Sync Rules
|
|
850
|
-
// --------------------------------------------------------------------------
|
|
851
749
|
/**
|
|
852
|
-
*
|
|
750
|
+
* Create a directory (and parent directories if needed)
|
|
751
|
+
* @param path Absolute path to create
|
|
853
752
|
*/
|
|
854
|
-
async
|
|
855
|
-
|
|
856
|
-
HAEXTENSION_METHODS.
|
|
753
|
+
async mkdir(path) {
|
|
754
|
+
await this.client.request(
|
|
755
|
+
HAEXTENSION_METHODS.filesystem.mkdir,
|
|
756
|
+
{ path }
|
|
857
757
|
);
|
|
858
758
|
}
|
|
859
759
|
/**
|
|
860
|
-
*
|
|
760
|
+
* Remove a file or directory
|
|
761
|
+
* @param path Absolute path to remove
|
|
762
|
+
* @param recursive If true, remove directories recursively
|
|
861
763
|
*/
|
|
862
|
-
async
|
|
863
|
-
|
|
864
|
-
HAEXTENSION_METHODS.
|
|
865
|
-
|
|
764
|
+
async remove(path, recursive = false) {
|
|
765
|
+
await this.client.request(
|
|
766
|
+
HAEXTENSION_METHODS.filesystem.remove,
|
|
767
|
+
{ path, recursive }
|
|
866
768
|
);
|
|
867
769
|
}
|
|
868
770
|
/**
|
|
869
|
-
*
|
|
771
|
+
* Check if a path exists
|
|
772
|
+
* @param path Absolute path to check
|
|
773
|
+
* @returns True if the path exists
|
|
870
774
|
*/
|
|
871
|
-
async
|
|
775
|
+
async exists(path) {
|
|
872
776
|
return this.client.request(
|
|
873
|
-
HAEXTENSION_METHODS.
|
|
874
|
-
|
|
777
|
+
HAEXTENSION_METHODS.filesystem.exists,
|
|
778
|
+
{ path }
|
|
875
779
|
);
|
|
876
780
|
}
|
|
877
781
|
/**
|
|
878
|
-
*
|
|
782
|
+
* Get file/directory metadata
|
|
783
|
+
* @param path Absolute path
|
|
784
|
+
* @returns File metadata
|
|
879
785
|
*/
|
|
880
|
-
async
|
|
881
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.removeSyncRule, {
|
|
882
|
-
ruleId
|
|
883
|
-
});
|
|
884
|
-
}
|
|
885
|
-
// --------------------------------------------------------------------------
|
|
886
|
-
// Sync Operations
|
|
887
|
-
// --------------------------------------------------------------------------
|
|
888
|
-
/**
|
|
889
|
-
* Get current sync status
|
|
890
|
-
*/
|
|
891
|
-
async getSyncStatusAsync() {
|
|
786
|
+
async stat(path) {
|
|
892
787
|
return this.client.request(
|
|
893
|
-
HAEXTENSION_METHODS.
|
|
788
|
+
HAEXTENSION_METHODS.filesystem.stat,
|
|
789
|
+
{ path }
|
|
894
790
|
);
|
|
895
791
|
}
|
|
896
|
-
/**
|
|
897
|
-
* Trigger a manual sync
|
|
898
|
-
*/
|
|
899
|
-
async triggerSyncAsync() {
|
|
900
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.triggerSync);
|
|
901
|
-
}
|
|
902
|
-
/**
|
|
903
|
-
* Pause syncing
|
|
904
|
-
*/
|
|
905
|
-
async pauseSyncAsync() {
|
|
906
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.pauseSync);
|
|
907
|
-
}
|
|
908
|
-
/**
|
|
909
|
-
* Resume syncing
|
|
910
|
-
*/
|
|
911
|
-
async resumeSyncAsync() {
|
|
912
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.resumeSync);
|
|
913
|
-
}
|
|
914
|
-
// --------------------------------------------------------------------------
|
|
915
|
-
// Conflict Resolution
|
|
916
|
-
// --------------------------------------------------------------------------
|
|
917
|
-
/**
|
|
918
|
-
* Resolve a file conflict
|
|
919
|
-
*/
|
|
920
|
-
async resolveConflictAsync(fileId, resolution) {
|
|
921
|
-
await this.client.request(HAEXTENSION_METHODS.filesync.resolveConflict, {
|
|
922
|
-
fileId,
|
|
923
|
-
resolution
|
|
924
|
-
});
|
|
925
|
-
}
|
|
926
|
-
// --------------------------------------------------------------------------
|
|
927
|
-
// Folder Selection (Native Dialog)
|
|
928
|
-
// --------------------------------------------------------------------------
|
|
929
792
|
/**
|
|
930
793
|
* Open a folder selection dialog
|
|
794
|
+
* @param options Dialog options
|
|
795
|
+
* @returns Selected folder path, or null if cancelled
|
|
931
796
|
*/
|
|
932
|
-
async
|
|
933
|
-
return this.client.request(
|
|
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) {
|
|
797
|
+
async selectFolder(options = {}) {
|
|
944
798
|
return this.client.request(
|
|
945
|
-
HAEXTENSION_METHODS.
|
|
799
|
+
HAEXTENSION_METHODS.filesystem.selectFolder,
|
|
946
800
|
options
|
|
947
801
|
);
|
|
948
802
|
}
|
|
949
803
|
/**
|
|
950
|
-
*
|
|
804
|
+
* Open a file selection dialog
|
|
805
|
+
* @param options Dialog options
|
|
806
|
+
* @returns Selected file paths, or null if cancelled
|
|
951
807
|
*/
|
|
952
|
-
async
|
|
808
|
+
async selectFile(options = {}) {
|
|
953
809
|
return this.client.request(
|
|
954
|
-
HAEXTENSION_METHODS.
|
|
810
|
+
HAEXTENSION_METHODS.filesystem.selectFile,
|
|
955
811
|
options
|
|
956
812
|
);
|
|
957
813
|
}
|
|
958
814
|
/**
|
|
959
|
-
*
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
return this.client.request(
|
|
963
|
-
HAEXTENSION_METHODS.filesync.getQueueSummary
|
|
964
|
-
);
|
|
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)
|
|
815
|
+
* Rename/move a file or directory
|
|
816
|
+
* @param from Source path
|
|
817
|
+
* @param to Destination path
|
|
1015
818
|
*/
|
|
1016
|
-
async
|
|
1017
|
-
await this.client.request(
|
|
1018
|
-
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
// src/api/filesystem.ts
|
|
1022
|
-
var FilesystemAPI = class {
|
|
1023
|
-
constructor(client) {
|
|
1024
|
-
this.client = client;
|
|
1025
|
-
this.sync = new FileSyncAPI(client);
|
|
1026
|
-
}
|
|
1027
|
-
/**
|
|
1028
|
-
* Opens a save file dialog and saves the provided data to the selected location
|
|
1029
|
-
* @param data The file data as Uint8Array
|
|
1030
|
-
* @param options Options for the save dialog
|
|
1031
|
-
* @returns The path where the file was saved, or null if cancelled
|
|
1032
|
-
*/
|
|
1033
|
-
async saveFileAsync(data, options = {}) {
|
|
1034
|
-
const result = await this.client.request(
|
|
1035
|
-
HAEXTENSION_METHODS.filesystem.saveFile,
|
|
1036
|
-
{
|
|
1037
|
-
data: Array.from(data),
|
|
1038
|
-
// Convert Uint8Array to regular array for postMessage
|
|
1039
|
-
defaultPath: options.defaultPath,
|
|
1040
|
-
title: options.title,
|
|
1041
|
-
filters: options.filters
|
|
1042
|
-
}
|
|
1043
|
-
);
|
|
1044
|
-
return result;
|
|
1045
|
-
}
|
|
1046
|
-
/**
|
|
1047
|
-
* Opens a file with the system's default viewer
|
|
1048
|
-
* @param data The file data as Uint8Array
|
|
1049
|
-
* @param options Options for opening the file
|
|
1050
|
-
* @returns The result of the operation
|
|
1051
|
-
*/
|
|
1052
|
-
async openFileAsync(data, options) {
|
|
1053
|
-
const result = await this.client.request(
|
|
1054
|
-
HAEXTENSION_METHODS.filesystem.openFile,
|
|
1055
|
-
{
|
|
1056
|
-
data: Array.from(data),
|
|
1057
|
-
// Convert Uint8Array to regular array for postMessage
|
|
1058
|
-
fileName: options.fileName,
|
|
1059
|
-
mimeType: options.mimeType
|
|
1060
|
-
}
|
|
819
|
+
async rename(from, to) {
|
|
820
|
+
await this.client.request(
|
|
821
|
+
HAEXTENSION_METHODS.filesystem.rename,
|
|
822
|
+
{ from, to }
|
|
1061
823
|
);
|
|
1062
|
-
return result;
|
|
1063
824
|
}
|
|
1064
825
|
/**
|
|
1065
|
-
*
|
|
1066
|
-
*
|
|
1067
|
-
*
|
|
1068
|
-
* @param options Options containing the data URL
|
|
1069
|
-
* @returns The result of the operation
|
|
826
|
+
* Copy a file
|
|
827
|
+
* @param from Source path
|
|
828
|
+
* @param to Destination path
|
|
1070
829
|
*/
|
|
1071
|
-
async
|
|
1072
|
-
|
|
1073
|
-
HAEXTENSION_METHODS.filesystem.
|
|
1074
|
-
{
|
|
1075
|
-
dataUrl: options.dataUrl
|
|
1076
|
-
}
|
|
830
|
+
async copy(from, to) {
|
|
831
|
+
await this.client.request(
|
|
832
|
+
HAEXTENSION_METHODS.filesystem.copy,
|
|
833
|
+
{ from, to }
|
|
1077
834
|
);
|
|
1078
|
-
return result;
|
|
1079
835
|
}
|
|
1080
836
|
};
|
|
1081
837
|
|
|
@@ -1571,7 +1327,20 @@ var TAURI_COMMANDS = {
|
|
|
1571
1327
|
filesystem: {
|
|
1572
1328
|
saveFile: "webview_extension_fs_save_file",
|
|
1573
1329
|
openFile: "webview_extension_fs_open_file",
|
|
1574
|
-
showImage: "webview_extension_fs_show_image"
|
|
1330
|
+
showImage: "webview_extension_fs_show_image",
|
|
1331
|
+
// Generic filesystem operations (no webview_ prefix because they're global)
|
|
1332
|
+
// Permission checks happen in the message handler layer
|
|
1333
|
+
readFile: "filesystem_read_file",
|
|
1334
|
+
writeFile: "filesystem_write_file",
|
|
1335
|
+
readDir: "filesystem_read_dir",
|
|
1336
|
+
mkdir: "filesystem_mkdir",
|
|
1337
|
+
remove: "filesystem_remove",
|
|
1338
|
+
exists: "filesystem_exists",
|
|
1339
|
+
stat: "filesystem_stat",
|
|
1340
|
+
selectFolder: "filesystem_select_folder",
|
|
1341
|
+
selectFile: "filesystem_select_file",
|
|
1342
|
+
rename: "filesystem_rename",
|
|
1343
|
+
copy: "filesystem_copy"
|
|
1575
1344
|
},
|
|
1576
1345
|
external: {
|
|
1577
1346
|
// Response handling (called by extensions running in WebView)
|
|
@@ -2859,15 +2628,12 @@ function createHaexVaultSdk(config = {}) {
|
|
|
2859
2628
|
return new HaexVaultSdk(config);
|
|
2860
2629
|
}
|
|
2861
2630
|
|
|
2862
|
-
exports.CONFLICT_STRATEGY = CONFLICT_STRATEGY;
|
|
2863
2631
|
exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
|
|
2864
2632
|
exports.DatabaseAPI = DatabaseAPI;
|
|
2865
2633
|
exports.EXTERNAL_EVENTS = EXTERNAL_EVENTS;
|
|
2866
2634
|
exports.ErrorCode = ErrorCode;
|
|
2867
2635
|
exports.ExternalConnectionErrorCode = ExternalConnectionErrorCode;
|
|
2868
2636
|
exports.ExternalConnectionState = ExternalConnectionState;
|
|
2869
|
-
exports.FILE_SYNC_STATE = FILE_SYNC_STATE;
|
|
2870
|
-
exports.FileSyncAPI = FileSyncAPI;
|
|
2871
2637
|
exports.FilesystemAPI = FilesystemAPI;
|
|
2872
2638
|
exports.HAEXSPACE_MESSAGE_TYPES = HAEXSPACE_MESSAGE_TYPES;
|
|
2873
2639
|
exports.HAEXTENSION_EVENTS = HAEXTENSION_EVENTS;
|
|
@@ -2876,11 +2642,7 @@ exports.HaexVaultSdk = HaexVaultSdk;
|
|
|
2876
2642
|
exports.HaexVaultSdkError = HaexVaultSdkError;
|
|
2877
2643
|
exports.PermissionStatus = PermissionStatus;
|
|
2878
2644
|
exports.PermissionsAPI = PermissionsAPI;
|
|
2879
|
-
exports.QUEUE_OPERATION = QUEUE_OPERATION;
|
|
2880
|
-
exports.QUEUE_STATUS = QUEUE_STATUS;
|
|
2881
2645
|
exports.RemoteStorageAPI = RemoteStorageAPI;
|
|
2882
|
-
exports.STORAGE_BACKEND_TYPE = STORAGE_BACKEND_TYPE;
|
|
2883
|
-
exports.SYNC_DIRECTION = SYNC_DIRECTION;
|
|
2884
2646
|
exports.TABLE_SEPARATOR = TABLE_SEPARATOR;
|
|
2885
2647
|
exports.TAURI_COMMANDS = TAURI_COMMANDS;
|
|
2886
2648
|
exports.WebAPI = WebAPI;
|