@internxt/cli 1.5.3 → 1.5.5

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.
Files changed (45) hide show
  1. package/.env +4 -7
  2. package/README.md +78 -26
  3. package/bin/dev.js +1 -1
  4. package/bin/run.js +1 -1
  5. package/dist/commands/create-folder.js +1 -1
  6. package/dist/commands/delete-permanently-file.js +1 -1
  7. package/dist/commands/delete-permanently-folder.js +1 -1
  8. package/dist/commands/download-file.js +2 -1
  9. package/dist/commands/logout.js +2 -0
  10. package/dist/commands/upload-file.js +3 -2
  11. package/dist/services/auth.service.d.ts +1 -0
  12. package/dist/services/auth.service.js +14 -1
  13. package/dist/services/crypto.service.d.ts +1 -1
  14. package/dist/services/crypto.service.js +2 -2
  15. package/dist/services/drive/drive-file.service.d.ts +1 -1
  16. package/dist/services/drive/drive-file.service.js +7 -7
  17. package/dist/services/drive/drive-folder.service.js +7 -7
  18. package/dist/services/drive/trash.service.d.ts +6 -4
  19. package/dist/services/drive/trash.service.js +6 -6
  20. package/dist/services/keys.service.js +1 -1
  21. package/dist/services/sdk-manager.service.d.ts +3 -5
  22. package/dist/services/sdk-manager.service.js +15 -34
  23. package/dist/services/thumbnail.service.d.ts +2 -2
  24. package/dist/services/thumbnail.service.js +6 -6
  25. package/dist/services/usage.service.d.ts +2 -2
  26. package/dist/services/usage.service.js +2 -2
  27. package/dist/services/validation.service.js +2 -2
  28. package/dist/types/config.types.d.ts +2 -4
  29. package/dist/utils/pm2.utils.d.ts +1 -1
  30. package/dist/utils/thumbnail.utils.js +3 -3
  31. package/dist/utils/webdav.utils.d.ts +2 -3
  32. package/dist/utils/webdav.utils.js +6 -18
  33. package/dist/webdav/handlers/DELETE.handler.js +5 -1
  34. package/dist/webdav/handlers/GET.handler.js +6 -2
  35. package/dist/webdav/handlers/HEAD.handler.js +7 -2
  36. package/dist/webdav/handlers/MKCOL.handler.js +10 -8
  37. package/dist/webdav/handlers/MOVE.handler.js +10 -3
  38. package/dist/webdav/handlers/OPTIONS.handler.js +2 -5
  39. package/dist/webdav/handlers/PROPFIND.handler.js +20 -21
  40. package/dist/webdav/handlers/PUT.handler.js +8 -4
  41. package/dist/webdav/index.js +1 -1
  42. package/dist/webdav/webdav-server.js +1 -0
  43. package/oclif.manifest.json +1 -1
  44. package/package.json +35 -38
  45. package/scripts/restart-webdav.js +2 -1
package/.env CHANGED
@@ -1,10 +1,7 @@
1
- DRIVE_URL=https://drive.internxt.com
2
- DRIVE_API_URL=https://drive.internxt.com/api
3
- DRIVE_NEW_API_URL=https://api.internxt.com/drive
4
- PAYMENTS_API_URL=https://api.internxt.com/payments
5
- NETWORK_URL=https://api.internxt.com
1
+ DRIVE_WEB_URL=https://drive.internxt.com
2
+ DRIVE_NEW_API_URL=https://gateway.internxt.com/drive
3
+ NETWORK_URL=https://gateway.internxt.com/network
6
4
  APP_CRYPTO_SECRET=6KYQBP847D4ATSFA
7
- APP_CRYPTO_SECRET2=8Q8VMUE3BJZV87GT
8
5
  APP_MAGIC_IV=d139cb9a2cd17092e79e1861cf9d7023
