@internxt/cli 1.6.3 → 1.6.4

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/README.md CHANGED
@@ -52,7 +52,7 @@ $ npm install -g @internxt/cli
52
52
  $ internxt COMMAND
53
53
  running command...
54
54
  $ internxt (--version)
55
- @internxt/cli/1.6.3 linux-x64 node-v22.22.0
55
+ @internxt/cli/1.6.4 linux-x64 node-v22.22.1
56
56
  $ internxt --help [COMMAND]
57
57
  USAGE
58
58
  $ internxt COMMAND
@@ -139,7 +139,7 @@ EXAMPLES
139
139
  $ internxt add-cert
140
140
  ```
141
141
 
142
- _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/add-cert.ts)_
142
+ _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/add-cert.ts)_
143
143
 
144
144
  ## `internxt add cert`
145
145
 
@@ -191,7 +191,7 @@ EXAMPLES
191
191
  $ internxt autocomplete --refresh-cache
192
192
  ```
193
193
 
194
- _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.40/src/commands/autocomplete/index.ts)_
194
+ _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.41/src/commands/autocomplete/index.ts)_
195
195
 
196
196
  ## `internxt config`
197
197
 
@@ -220,7 +220,7 @@ EXAMPLES
220
220
  $ internxt config
221
221
  ```
222
222
 
223
- _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/config.ts)_
223
+ _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/config.ts)_
224
224
 
225
225
  ## `internxt create-folder`
226
226
 
@@ -254,7 +254,7 @@ EXAMPLES
254
254
  $ internxt create-folder
255
255
  ```
256
256
 
257
- _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/create-folder.ts)_
257
+ _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/create-folder.ts)_
258
258
 
259
259
  ## `internxt create folder`
260
260
 
@@ -318,7 +318,7 @@ EXAMPLES
318
318
  $ internxt delete-permanently-file
319
319
  ```
320
320
 
321
- _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/delete-permanently-file.ts)_
321
+ _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/delete-permanently-file.ts)_
322
322
 
323
323
  ## `internxt delete-permanently-folder`
324
324
 
@@ -350,7 +350,7 @@ EXAMPLES
350
350
  $ internxt delete-permanently-folder
351
351
  ```
352
352
 
353
- _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/delete-permanently-folder.ts)_
353
+ _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/delete-permanently-folder.ts)_
354
354
 
355
355
  ## `internxt delete permanently file`
356
356
 
@@ -445,7 +445,7 @@ EXAMPLES
445
445
  $ internxt download-file
446
446
  ```
447
447
 
448
- _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/download-file.ts)_
448
+ _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/download-file.ts)_
449
449
 
450
450
  ## `internxt download file`
451
451
 
@@ -508,7 +508,7 @@ EXAMPLES
508
508
  $ internxt list
509
509
  ```
510
510
 
511
- _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/list.ts)_
511
+ _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/list.ts)_
512
512
 
513
513
  ## `internxt login`
514
514
 
@@ -536,7 +536,7 @@ EXAMPLES
536
536
  $ internxt login
537
537
  ```
538
538
 
539
- _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/login.ts)_
539
+ _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/login.ts)_
540
540
 
541
541
  ## `internxt login-legacy`
542
542
 
@@ -570,7 +570,7 @@ EXAMPLES
570
570
  $ internxt login-legacy
571
571
  ```
572
572
 
573
- _See code: [src/commands/login-legacy.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/login-legacy.ts)_
573
+ _See code: [src/commands/login-legacy.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/login-legacy.ts)_
574
574
 
575
575
  ## `internxt logout`
576
576
 
@@ -590,7 +590,7 @@ EXAMPLES
590
590
  $ internxt logout
591
591
  ```
592
592
 
593
- _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/logout.ts)_
593
+ _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/logout.ts)_
594
594
 
595
595
  ## `internxt logs`
596
596
 
@@ -610,7 +610,7 @@ EXAMPLES
610
610
  $ internxt logs
611
611
  ```
612
612
 
613
- _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/logs.ts)_
613
+ _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/logs.ts)_
614
614
 
615
615
  ## `internxt move-file`
616
616
 
@@ -644,7 +644,7 @@ EXAMPLES
644
644
  $ internxt move-file
645
645
  ```
646
646
 
647
- _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/move-file.ts)_
647
+ _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/move-file.ts)_
648
648
 
649
649
  ## `internxt move-folder`
650
650
 
@@ -678,7 +678,7 @@ EXAMPLES
678
678
  $ internxt move-folder
679
679
  ```
