@haex-space/vault-sdk 2.5.87 → 2.5.90

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.
@@ -185,6 +185,52 @@ var REMOTE_STORAGE_COMMANDS = {
185
185
  list: "extension_remote_storage_list"
186
186
  };
187
187
 
188
+ // src/commands/localsend.ts
189
+ var LOCALSEND_COMMANDS = {
190
+ // Initialization
191
+ /** Initialize LocalSend (generate identity, etc.) */
192
+ init: "localsend_init",
193
+ /** Get our device info */
194
+ getDeviceInfo: "localsend_get_device_info",
195
+ /** Set our device alias */
196
+ setAlias: "localsend_set_alias",
197
+ // Settings
198
+ /** Get current settings */
199
+ getSettings: "localsend_get_settings",
200
+ /** Update settings */
201
+ setSettings: "localsend_set_settings",
202
+ // Discovery (desktop only)
203
+ /** Start device discovery via multicast UDP */
204
+ startDiscovery: "localsend_start_discovery",
205
+ /** Stop device discovery */
206
+ stopDiscovery: "localsend_stop_discovery",
207
+ /** Get list of discovered devices */
208
+ getDevices: "localsend_get_devices",
209
+ // Network scan (mobile only)
210
+ /** Scan network for devices via HTTP */
211
+ scanNetwork: "localsend_scan_network",
212
+ // Server (receiving files)
213
+ /** Start the HTTPS server for receiving files */
214
+ startServer: "localsend_start_server",
215
+ /** Stop the HTTPS server */
216
+ stopServer: "localsend_stop_server",
217
+ /** Get server status */
218
+ getServerStatus: "localsend_get_server_status",
219
+ /** Get pending incoming transfer requests */
220
+ getPendingTransfers: "localsend_get_pending_transfers",
221
+ /** Accept an incoming transfer */
222
+ acceptTransfer: "localsend_accept_transfer",
223
+ /** Reject an incoming transfer */
224
+ rejectTransfer: "localsend_reject_transfer",
225
+ // Client (sending files)
226
+ /** Prepare files for sending - collect metadata */
227
+ prepareFiles: "localsend_prepare_files",
228
+ /** Send files to a device */
229
+ sendFiles: "localsend_send_files",
230
+ /** Cancel an outgoing transfer */
231
+ cancelSend: "localsend_cancel_send"
232
+ };
233
+
188
234
  // src/api/storage.ts