9
6
  APP_MAGIC_SALT=38dce0391b49efba88dbc8c39ebf868f0267eb110bb0012ab27dc52a528d61b1d1ed9d76f400ff58e3240028442b1eab9bb84e111d9dadd997982dbde9dbd25e
10
- NODE_ENV=production
7
+ DESKTOP_HEADER=3b68706a367fd567b929396290b1de40768bb768
package/README.md CHANGED
@@ -7,17 +7,37 @@ A CLI tool to interact with your Internxt encrypted files
7
7
 
8
8
  <!-- toc -->
9
9
  * [Internxt CLI](#internxt-cli)
10
+ * [Project Maintenance](#project-maintenance)
10
11
  * [Installation](#installation)
11
12
  * [Usage](#usage)
12
13
  * [Commands](#commands)
13
14
  * [Current Limitations](#current-limitations)
14
15
  <!-- tocstop -->
15
16
 
17
+ # Project Maintenance
18
+
19
+ <!-- maintenance -->
20
+ [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
21
+ [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
22
+ [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
23
+ [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
24
+ [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
25
+ [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
26
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=internxt_cli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=internxt_cli)
27
+
28
+ We aim to achieve:
29
+
30
+ - An 'A' rating in Maintainability
31
+ - An 'A' rating in Security
32
+ - Less than 3% duplicated lines
33
+ - At least 80% test coverage
34
+ <!-- maintenancestop -->
35
+
16
36
  # Installation
17
37
 
18
38
  You can install the Internxt CLI by using NPM:
19
39
 
20
- Requires Node >= 20.12.1
40
+ Requires Node >= 22.12.0
21
41
 
22
42
  `npm i -g @internxt/cli`
23
43
 
@@ -31,7 +51,7 @@ $ npm install -g @internxt/cli
31
51
  $ internxt COMMAND
32
52
  running command...
33
53
  $ internxt (--version)
34
- @internxt/cli/1.5.3 linux-x64 node-v20.19.1
54
+ @internxt/cli/1.5.5 linux-x64 node-v22.19.0
35
55
  $ internxt --help [COMMAND]
36
56
  USAGE
37
57
  $ internxt COMMAND
@@ -43,6 +63,7 @@ USAGE
43
63
 
44
64
  <!-- commands -->
45
65
  * [`internxt add-cert`](#internxt-add-cert)
66
+ * [`internxt autocomplete [SHELL]`](#internxt-autocomplete-shell)
46
67
  * [`internxt config`](#internxt-config)
47
68
  * [`internxt create-folder`](#internxt-create-folder)
48
69
  * [`internxt delete-permanently-file`](#internxt-delete-permanently-file)
@@ -99,7 +120,38 @@ EXAMPLES
99
120
  $ internxt add-cert
100
121
  ```
101
122
 
102
- _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/add-cert.ts)_
123
+ _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/add-cert.ts)_
124
+
125
+ ## `internxt autocomplete [SHELL]`
126
+
127
+ Display autocomplete installation instructions.
128
+
129
+ ```
130
+ USAGE
131
+ $ internxt autocomplete [SHELL] [-r]
132
+
133
+ ARGUMENTS
134
+ SHELL (zsh|bash|powershell) Shell type
135
+
136
+ FLAGS
137
+ -r, --refresh-cache Refresh cache (ignores displaying instructions)
138
+
139
+ DESCRIPTION
140
+ Display autocomplete installation instructions.
141
+
142
+ EXAMPLES
143
+ $ internxt autocomplete
144
+
145
+ $ internxt autocomplete bash
146
+
147
+ $ internxt autocomplete zsh
148
+
149
+ $ internxt autocomplete powershell
150
+
151
+ $ internxt autocomplete --refresh-cache
152
+ ```
153
+
154
+ _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.34/src/commands/autocomplete/index.ts)_
103
155
 
104
156
  ## `internxt config`
105
157
 
@@ -119,7 +171,7 @@ EXAMPLES
119
171
  $ internxt config
120
172
  ```
121
173
 
122
- _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/config.ts)_
174
+ _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/config.ts)_
123
175
 
124
176
  ## `internxt create-folder`
125
177
 
@@ -148,7 +200,7 @@ EXAMPLES
148
200
  $ internxt create-folder
149
201
  ```
150
202
 
151
- _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/create-folder.ts)_
203
+ _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/create-folder.ts)_
152
204
 
153
205
  ## `internxt delete-permanently-file`
154
206
 
@@ -178,7 +230,7 @@ EXAMPLES
178
230
  $ internxt delete-permanently-file
179
231
  ```
180
232
 
181
- _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/delete-permanently-file.ts)_
233
+ _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/delete-permanently-file.ts)_
182
234
 
183
235
  ## `internxt delete-permanently-folder`
184
236
 
@@ -208,7 +260,7 @@ EXAMPLES
208
260
  $ internxt delete-permanently-folder
209
261
  ```
210
262
 
211
- _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/delete-permanently-folder.ts)_
263
+ _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/delete-permanently-folder.ts)_
212
264
 
213
265
  ## `internxt delete permanently file`
214
266
 
@@ -297,7 +349,7 @@ EXAMPLES
297
349
  $ internxt download-file
298
350
  ```
299
351
 
300
- _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/download-file.ts)_
352
+ _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/download-file.ts)_
301
353
 
302
354
  ## `internxt download file`
303
355
 
@@ -356,7 +408,7 @@ EXAMPLES
356
408
  $ internxt list
357
409
  ```
358
410
 
359
- _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/list.ts)_
411
+ _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/list.ts)_
360
412
 
361
413
  ## `internxt login`
362
414
 
@@ -385,7 +437,7 @@ EXAMPLES
385
437
  $ internxt login
386
438
  ```
387
439
 
388
- _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/login.ts)_
440
+ _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/login.ts)_
389
441
 
390
442
  ## `internxt logout`
391
443
 
@@ -405,7 +457,7 @@ EXAMPLES
405
457
  $ internxt logout
406
458
  ```
407
459
 
408
- _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/logout.ts)_
460
+ _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/logout.ts)_
409
461
 
410
462
  ## `internxt logs`
411
463
 
@@ -425,7 +477,7 @@ EXAMPLES
425
477
  $ internxt logs
426
478
  ```
427
479
 
428
- _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/logs.ts)_
480
+ _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/logs.ts)_
429
481
 
430
482
  ## `internxt move-file`
431
483
 
@@ -457,7 +509,7 @@ EXAMPLES
457
509
  $ internxt move-file
458
510
  ```
459
511
 
460
- _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/move-file.ts)_
512
+ _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/move-file.ts)_
461
513
 
462
514
  ## `internxt move-folder`
463
515
 
@@ -489,7 +541,7 @@ EXAMPLES
489
541
  $ internxt move-folder
490
542
  ```
491
543
 
492
- _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/move-folder.ts)_
544
+ _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/move-folder.ts)_
493
545
 
494
546
  ## `internxt move file`
495
547
 
@@ -580,7 +632,7 @@ EXAMPLES
580
632
  $ internxt rename-file
581
633
  ```
582
634
 
583
- _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/rename-file.ts)_
635
+ _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/rename-file.ts)_
584
636
 
585
637
  ## `internxt rename-folder`
586
638
 
@@ -611,7 +663,7 @@ EXAMPLES
611
663
  $ internxt rename-folder
612
664
  ```
613
665
 
614
- _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/rename-folder.ts)_
666
+ _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/rename-folder.ts)_
615
667
 
616
668
  ## `internxt rename file`
617
669
 
@@ -699,7 +751,7 @@ EXAMPLES
699
751
  $ internxt trash-clear
700
752
  ```
701
753
 
702
- _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-clear.ts)_
754
+ _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-clear.ts)_
703
755
 
704
756
  ## `internxt trash-file`
705
757
 
@@ -729,7 +781,7 @@ EXAMPLES
729
781
  $ internxt trash-file
730
782
  ```
731
783
 
732
- _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-file.ts)_
784
+ _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-file.ts)_
733
785
 
734
786
  ## `internxt trash-folder`
735
787
 
@@ -759,7 +811,7 @@ EXAMPLES
759
811
  $ internxt trash-folder
760
812
  ```
761
813
 
762
- _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-folder.ts)_
814
+ _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-folder.ts)_
763
815
 
764
816
  ## `internxt trash-list`
765
817
 
@@ -785,7 +837,7 @@ EXAMPLES
785
837
  $ internxt trash-list
786
838
  ```
787
839
 
788
- _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-list.ts)_
840
+ _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-list.ts)_
789
841
 
790
842
  ## `internxt trash-restore-file`
791
843
 
@@ -816,7 +868,7 @@ EXAMPLES
816
868
  $ internxt trash-restore-file
817
869
  ```
818
870
 
819
- _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-restore-file.ts)_
871
+ _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-restore-file.ts)_
820
872
 
821
873
  ## `internxt trash-restore-folder`
822
874
 
@@ -847,7 +899,7 @@ EXAMPLES
847
899
  $ internxt trash-restore-folder
848
900
  ```
849
901
 
850
- _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/trash-restore-folder.ts)_
902
+ _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/trash-restore-folder.ts)_
851
903
 
852
904
  ## `internxt trash clear`
853
905
 
@@ -1044,7 +1096,7 @@ EXAMPLES
1044
1096
  $ internxt upload-file