680
680
 
681
- _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/move-folder.ts)_
681
+ _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/move-folder.ts)_
682
682
 
683
683
  ## `internxt move file`
684
684
 
@@ -775,7 +775,7 @@ EXAMPLES
775
775
  $ internxt rename-file
776
776
  ```
777
777
 
778
- _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/rename-file.ts)_
778
+ _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/rename-file.ts)_
779
779
 
780
780
  ## `internxt rename-folder`
781
781
 
@@ -808,7 +808,7 @@ EXAMPLES
808
808
  $ internxt rename-folder
809
809
  ```
810
810
 
811
- _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/rename-folder.ts)_
811
+ _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/rename-folder.ts)_
812
812
 
813
813
  ## `internxt rename file`
814
814
 
@@ -902,7 +902,7 @@ EXAMPLES
902
902
  $ internxt trash-clear
903
903
  ```
904
904
 
905
- _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-clear.ts)_
905
+ _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-clear.ts)_
906
906
 
907
907
  ## `internxt trash-file`
908
908
 
@@ -934,7 +934,7 @@ EXAMPLES
934
934
  $ internxt trash-file
935
935
  ```
936
936
 
937
- _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-file.ts)_
937
+ _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-file.ts)_
938
938
 
939
939
  ## `internxt trash-folder`
940
940
 
@@ -966,7 +966,7 @@ EXAMPLES
966
966
  $ internxt trash-folder
967
967
  ```
968
968
 
969
- _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-folder.ts)_
969
+ _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-folder.ts)_
970
970
 
971
971
  ## `internxt trash-list`
972
972
 
@@ -992,7 +992,7 @@ EXAMPLES
992
992
  $ internxt trash-list
993
993
  ```
994
994
 
995
- _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-list.ts)_
995
+ _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-list.ts)_
996
996
 
997
997
  ## `internxt trash-restore-file`
998
998
 
@@ -1025,7 +1025,7 @@ EXAMPLES
1025
1025
  $ internxt trash-restore-file
1026
1026
  ```
1027
1027
 
1028
- _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-restore-file.ts)_
1028
+ _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-restore-file.ts)_
1029
1029
 
1030
1030
  ## `internxt trash-restore-folder`
1031
1031
 
@@ -1058,7 +1058,7 @@ EXAMPLES
1058
1058
  $ internxt trash-restore-folder
1059
1059
  ```
1060
1060
 
1061
- _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/trash-restore-folder.ts)_
1061
+ _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/trash-restore-folder.ts)_
1062
1062
 
1063
1063
  ## `internxt trash clear`
1064
1064
 
@@ -1267,7 +1267,7 @@ EXAMPLES
1267
1267
  $ internxt upload-file
1268
1268
  ```
1269
1269
 
1270
- _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/upload-file.ts)_
1270
+ _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/upload-file.ts)_
1271
1271
 
1272
1272
  ## `internxt upload-folder`
1273
1273
 
@@ -1300,7 +1300,7 @@ EXAMPLES
1300
1300
  $ internxt upload-folder
1301
1301
  ```
1302
1302
 
1303
- _See code: [src/commands/upload-folder.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/upload-folder.ts)_
1303
+ _See code: [src/commands/upload-folder.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/upload-folder.ts)_
1304
1304
 
1305
1305
  ## `internxt upload file`
1306
1306
 
@@ -1388,7 +1388,7 @@ EXAMPLES
1388
1388
  $ internxt webdav status
1389
1389
  ```
1390
1390
 
1391
- _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/webdav.ts)_
1391
+ _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/webdav.ts)_
1392
1392
 
1393
1393
  ## `internxt webdav-config`
1394
1394
 
@@ -1427,7 +1427,7 @@ EXAMPLES
1427
1427
  $ internxt webdav-config
1428
1428
  ```
1429
1429
 
1430
- _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/webdav-config.ts)_
1430
+ _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/webdav-config.ts)_
1431
1431
 
1432
1432
  ## `internxt whoami`
1433
1433
 
@@ -1447,7 +1447,7 @@ EXAMPLES
1447
1447
  $ internxt whoami
1448
1448
  ```
1449
1449
 
1450
- _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/whoami.ts)_
1450
+ _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/whoami.ts)_
1451
1451
 
1452
1452
  ## `internxt workspaces-list`
1453
1453
 
@@ -1479,7 +1479,7 @@ EXAMPLES
1479
1479
  $ internxt workspaces-list
1480
1480
  ```