189
235
  var StorageAPI = class {
190
236
  constructor(client) {
@@ -822,6 +868,177 @@ var BackendManagement = class {
822
868
  }
823
869
  };
824
870
 
871
+ // src/api/localsend.ts
872
+ var LOCALSEND_EVENTS = {
873
+ /** New device discovered */
874
+ deviceDiscovered: "localsend:device-discovered",
875
+ /** Device lost (no longer visible) */
876
+ deviceLost: "localsend:device-lost",
877
+ /** New incoming transfer request */
878
+ transferRequest: "localsend:transfer-request",
879
+ /** Transfer progress update */
880
+ transferProgress: "localsend:transfer-progress",
881
+ /** Transfer completed */
882
+ transferComplete: "localsend:transfer-complete",
883
+ /** Transfer failed */
884
+ transferFailed: "localsend:transfer-failed"
885
+ };
886
+ var LocalSendAPI = class {
887
+ constructor(client) {
888
+ this.client = client;
889
+ }
890
+ // ==========================================================================
891
+ // Initialization
892
+ // ==========================================================================
893
+ /**
894
+ * Initialize LocalSend (generate identity, etc.)
895
+ * Call this on app start
896
+ * @returns Our device info
897
+ */
898
+ async init() {
899
+ return this.client.request(LOCALSEND_COMMANDS.init, {});
900
+ }
901
+ /**
902
+ * Get our device info
903
+ * @returns Our device info
904
+ */
905
+ async getDeviceInfo() {
906
+ return this.client.request(LOCALSEND_COMMANDS.getDeviceInfo, {});
907
+ }
908
+ /**
909
+ * Set our device alias (display name)
910
+ * @param alias New alias
911
+ */
912
+ async setAlias(alias) {
913
+ await this.client.request(LOCALSEND_COMMANDS.setAlias, { alias });
914
+ }
915
+ // ==========================================================================
916
+ // Settings
917
+ // ==========================================================================
918
+ /**
919
+ * Get current LocalSend settings
920
+ * @returns Settings
921
+ */
922
+ async getSettings() {
923
+ return this.client.request(LOCALSEND_COMMANDS.getSettings, {});
924
+ }
925
+ /**
926
+ * Update LocalSend settings
927
+ * @param settings New settings
928
+ */
929
+ async setSettings(settings) {
930
+ await this.client.request(LOCALSEND_COMMANDS.setSettings, { settings });
931
+ }
932
+ // ==========================================================================
933
+ // Discovery (Desktop only - multicast UDP)
934
+ // ==========================================================================
935
+ /**
936
+ * Start device discovery via multicast UDP
937
+ * Desktop only - on mobile use scanNetwork()
938
+ */
939
+ async startDiscovery() {
940
+ await this.client.request(LOCALSEND_COMMANDS.startDiscovery, {});
941
+ }
942
+ /**
943
+ * Stop device discovery
944
+ * Desktop only
945
+ */
946
+ async stopDiscovery() {
947
+ await this.client.request(LOCALSEND_COMMANDS.stopDiscovery, {});
948
+ }
949
+ /**
950
+ * Get list of discovered devices
951
+ * @returns Array of discovered devices
952
+ */
953
+ async getDevices() {
954
+ return this.client.request(LOCALSEND_COMMANDS.getDevices, {});
955
+ }
956
+ // ==========================================================================
957
+ // Network Scan (Mobile only - HTTP)
958
+ // ==========================================================================
959
+ /**
960
+ * Scan network for devices via HTTP
961
+ * Mobile only - on desktop use startDiscovery()
962
+ * @returns Array of discovered devices
963
+ */
964
+ async scanNetwork() {
965
+ return this.client.request(LOCALSEND_COMMANDS.scanNetwork, {});
966
+ }
967
+ // ==========================================================================
968
+ // Server (Receiving files)
969
+ // ==========================================================================
970
+ /**
971
+ * Start the HTTPS server for receiving files
972
+ * @param port Optional port to listen on (default: 53317)
973
+ * @returns Server info with port, fingerprint, and addresses
974
+ */
975
+ async startServer(port) {
976
+ return this.client.request(LOCALSEND_COMMANDS.startServer, { port });
977
+ }
978
+ /**
979
+ * Stop the HTTPS server
980
+ */
981
+ async stopServer() {
982
+ await this.client.request(LOCALSEND_COMMANDS.stopServer, {});
983
+ }
984
+ /**
985
+ * Get server status
986
+ * @returns Server status
987
+ */
988
+ async getServerStatus() {
989
+ return this.client.request(LOCALSEND_COMMANDS.getServerStatus, {});
990
+ }
991
+ /**
992
+ * Get pending incoming transfer requests
993
+ * @returns Array of pending transfers
994
+ */
995
+ async getPendingTransfers() {
996
+ return this.client.request(LOCALSEND_COMMANDS.getPendingTransfers, {});
997
+ }
998
+ /**
999
+ * Accept an incoming transfer
1000
+ * @param sessionId Session ID of the transfer
1001
+ * @param saveDir Directory to save files to
1002
+ */
1003
+ async acceptTransfer(sessionId, saveDir) {
1004
+ await this.client.request(LOCALSEND_COMMANDS.acceptTransfer, { sessionId, saveDir });
1005
+ }
1006
+ /**
1007
+ * Reject an incoming transfer
1008
+ * @param sessionId Session ID of the transfer
1009
+ */
1010
+ async rejectTransfer(sessionId) {
1011
+ await this.client.request(LOCALSEND_COMMANDS.rejectTransfer, { sessionId });
1012
+ }
1013
+ // ==========================================================================
1014
+ // Client (Sending files)
1015
+ // ==========================================================================
1016
+ /**
1017
+ * Prepare files for sending - collect metadata
1018
+ * @param paths Array of file/folder paths to send
1019
+ * @returns Array of file info with metadata
1020
+ */
1021
+ async prepareFiles(paths) {
1022
+ return this.client.request(LOCALSEND_COMMANDS.prepareFiles, { paths });
1023
+ }
1024
+ /**
1025
+ * Send files to a device
1026
+ * @param device Target device
1027
+ * @param files Files to send (from prepareFiles)
1028
+ * @returns Session ID for tracking progress
1029
+ */
1030
+ async sendFiles(device, files) {
1031
+ return this.client.request(LOCALSEND_COMMANDS.sendFiles, { device, files });
1032
+ }
1033
+ /**
1034
+ * Cancel an outgoing transfer
1035
+ * @param sessionId Session ID of the transfer
1036
+ */
1037
+ async cancelSend(sessionId) {
1038
+ await this.client.request(LOCALSEND_COMMANDS.cancelSend, { sessionId });
1039
+ }
1040
+ };
1041
+
825
1042
  // src/messages.ts
826
1043
  var HAEXSPACE_MESSAGE_TYPES = {
827
1044
  /** Debug message for development/troubleshooting */
@@ -1094,6 +1311,105 @@ async function setupTauriEventListeners(ctx, log, onEvent, onContextChange) {
1094
1311
  console.error("[HaexVault SDK] Failed to setup sync tables updated listener:", error);
1095
1312
  log("Failed to setup sync tables updated listener:", error);
1096
1313
  }
1314
+ await setupLocalSendEventListeners(log, onEvent);
1315
+ }
1316
+ async function setupLocalSendEventListeners(log, onEvent) {
1317
+ const { listen } = getTauriEvent();
1318
+ try {
1319
+ await listen(LOCALSEND_EVENTS.deviceDiscovered, (event) => {
1320
+ console.log("[HaexVault SDK] LocalSend device discovered:", event.payload);
1321
+ log("Received LocalSend device discovered event:", event);
1322
+ if (event.payload) {
1323
+ onEvent({
1324
+ type: LOCALSEND_EVENTS.deviceDiscovered,
1325
+ data: event.payload,
1326
+ timestamp: Date.now()
1327
+ });
1328
+ }
1329
+ });
1330
+ console.log("[HaexVault SDK] LocalSend device discovered listener registered");
1331
+ } catch (error) {
1332
+ console.error("[HaexVault SDK] Failed to setup LocalSend device discovered listener:", error);
1333
+ }
1334
+ try {
1335
+ await listen(LOCALSEND_EVENTS.deviceLost, (event) => {
1336
+ console.log("[HaexVault SDK] LocalSend device lost:", event.payload);
1337
+ log("Received LocalSend device lost event:", event);
1338
+ if (event.payload) {
1339
+ onEvent({
1340
+ type: LOCALSEND_EVENTS.deviceLost,
1341
+ data: event.payload,
1342
+ timestamp: Date.now()
1343
+ });
1344
+ }
1345
+ });
1346
+ console.log("[HaexVault SDK] LocalSend device lost listener registered");
1347
+ } catch (error) {
1348
+ console.error("[HaexVault SDK] Failed to setup LocalSend device lost listener:", error);
1349
+ }
1350
+ try {
1351
+ await listen(LOCALSEND_EVENTS.transferRequest, (event) => {
1352
+ console.log("[HaexVault SDK] LocalSend transfer request:", event.payload);
1353
+ log("Received LocalSend transfer request event:", event);
1354
+ if (event.payload) {
1355
+ onEvent({
1356
+ type: LOCALSEND_EVENTS.transferRequest,
1357
+ data: event.payload,
1358
+ timestamp: Date.now()
1359
+ });
1360
+ }
1361
+ });
1362
+ console.log("[HaexVault SDK] LocalSend transfer request listener registered");
1363
+ } catch (error) {
1364
+ console.error("[HaexVault SDK] Failed to setup LocalSend transfer request listener:", error);
1365
+ }
1366
+ try {
1367
+ await listen(LOCALSEND_EVENTS.transferProgress, (event) => {
1368
+ log("Received LocalSend transfer progress event:", event);
1369
+ if (event.payload) {
1370
+ onEvent({
1371
+ type: LOCALSEND_EVENTS.transferProgress,
1372
+ data: event.payload,
1373
+ timestamp: Date.now()
1374
+ });
1375
+ }
1376
+ });
1377
+ console.log("[HaexVault SDK] LocalSend transfer progress listener registered");
1378
+ } catch (error) {
1379
+ console.error("[HaexVault SDK] Failed to setup LocalSend transfer progress listener:", error);
1380
+ }
1381
+ try {
1382
+ await listen(LOCALSEND_EVENTS.transferComplete, (event) => {
1383
+ console.log("[HaexVault SDK] LocalSend transfer complete:", event.payload);
1384
+ log("Received LocalSend transfer complete event:", event);
1385
+ if (event.payload) {
1386
+ onEvent({
1387
+ type: LOCALSEND_EVENTS.transferComplete,
1388
+ data: event.payload,
1389
+ timestamp: Date.now()
1390
+ });
1391
+ }
1392
+ });
1393
+ console.log("[HaexVault SDK] LocalSend transfer complete listener registered");
1394
+ } catch (error) {
1395
+ console.error("[HaexVault SDK] Failed to setup LocalSend transfer complete listener:", error);
1396
+ }
1397
+ try {
1398
+ await listen(LOCALSEND_EVENTS.transferFailed, (event) => {
1399
+ console.log("[HaexVault SDK] LocalSend transfer failed:", event.payload);
1400
+ log("Received LocalSend transfer failed event:", event);
1401
+ if (event.payload) {
1402
+ onEvent({
1403
+ type: LOCALSEND_EVENTS.transferFailed,
1404
+ data: event.payload,
1405
+ timestamp: Date.now()
1406
+ });
1407
+ }
1408
+ });
1409
+ console.log("[HaexVault SDK] LocalSend transfer failed listener registered");
1410
+ } catch (error) {
1411
+ console.error("[HaexVault SDK] Failed to setup LocalSend transfer failed listener:", error);
1412
+ }
1097
1413
  }
1098
1414
  async function initIframeMode(ctx, log, messageHandler, request) {
1099
1415
  if (!isInIframe()) {
@@ -1427,6 +1743,7 @@ var HaexVaultSdk = class {
1427
1743
  this.web = new WebAPI(this);
1428
1744
  this.permissions = new PermissionsAPI(this);
1429
1745
  this.remoteStorage = new RemoteStorageAPI(this);
1746
+ this.localsend = new LocalSendAPI(this);
1430
1747
  installConsoleForwarding(this.config.debug);
1431
1748
  this.readyPromise = new Promise((resolve) => {
1432
1749
  this.resolveReady = resolve;