1045
1097
  ```
1046
1098
 
1047
- _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/upload-file.ts)_
1099
+ _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/upload-file.ts)_
1048
1100
 
1049
1101
  ## `internxt upload file`
1050
1102
 
@@ -1099,7 +1151,7 @@ EXAMPLES
1099
1151
  $ internxt webdav status
1100
1152
  ```
1101
1153
 
1102
- _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/webdav.ts)_
1154
+ _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/webdav.ts)_
1103
1155
 
1104
1156
  ## `internxt webdav-config`
1105
1157
 
@@ -1125,7 +1177,7 @@ EXAMPLES
1125
1177
  $ internxt webdav-config
1126
1178
  ```
1127
1179
 
1128
- _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/webdav-config.ts)_
1180
+ _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/webdav-config.ts)_
1129
1181
 
1130
1182
  ## `internxt whoami`
1131
1183
 
@@ -1145,7 +1197,7 @@ EXAMPLES
1145
1197
  $ internxt whoami
1146
1198
  ```
1147
1199
 
1148
- _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.5.3/src/commands/whoami.ts)_
1200
+ _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.5.5/src/commands/whoami.ts)_
1149
1201
  <!-- commandsstop -->
1150
1202
 
1151
1203
  # Current Limitations
package/bin/dev.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node_modules/.bin/ts-node
2
2
  /* eslint-disable */
3
- require('dotenv').config({ path: __dirname + '/../.env' });
3
+ require('dotenv').config({ path: __dirname + '/../.env', quiet: true });
4
4
  (async () => {
5
5
  const oclif = await import('@oclif/core');
6
6
  await oclif.execute({ development: true, dir: __dirname });
package/bin/run.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /* eslint-disable */
3
- require('dotenv').config({ path: __dirname + '/../.env' });
3
+ require('dotenv').config({ path: __dirname + '/../.env', quiet: true });
4
4
  (async () => {
5
5
  const oclif = await import('@oclif/core');
6
6
  await oclif.execute({ development: false, dir: __dirname });
@@ -48,7 +48,7 @@ class CreateFolder extends core_1.Command {
48
48
  });
49
49
  const newFolder = await createNewFolder;
50
50
  cli_utils_1.CLIUtils.done(flags['json']);
51
- const message = `Folder ${newFolder.plainName} created successfully, view it at ${config_service_1.ConfigService.instance.get('DRIVE_URL')}/folder/${newFolder.uuid}`;
51
+ const message = `Folder ${newFolder.plainName} created successfully, view it at ${config_service_1.ConfigService.instance.get('DRIVE_WEB_URL')}/folder/${newFolder.uuid}`;
52
52
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
53
53
  return { success: true, message, folder: newFolder };
54
54
  };
@@ -32,7 +32,7 @@ class DeletePermanentlyFile extends core_1.Command {
32
32
  if (!driveFile) {
33
33
  throw new Error('File not found');
34
34
  }
35
- await trash_service_1.TrashService.instance.deleteFile({ fileId: driveFile.id, folderId: driveFile.folderId });
35
+ await trash_service_1.TrashService.instance.deleteFile(driveFile.uuid);
36
36
  const message = 'File permanently deleted successfully';
37
37
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
38
38
  return { success: true, message };
@@ -32,7 +32,7 @@ class DeletePermanentlyFolder extends core_1.Command {
32
32
  if (!driveFolder) {
33
33
  throw new Error('Folder not found');
34
34
  }
35
- await trash_service_1.TrashService.instance.deleteFolder(driveFolder.id);
35
+ await trash_service_1.TrashService.instance.deleteFolder(driveFolder.uuid);
36
36
  const message = 'Folder permanently deleted successfully';
37
37
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
38
38
  return { success: true, message };
@@ -63,7 +63,7 @@ class DownloadFile extends core_1.Command {
63
63
  linewrap: true,
64
64
  }, flags['json']);
65
65
  progressBar?.start(100, 0);
66
- const [executeDownload, abortable] = await networkFacade.downloadToStream(user.bucket, user.mnemonic, driveFile.fileId, driveFile.size, stream_utils_1.StreamUtils.writeStreamToWritableStream(fileWriteStream), undefined, {
66
+ const [executeDownload, abortable] = await networkFacade.downloadToStream(driveFile.bucket, user.mnemonic, driveFile.fileId, driveFile.size, stream_utils_1.StreamUtils.writeStreamToWritableStream(fileWriteStream), undefined, {
67
67
  abortController: new AbortController(),
68
68
  progressCallback: (progress) => {
69
69
  progressBar?.update(progress * 0.99);
@@ -165,6 +165,7 @@ class DownloadFile extends core_1.Command {
165
165
  bridgePass: user.userId,
166
166
  bridgeUrl: config_service_1.ConfigService.instance.get('NETWORK_URL'),
167
167
  encryptionKey: user.mnemonic,
168
+ appDetails: sdk_manager_service_1.SdkManager.getAppDetails(),
168
169
  });
169
170
  const networkFacade = new network_facade_service_1.NetworkFacade(networkModule, environment, download_service_1.DownloadService.instance, crypto_service_1.CryptoService.instance);
170
171
  cli_utils_1.CLIUtils.done(jsonFlag);
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const config_service_1 = require("../services/config.service");
5
5
  const cli_utils_1 = require("../utils/cli.utils");
6
+ const auth_service_1 = require("../services/auth.service");
6
7
  class Logout extends core_1.Command {
7
8
  static args = {};
8
9
  static description = 'Logs out the current internxt user that is logged into the Internxt CLI.';
@@ -13,6 +14,7 @@ class Logout extends core_1.Command {
13
14
  run = async () => {
14
15
  const user = await config_service_1.ConfigService.instance.readUser();
15
16
  if (user) {
17
+ await auth_service_1.AuthService.instance.logout();
16
18
  await config_service_1.ConfigService.instance.clearUser();
17
19
  const message = 'User logged out successfully.';
18
20
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
@@ -71,6 +71,7 @@ class UploadFile extends core_1.Command {
71
71
  bridgePass: user.userId,
72
72
  bridgeUrl: config_service_1.ConfigService.instance.get('NETWORK_URL'),
73
73
  encryptionKey: user.mnemonic,
74
+ appDetails: sdk_manager_service_1.SdkManager.getAppDetails(),
74
75
  });
75
76
  const networkFacade = new network_facade_service_1.NetworkFacade(networkModule, environment, download_service_1.DownloadService.instance, crypto_service_1.CryptoService.instance);
76
77
  cli_utils_1.CLIUtils.done(flags['json']);
@@ -117,7 +118,7 @@ class UploadFile extends core_1.Command {
117
118
  if (isThumbnailable && bufferStream) {
118
119
  const thumbnailBuffer = bufferStream.getBuffer();
119
120
  if (thumbnailBuffer) {
120
- await thumbnail_service_1.ThumbnailService.instance.uploadThumbnail(thumbnailBuffer, fileType, user.bucket, createdDriveFile.id, networkFacade);
121
+ await thumbnail_service_1.ThumbnailService.instance.uploadThumbnail(thumbnailBuffer, fileType, user.bucket, createdDriveFile.uuid, networkFacade);
121
122
  }
122
123
  }
123
124
  }
@@ -128,7 +129,7 @@ class UploadFile extends core_1.Command {
128
129
  progressBar?.stop();
129
130
  const uploadTime = timer.stop();
130
131
  this.log('\n');
131
- const message = `File uploaded in ${uploadTime}ms, view it at ${config_service_1.ConfigService.instance.get('DRIVE_URL')}/file/${createdDriveFile.uuid}`;
132
+ const message = `File uploaded in ${uploadTime}ms, view it at ${config_service_1.ConfigService.instance.get('DRIVE_WEB_URL')}/file/${createdDriveFile.uuid}`;
132
133
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
133
134
  return { success: true, message, file: createdDriveFile };
134
135
  };
@@ -5,4 +5,5 @@ export declare class AuthService {
5
5
  is2FANeeded: (email: string) => Promise<boolean>;
6
6
  getAuthDetails: () => Promise<LoginCredentials>;
7
7
  refreshUserTokens: (oldCreds: LoginCredentials) => Promise<LoginCredentials>;
8
+ logout: () => Promise<void>;
8
9
  }
@@ -73,7 +73,7 @@ class AuthService {
73
73
  token: oldCreds.token,
74
74
  newToken: oldCreds.newToken,
75
75
  });
76
- const usersClient = sdk_manager_service_1.SdkManager.instance.getUsers(true);
76
+ const usersClient = sdk_manager_service_1.SdkManager.instance.getUsers();
77
77
  const newCreds = await usersClient.getUserData({ userUuid: oldCreds.user.uuid });
78
78
  const loginCreds = {
79
79
  user: {
@@ -90,7 +90,20 @@ class AuthService {
90
90
  token: newCreds.oldToken,
91
91
  newToken: newCreds.newToken,
92
92
  });
93
+ await config_service_1.ConfigService.instance.saveUser(loginCreds);
93
94
  return loginCreds;
94
95
  };
96
+ logout = async () => {
97
+ try {
98
+ const user = await config_service_1.ConfigService.instance.readUser();
99
+ if (!user || !user.newToken) {
100
+ return;
101
+ }
102
+ const authClient = sdk_manager_service_1.SdkManager.instance.getAuth();
103
+ return authClient.logout(user.newToken);
104
+ }
105
+ catch {
106
+ }
107
+ };
95
108
  }
96
109
  exports.AuthService = AuthService;
@@ -14,5 +14,5 @@ export declare class CryptoService {
14
14
  encryptTextWithKey: (textToEncrypt: string, secret: string) => string;
15
15
  decryptTextWithKey: (encryptedText: string, secret: string) => string;
16
16
  decryptStream: (inputSlices: ReadableStream<Uint8Array>[], key: Buffer, iv: Buffer, startOffsetByte?: number) => ReadableStream<any>;
17
- private getKeyAndIvFrom;
17
+ private readonly getKeyAndIvFrom;
18
18
  }
@@ -8,7 +8,7 @@ const stream_utils_1 = require("../utils/stream.utils");
8
8
  class CryptoService {
9
9
  static instance = new CryptoService();
10
10
  static cryptoProvider = {
11
- async encryptPasswordHash(password, encryptedSalt) {
11
+ encryptPasswordHash(password, encryptedSalt) {
12
12
  const salt = CryptoService.instance.decryptText(encryptedSalt);
13
13
  const hashObj = CryptoService.instance.passToHash({ password, salt });
14
14
  return CryptoService.instance.encryptText(hashObj.hash);
@@ -32,7 +32,7 @@ class CryptoService {
32
32
  },
33
33
  };
34
34
  passToHash = (passObject) => {
35
- const salt = passObject.salt ? passObject.salt : (0, node_crypto_1.randomBytes)(128 / 8).toString('hex');
35
+ const salt = passObject.salt ?? (0, node_crypto_1.randomBytes)(128 / 8).toString('hex');
36
36
  const hash = (0, node_crypto_1.pbkdf2Sync)(passObject.password, Buffer.from(salt, 'hex'), 10000, 256 / 8, 'sha1').toString('hex');
37
37
  const hashedObjetc = {
38
38
  salt,
@@ -10,5 +10,5 @@ export declare class DriveFileService {
10
10
  type?: string | null;
11
11
  }) => Promise<void>;
12
12
  getFileMetadataByPath: (path: string) => Promise<DriveFileItem>;
13
- createThumbnail: (payload: StorageTypes.ThumbnailEntry) => Promise<StorageTypes.Thumbnail>;
13
+ createThumbnail: (payload: StorageTypes.CreateThumbnailEntryPayload) => Promise<StorageTypes.Thumbnail>;
14
14
  }
@@ -6,7 +6,7 @@ const drive_utils_1 = require("../../utils/drive.utils");
6
6
  class DriveFileService {
7
7
  static instance = new DriveFileService();
8
8
  createFile = async (payload) => {
9
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
9
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
10
10
  const driveFile = await storageClient.createFileEntryByUuid(payload);
11
11
  return {
12
12
  name: payload.plain_name,
@@ -25,27 +25,27 @@ class DriveFileService {
25
25
  };
26
26
  };
27
27
  getFileMetadata = async (uuid) => {
28
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
28
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
29
29
  const [getFileMetadata] = storageClient.getFile(uuid);
30
30
  const fileMetadata = await getFileMetadata;
31
31
  return drive_utils_1.DriveUtils.driveFileMetaToItem(fileMetadata);
32
32
  };
33
33
  moveFile = (payload) => {
34
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
34
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
35
35
  return storageClient.moveFileByUuid(payload);
36
36
  };
37
37
  renameFile = (fileUuid, payload) => {
38
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
38
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
39
39
  return storageClient.updateFileMetaByUUID(fileUuid, payload);
40
40
  };
41
41
  getFileMetadataByPath = async (path) => {
42
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
42
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
43
43
  const fileMetadata = await storageClient.getFileByPath(encodeURIComponent(path));
44
44
  return drive_utils_1.DriveUtils.driveFileMetaToItem(fileMetadata);
45
45
  };
46
46
  createThumbnail = (payload) => {
47
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(false);
48
- return storageClient.createThumbnailEntry(payload);
47
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
48
+ return storageClient.createThumbnailEntryWithUUID(payload);
49
49
  };
50
50
  }
51
51
  exports.DriveFileService = DriveFileService;
@@ -6,17 +6,17 @@ const drive_utils_1 = require("../../utils/drive.utils");
6
6
  class DriveFolderService {
7
7
  static instance = new DriveFolderService();
8
8
  getFolderMetaByUuid = async (uuid) => {
9
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
9
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
10
10
  const folderMeta = await storageClient.getFolderMeta(uuid);
11
11
  return drive_utils_1.DriveUtils.driveFolderMetaToItem(folderMeta);
12
12
  };
13
13
  getFolderMetaById = async (id) => {
14
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
14
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
15
15
  const folderMeta = await storageClient.getFolderMetaById(id);
16
16
  return drive_utils_1.DriveUtils.driveFolderMetaToItem(folderMeta);
17
17
  };
18
18
  getFolderContent = async (folderUuid) => {
19
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
19
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
20
20
  const folders = await this.getAllSubfolders(storageClient, folderUuid, 0);
21
21
  const files = await this.getAllSubfiles(storageClient, folderUuid, 0);
22
22
  return { folders, files };
@@ -42,19 +42,19 @@ class DriveFolderService {
42
42
  }
43
43
  };
44
44
  moveFolder = (payload) => {
45
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
45
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
46
46
  return storageClient.moveFolderByUuid(payload);
47
47
  };
48
48
  createFolder(payload) {
49
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
49
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
50
50
  return storageClient.createFolderByUuid(payload);
51
51
  }
52
52
  renameFolder = (payload) => {
53
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
53
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
54
54
  return storageClient.updateFolderNameWithUUID(payload);
55
55
  };
56
56
  getFolderMetadataByPath = async (path) => {
57
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
57
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
58
58
  const folderMeta = await storageClient.getFolderByPath(encodeURIComponent(path));
59
59
  return drive_utils_1.DriveUtils.driveFolderMetaToItem({
60
60
  ...folderMeta,
@@ -2,13 +2,15 @@ import { StorageTypes } from '@internxt/sdk/dist/drive';
2
2
  export declare class TrashService {
3
3
  static readonly instance: TrashService;
4
4
  trashItems: (payload: StorageTypes.AddItemsToTrashPayload) => Promise<void>;
5
- deleteFile: (payload: StorageTypes.DeleteFilePayload) => Promise<unknown>;
6
- deleteFolder: (folderId: number) => Promise<unknown>;
5
+ deleteFile: (fileId: string) => Promise<{
6
+ deleted: boolean;
7
+ }>;
8
+ deleteFolder: (folderId: string) => Promise<void>;
7
9
  clearTrash: () => Promise<void>;
8
10
  getTrashFolderContent: () => Promise<{
9
11
  folders: StorageTypes.FetchPaginatedFolder[];
10
12
  files: StorageTypes.FetchPaginatedFile[];
11
13
  }>;
12
- private getAllTrashSubfolders;
13
- private getAllTrashSubfiles;
14
+ private readonly getAllTrashSubfolders;
15
+ private readonly getAllTrashSubfiles;
14
16
  }
@@ -5,16 +5,16 @@ const sdk_manager_service_1 = require("../sdk-manager.service");
5
5
  class TrashService {
6
6
  static instance = new TrashService();
7
7
  trashItems = (payload) => {
8
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(true);
8
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
9
9
  return storageClient.addItemsToTrash(payload);
10
10
  };
11
- deleteFile = (payload) => {
12
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(false);
13
- return storageClient.deleteFile(payload);
11
+ deleteFile = (fileId) => {
12
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
13
+ return storageClient.deleteFileByUuid(fileId);
14
14
  };
15
15
  deleteFolder = (folderId) => {
16
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(false);
17
- return storageClient.deleteFolder(folderId);
16
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
17
+ return storageClient.deleteFolderByUuid(folderId);
18
18
  };
19
19
  clearTrash = () => {
20
20
  const storageClient = sdk_manager_service_1.SdkManager.instance.getTrash();
@@ -107,7 +107,7 @@ class KeysService {
107
107
  generateNewKeysWithEncrypted = async (password) => {
108
108
  const { privateKey, publicKey, revocationCertificate } = await openpgp.generateKey({
109
109
  userIDs: [{ email: 'inxt@inxt.com' }],
110
- curve: 'ed25519',
110
+ curve: 'ed25519Legacy',
111
111
  });
112
112
  return {
113
113
  privateKeyArmored: privateKey,