1481
1481
 
1482
- _See code: [src/commands/workspaces-list.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/workspaces-list.ts)_
1482
+ _See code: [src/commands/workspaces-list.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/workspaces-list.ts)_
1483
1483
 
1484
1484
  ## `internxt workspaces-unset`
1485
1485
 
@@ -1509,7 +1509,7 @@ EXAMPLES
1509
1509
  $ internxt workspaces-unset
1510
1510
  ```
1511
1511
 
1512
- _See code: [src/commands/workspaces-unset.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/workspaces-unset.ts)_
1512
+ _See code: [src/commands/workspaces-unset.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/workspaces-unset.ts)_
1513
1513
 
1514
1514
  ## `internxt workspaces-use`
1515
1515
 
@@ -1545,7 +1545,7 @@ EXAMPLES
1545
1545
  $ internxt workspaces-use
1546
1546
  ```
1547
1547
 
1548
- _See code: [src/commands/workspaces-use.ts](https://github.com/internxt/cli/blob/v1.6.3/src/commands/workspaces-use.ts)_
1548
+ _See code: [src/commands/workspaces-use.ts](https://github.com/internxt/cli/blob/v1.6.4/src/commands/workspaces-use.ts)_
1549
1549
 
1550
1550
  ## `internxt workspaces list`
1551
1551
 
@@ -1642,4 +1642,4 @@ EXAMPLES
1642
1642
 
1643
1643
  # Current Limitations
1644
1644
 
1645
- - We currently have a 20GB size upload limitation per file for both, CLI and WebDAV
1645
+ - We currently have a 40GB size upload limitation per file for both, CLI and WebDAV
@@ -83,17 +83,17 @@ class UploadFile extends core_1.Command {
83
83
  const progressCallback = (progress) => {
84
84
  progressBar?.update(progress * 100 * 0.99);
85
85
  };
86
- fileId = await new Promise((resolve, reject) => {
87
- const state = networkFacade.uploadFile(fileStream, fileSize, bucket, (err, res) => {
88
- if (err) {
89
- return reject(err);
90
- }
91
- resolve(res);
92
- }, progressCallback);
93
- process.on('SIGINT', () => {
94
- state.stop();
95
- process.exit(1);
96
- });
86
+ const abortable = new AbortController();
87
+ fileId = await networkFacade.uploadFile({
88
+ from: fileStream,
89
+ size: fileSize,
90
+ bucketId: bucket,
91
+ progressCallback,
92
+ abortSignal: abortable.signal,
93
+ });
94
+ process.on('SIGINT', () => {
95
+ abortable.abort();
96
+ process.exit(1);
97
97
  });
98
98
  }
99
99
  timings.networkUpload = networkUploadTimer.stop();
@@ -3,12 +3,19 @@ import { Environment } from '@internxt/inxt-js';
3
3
  import { Readable } from 'node:stream';
4
4
  import { DownloadOptions } from '../../types/network.types';
5
5
  import { RangeOptions } from '../../utils/network.utils';
6
- import { ActionState } from '@internxt/inxt-js/build/api';
6
+ import { EncryptProgressCallback } from '@internxt/inxt-js/build/lib/core';
7
7
  export declare class NetworkFacade {
8
8
  private readonly network;
9
9
  private readonly environment;
10
10
  private readonly cryptoLib;
11
11
  constructor(network: Network.Network, environment: Environment);
12
12
  downloadToStream: (bucketId: string, mnemonic: string, fileId: string, size: number, to: WritableStream, rangeOptions?: RangeOptions, options?: DownloadOptions) => Promise<[Promise<void>, AbortController]>;
13
- uploadFile: (from: Readable, size: number, bucketId: string, finishedCallback: (err: Error | null, res: string | null) => void, progressCallback: (progress: number) => void) => ActionState;
13
+ uploadFile: ({ from, size, bucketId, progressCallback, abortSignal, encryptProgressCallback, }: {
14
+ from: Readable;
15
+ size: number;
16
+ bucketId: string;
17
+ progressCallback: (progress: number) => void;
18
+ abortSignal?: AbortSignal;
19
+ encryptProgressCallback?: EncryptProgressCallback;
20
+ }) => Promise<string>;
14
21
  }
@@ -41,7 +41,7 @@ const node_crypto_1 = require("node:crypto");
41
41
  const crypto_service_1 = require("../crypto.service");
42
42
  const download_service_1 = require("./download.service");
43
43
  const validation_service_1 = require("../validation.service");
44
- const TWENTY_GIGABYTES = 20 * 1024 * 1024 * 1024;
44
+ const FORTY_GIGABYTES = 40 * 1024 * 1024 * 1024;
45
45
  class NetworkFacade {
46
46
  network;
47
47
  environment;
@@ -99,28 +99,17 @@ class NetworkFacade {
99
99
  };
100
100
  return [downloadOperation(), abortable];
101
101
  };
102
- uploadFile = (from, size, bucketId, finishedCallback, progressCallback) => {
103
- if (size > TWENTY_GIGABYTES) {
104
- throw new Error('File is too big (more than 20 GB)');
105
- }
106
- const minimumMultipartThreshold = 100 * 1024 * 1024;
107
- const useMultipart = size > minimumMultipartThreshold;
108
- if (useMultipart) {
109
- return this.environment.uploadMultipartFile(bucketId, {
110
- source: from,
111
- fileSize: size,
112
- finishedCallback,
113
- progressCallback,
114
- });
115
- }
116
- else {
117
- return this.environment.upload(bucketId, {
118
- source: from,
119
- fileSize: size,
120
- finishedCallback,
121
- progressCallback,
122
- });
102
+ uploadFile = ({ from, size, bucketId, progressCallback, abortSignal, encryptProgressCallback, }) => {
103
+ if (size > FORTY_GIGABYTES) {
104
+ throw new Error('File is too big (more than 40 GB)');
123
105
  }
106
+ return this.environment.upload(bucketId, {
107
+ source: from,
108
+ fileSize: size,
109
+ progressCallback,
110
+ abortSignal,
111
+ encryptProgressCallback,
112
+ });
124
113
  };
125
114
  }
126
115
  exports.NetworkFacade = NetworkFacade;
@@ -63,13 +63,11 @@ class UploadFileService {
63
63
  });
64
64
  const uploadTimer = cli_utils_1.CLIUtils.timer();
65
65
  thumbnailStream = bufferStream;
66
- fileId = await new Promise((resolve, reject) => {
67
- network.uploadFile(fileStream, fileSize, bucket, (err, res) => {
68
- if (err) {
69
- return reject(err);
70
- }
71
- resolve(res);
72
- }, () => { });
66
+ fileId = await network.uploadFile({
67
+ from: fileStream,
68
+ size: fileSize,
69
+ bucketId: bucket,
70
+ progressCallback: () => { },
73
71
  });
74
72
  timings.networkUpload = uploadTimer.stop();
75
73
  }
@@ -31,13 +31,11 @@ class ThumbnailService {
31
31
  }
32
32
  if (thumbnailBuffer) {
33
33
  const size = thumbnailBuffer.length;
34
- const fileId = await new Promise((resolve, reject) => {
35
- networkFacade.uploadFile(node_stream_1.Readable.from(thumbnailBuffer), size, userBucket, (err, res) => {
36
- if (err) {
37
- return reject(err);
38
- }
39
- resolve(res);
40
- }, () => { });
34
+ const fileId = await networkFacade.uploadFile({
35
+ from: node_stream_1.Readable.from(thumbnailBuffer),
36
+ size: size,
37
+ bucketId: userBucket,
38
+ progressCallback: () => { },
41
39
  });
42
40
  const createdThumbnailFile = await drive_file_service_1.DriveFileService.instance.createThumbnail({
43
41
  fileUuid: file_id,
@@ -10,4 +10,5 @@ export declare class WebDavUtils {
10
10
  static getDriveFileFromResource(url: string): Promise<DriveFileItem | undefined>;
11
11
  static getDriveFolderFromResource(url: string): Promise<DriveFolderItem | undefined>;
12
12
  static getDriveItemFromResource(resource: WebDavRequestedResource): Promise<DriveItem | undefined>;
13
+ static deleteOrTrashItem(driveItem: DriveItem): Promise<void>;
13
14
  }
@@ -8,6 +8,9 @@ const node_path_1 = __importDefault(require("node:path"));
8
8
  const drive_folder_service_1 = require("../services/drive/drive-folder.service");
9
9
  const drive_file_service_1 = require("../services/drive/drive-file.service");
10
10
  const logger_utils_1 = require("./logger.utils");
11
+ const config_service_1 = require("../services/config.service");
12
+ const trash_service_1 = require("../services/drive/trash.service");
13
+ const format_utils_1 = require("./format.utils");
11
14
  class WebDavUtils {
12
15
  static joinURL(...pathComponents) {
13
16
  return node_path_1.default.posix.join(...pathComponents);
@@ -85,5 +88,21 @@ class WebDavUtils {
85
88
  }
86
89
  return item;
87
90
  }
91
+ static async deleteOrTrashItem(driveItem) {
92
+ const configs = await config_service_1.ConfigService.instance.readWebdavConfig();
93
+ const type = format_utils_1.FormatUtils.capitalizeFirstLetter(driveItem.itemType);
94
+ if (configs.deleteFilesPermanently) {
95
+ logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] Deleting permanently ${driveItem.itemType}`);
96
+ await trash_service_1.TrashService.instance.deleteItemPermanently(driveItem.itemType, driveItem.uuid);
97
+ logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] ${type} deleted permanently successfully`);
98
+ }
99
+ else {
100
+ logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] Trashing ${driveItem.itemType}`);
101
+ await trash_service_1.TrashService.instance.trashItems({
102
+ items: [{ type: driveItem.itemType, uuid: driveItem.uuid }],
103
+ });
104
+ logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] ${type} trashed successfully`);
105
+ }
106
+ }
88
107
  }
89
108
  exports.WebDavUtils = WebDavUtils;
@@ -1,4 +1,4 @@
1
- import { X2jOptions, XmlBuilderOptions } from '../types/fast-xml-parser.types';
1
+ import { X2jOptions, XmlBuilderOptions } from 'fast-xml-parser';
2
2
  export declare class XMLUtils {
3
3
  static readonly DEFAULT_NAMESPACE_LETTER = "D";
4
4
  static toJSON(xml: string, options?: X2jOptions): any;
@@ -2,11 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DELETERequestHandler = void 0;
4
4
  const webdav_utils_1 = require("../../utils/webdav.utils");
5
- const trash_service_1 = require("../../services/drive/trash.service");
6
5
  const logger_utils_1 = require("../../utils/logger.utils");
7
6
  const errors_utils_1 = require("../../utils/errors.utils");
8
- const config_service_1 = require("../../services/config.service");
9
- const format_utils_1 = require("../../utils/format.utils");
10
7
  class DELETERequestHandler {
11
8
  handle = async (req, res) => {
12
9
  const resource = await webdav_utils_1.WebDavUtils.getRequestedResource(req.url);
@@ -15,20 +12,7 @@ class DELETERequestHandler {
15
12
  if (!driveItem) {
16
13
  throw new errors_utils_1.NotFoundError(`Resource not found on Internxt Drive at ${resource.url}`);
17
14
  }
18
- const type = format_utils_1.FormatUtils.capitalizeFirstLetter(driveItem.itemType);
19
- const configs = await config_service_1.ConfigService.instance.readWebdavConfig();
20
- if (configs.deleteFilesPermanently) {
21
- logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] Deleting permanently ${driveItem.itemType}`);
22
- await trash_service_1.TrashService.instance.deleteItemPermanently(driveItem.itemType, driveItem.uuid);
23
- logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] ${type} deleted permanently successfully`);
24
- }
25
- else {
26
- logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] Trashing ${driveItem.itemType}`);
27
- await trash_service_1.TrashService.instance.trashItems({
28
- items: [{ type: driveItem.itemType, uuid: driveItem.uuid }],
29
- });
30
- logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] ${type} trashed successfully`);
31
- }
15
+ await webdav_utils_1.WebDavUtils.deleteOrTrashItem(driveItem);
32
16
  res.status(204).send();
33
17
  };
34
18
  }
@@ -6,7 +6,6 @@ const auth_service_1 = require("../../services/auth.service");
6
6
  const errors_utils_1 = require("../../utils/errors.utils");
7
7
  const webdav_utils_1 = require("../../utils/webdav.utils");
8
8
  const logger_utils_1 = require("../../utils/logger.utils");
9
- const trash_service_1 = require("../../services/drive/trash.service");
10
9
  const types_1 = require("@internxt/sdk/dist/drive/storage/types");
11
10
  const cli_utils_1 = require("../../utils/cli.utils");
12
11
  const stream_utils_1 = require("../../utils/stream.utils");
@@ -36,10 +35,8 @@ class PUTRequestHandler {
36
35
  (await webdav_folder_service_1.WebDavFolderService.instance.createParentPathOrThrow(resource.parentPath));
37
36
  try {
38
37
  if (driveFileItem && driveFileItem.status === 'EXISTS') {
39
- logger_utils_1.webdavLogger.info(`[PUT] File '${resource.name}' already exists in '${resource.path.dir}', trashing it...`);
40
- await trash_service_1.TrashService.instance.trashItems({
41
- items: [{ type: driveFileItem.itemType, uuid: driveFileItem.uuid }],
42
- });
38
+ logger_utils_1.webdavLogger.info(`[PUT] File '${resource.name}' already exists in '${resource.path.dir}', it will be replaced...`);
39
+ await webdav_utils_1.WebDavUtils.deleteOrTrashItem(driveFileItem);
43
40
  }
44
41
  }
45
42
  catch {
@@ -63,21 +60,20 @@ class PUTRequestHandler {
63
60
  }
64
61
  };
65
62
  const networkUploadTimer = cli_utils_1.CLIUtils.timer();
66
- fileId = await new Promise((resolve, reject) => {
67
- const state = networkFacade.uploadFile(fileStream, contentLength, bucket, (err, res) => {
68
- if (err) {
69
- aborted = true;
70
- return reject(err);
71
- }
72
- resolve(res);
73
- }, progressCallback);
74
- res.on('close', async () => {
75
- aborted = true;
76
- if (!uploaded) {
77
- logger_utils_1.webdavLogger.info('[PUT] ❌ HTTP Client has been disconnected, res has been closed.');
78
- state.stop();
79
- }
80
- });
63
+ const abortable = new AbortController();
64
+ fileId = await networkFacade.uploadFile({
65
+ from: fileStream,
66
+ size: contentLength,
67
+ bucketId: bucket,
68
+ progressCallback,
69
+ abortSignal: abortable.signal,
70
+ });
71
+ res.on('close', async () => {
72
+ aborted = true;
73
+ if (!uploaded) {
74
+ logger_utils_1.webdavLogger.info('[PUT] ❌ HTTP Client has been disconnected, res has been closed.');
75
+ abortable.abort();
76
+ }
81
77
  });
82
78
  uploaded = true;
83
79
  timings.networkUpload = networkUploadTimer.stop();
@@ -1839,5 +1839,5 @@
1839
1839
  ]
1840
1840
  }
1841
1841
  },
1842
- "version": "1.6.3"
1842
+ "version": "1.6.4"
1843
1843
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "author": "Internxt <hello@internxt.com>",
3
- "version": "1.6.3",
3
+ "version": "1.6.4",
4
4
  "description": "Internxt CLI to manage your encrypted storage",
5
5
  "scripts": {
6
6
  "build": "yarn clean && tsc",
@@ -37,22 +37,22 @@
37
37
  ],
38
38
  "dependencies": {
39
39
  "@dashlane/pqc-kem-kyber512-node": "1.0.0",
40
- "@inquirer/prompts": "8.3.0",
41
- "@internxt/inxt-js": "2.3.1",
40
+ "@inquirer/prompts": "8.3.2",
41
+ "@internxt/inxt-js": "3.0.2",
42
42
  "@internxt/lib": "1.4.1",
43
- "@internxt/sdk": "1.15.1",
44
- "@oclif/core": "4.8.3",
45
- "@oclif/plugin-autocomplete": "3.2.40",
43
+ "@internxt/sdk": "1.15.4",
44
+ "@oclif/core": "4.9.0",
45
+ "@oclif/plugin-autocomplete": "3.2.41",
46
46
  "axios": "1.13.6",
47
- "better-sqlite3": "12.6.2",
47
+ "better-sqlite3": "12.8.0",
48
48
  "bip39": "3.1.0",
49
49
  "body-parser": "2.2.2",
50
50
  "cli-progress": "3.12.0",
51
- "dayjs": "1.11.19",
51
+ "dayjs": "1.11.20",
52
52
  "dotenv": "17.3.1",
53
53
  "express": "5.2.1",
54
54
  "express-async-handler": "1.2.0",
55
- "fast-xml-parser": "5.4.2",
55
+ "fast-xml-parser": "5.5.6",
56
56
  "hash-wasm": "4.12.0",
57
57
  "mime-types": "3.0.2",
58
58
  "open": "11.0.0",
@@ -66,27 +66,27 @@
66
66
  "winston": "3.19.0"
67
67
  },
68
68
  "devDependencies": {
69
- "@internxt/eslint-config-internxt": "2.0.1",
69
+ "@internxt/eslint-config-internxt": "2.1.0",
70
70
  "@internxt/prettier-config": "internxt/prettier-config#v1.0.2",
71
71
  "@openpgp/web-stream-tools": "0.3.0",
72
72
  "@types/cli-progress": "3.11.6",
73
73
  "@types/express": "5.0.6",
74
74
  "@types/mime-types": "3.0.1",
75
- "@types/node": "25.3.3",
75
+ "@types/node": "25.5.0",
76
76
  "@types/range-parser": "1.2.7",
77
- "@vitest/coverage-istanbul": "4.0.18",
78
- "@vitest/spy": "4.0.18",
79
- "eslint": "9.39.3",
77
+ "@vitest/coverage-istanbul": "4.1.0",
78
+ "@vitest/spy": "4.1.0",
79
+ "eslint": "10.0.3",
80
80
  "husky": "9.1.7",
81
- "lint-staged": "16.3.2",
81
+ "lint-staged": "16.4.0",
82
82
  "nodemon": "3.1.14",
83
- "oclif": "4.22.85",
83
+ "oclif": "4.22.92",
84
84
  "prettier": "3.8.1",
85
85
  "rimraf": "6.1.3",
86
86
  "sql.js": "1.14.1",
87
87
  "ts-node": "10.9.2",
88
88
  "typescript": "5.9.3",
89
- "vitest": "4.0.18",
89
+ "vitest": "4.1.0",
90
90
  "vitest-mock-express": "2.2.0"
91
91
  },
92
92
  "optionalDependencies": {
@@ -1,59 +0,0 @@
1
- type strnumOptions = {
2
- hex: boolean;
3
- leadingZeros: boolean;
4
- skipLike?: RegExp;
5
- eNotation?: boolean;
6
- };
7
- export type X2jOptions = {
8
- preserveOrder?: boolean;
9
- attributeNamePrefix?: string;
10
- attributesGroupName?: false | string;
11
- textNodeName?: string;
12
- ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean);
13
- removeNSPrefix?: boolean;
14
- allowBooleanAttributes?: boolean;
15
- parseTagValue?: boolean;
16
- parseAttributeValue?: boolean;
17
- trimValues?: boolean;
18
- cdataPropName?: false | string;
19
- commentPropName?: false | string;
20
- tagValueProcessor?: (tagName: string, tagValue: string, jPath: string, hasAttributes: boolean, isLeafNode: boolean) => unknown;
21
- attributeValueProcessor?: (attrName: string, attrValue: string, jPath: string) => unknown;
22
- numberParseOptions?: strnumOptions;
23
- stopNodes?: string[];
24
- unpairedTags?: string[];
25
- alwaysCreateTextNode?: boolean;
26
- isArray?: (tagName: string, jPath: string, isLeafNode: boolean, isAttribute: boolean) => boolean;
27
- processEntities?: boolean;
28
- htmlEntities?: boolean;
29
- ignoreDeclaration?: boolean;
30
- ignorePiTags?: boolean;
31
- transformTagName?: ((tagName: string) => string) | false;
32
- transformAttributeName?: ((attributeName: string) => string) | false;
33
- updateTag?: (tagName: string, jPath: string, attrs: {
34
- [k: string]: string;
35
- }) => string | boolean;
36
- captureMetaData?: boolean;
37
- };
38
- export type XmlBuilderOptions = {
39
- attributeNamePrefix?: string;
40
- attributesGroupName?: false | string;
41
- textNodeName?: string;
42
- ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean);
43
- cdataPropName?: false | string;
44
- commentPropName?: false | string;
45
- format?: boolean;
46
- indentBy?: string;
47
- arrayNodeName?: string;
48
- suppressEmptyNode?: boolean;
49
- suppressUnpairedNode?: boolean;
50
- suppressBooleanAttributes?: boolean;
51
- preserveOrder?: boolean;
52
- unpairedTags?: string[];
53
- stopNodes?: string[];
54
- tagValueProcessor?: (name: string, value: unknown) => unknown;
55
- attributeValueProcessor?: (name: string, value: unknown) => unknown;
56
- processEntities?: boolean;
57
- oneListGroup?: boolean;
58
- };
59
- export {};
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });