@internxt/cli 1.5.1 → 1.5.2

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 (53) hide show
  1. package/.env +0 -3
  2. package/README.md +30 -29
  3. package/dist/commands/login.js +0 -3
  4. package/dist/commands/logout.js +0 -2
  5. package/dist/commands/webdav-config.d.ts +1 -0
  6. package/dist/commands/webdav-config.js +10 -0
  7. package/dist/commands/webdav.js +0 -3
  8. package/dist/commands/whoami.js +0 -2
  9. package/dist/services/auth.service.js +10 -2
  10. package/dist/services/config.service.d.ts +1 -0
  11. package/dist/services/config.service.js +3 -0
  12. package/dist/types/command.types.d.ts +1 -0
  13. package/dist/types/config.types.d.ts +0 -3
  14. package/dist/utils/webdav.utils.d.ts +2 -8
  15. package/dist/utils/webdav.utils.js +16 -33
  16. package/dist/utils/xml.utils.d.ts +1 -1
  17. package/dist/webdav/handlers/DELETE.handler.d.ts +0 -2
  18. package/dist/webdav/handlers/DELETE.handler.js +1 -8
  19. package/dist/webdav/handlers/GET.handler.d.ts +0 -2
  20. package/dist/webdav/handlers/GET.handler.js +1 -2
  21. package/dist/webdav/handlers/HEAD.handler.d.ts +0 -2
  22. package/dist/webdav/handlers/HEAD.handler.js +24 -19
  23. package/dist/webdav/handlers/MKCOL.handler.d.ts +0 -2
  24. package/dist/webdav/handlers/MKCOL.handler.js +14 -15
  25. package/dist/webdav/handlers/MOVE.handler.d.ts +0 -2
  26. package/dist/webdav/handlers/MOVE.handler.js +1 -7
  27. package/dist/webdav/handlers/PROPFIND.handler.d.ts +0 -2
  28. package/dist/webdav/handlers/PROPFIND.handler.js +23 -38
  29. package/dist/webdav/handlers/PUT.handler.d.ts +0 -2
  30. package/dist/webdav/handlers/PUT.handler.js +3 -7
  31. package/dist/webdav/index.js +1 -5
  32. package/dist/webdav/middewares/mkcol.middleware.d.ts +2 -0
  33. package/dist/webdav/middewares/mkcol.middleware.js +23 -0
  34. package/dist/webdav/webdav-server.d.ts +1 -3
  35. package/dist/webdav/webdav-server.js +16 -22
  36. package/oclif.manifest.json +10 -1
  37. package/package.json +24 -30
  38. package/dist/database/migrations/20240402164914-create-files.d.ts +0 -1
  39. package/dist/database/migrations/20240402164914-create-files.js +0 -55
  40. package/dist/database/migrations/20240402165418-create-folders.d.ts +0 -1
  41. package/dist/database/migrations/20240402165418-create-folders.js +0 -37
  42. package/dist/database/migrations/20241018114828-add-parent-column.d.ts +0 -1
  43. package/dist/database/migrations/20241018114828-add-parent-column.js +0 -24
  44. package/dist/services/database/drive-database-manager.service.d.ts +0 -23
  45. package/dist/services/database/drive-database-manager.service.js +0 -93
  46. package/dist/services/database/drive-file/drive-file.model.d.ts +0 -18
  47. package/dist/services/database/drive-file/drive-file.model.js +0 -80
  48. package/dist/services/database/drive-file/drive-file.repository.d.ts +0 -11
  49. package/dist/services/database/drive-file/drive-file.repository.js +0 -40
  50. package/dist/services/database/drive-folder/drive-folder.model.d.ts +0 -14
  51. package/dist/services/database/drive-folder/drive-folder.model.js +0 -65
  52. package/dist/services/database/drive-folder/drive-folder.repository.d.ts +0 -11
  53. package/dist/services/database/drive-folder/drive-folder.repository.js +0 -40
package/.env CHANGED
@@ -2,12 +2,9 @@ DRIVE_URL=https://drive.internxt.com
2
2
  DRIVE_API_URL=https://drive.internxt.com/api
3
3
  DRIVE_NEW_API_URL=https://api.internxt.com/drive
4
4
  PAYMENTS_API_URL=https://api.internxt.com/payments
5
- PHOTOS_API_URL=https://photos.internxt.com/api
6
5
  NETWORK_URL=https://api.internxt.com
7
6
  APP_CRYPTO_SECRET=6KYQBP847D4ATSFA
8
7
  APP_CRYPTO_SECRET2=8Q8VMUE3BJZV87GT
9
8
  APP_MAGIC_IV=d139cb9a2cd17092e79e1861cf9d7023
10
9
  APP_MAGIC_SALT=38dce0391b49efba88dbc8c39ebf868f0267eb110bb0012ab27dc52a528d61b1d1ed9d76f400ff58e3240028442b1eab9bb84e111d9dadd997982dbde9dbd25e
11
- RUDDERSTACK_WRITE_KEY=
12
- RUDDERSTACK_DATAPLANE_URL=
13
10
  NODE_ENV=production
package/README.md CHANGED
@@ -31,7 +31,7 @@ $ npm install -g @internxt/cli
31
31
  $ internxt COMMAND
32
32
  running command...
33
33
  $ internxt (--version)
34
- @internxt/cli/1.5.1 linux-x64 node-v20.18.3
34
+ @internxt/cli/1.5.2 linux-x64 node-v20.19.1
35
35
  $ internxt --help [COMMAND]
36
36
  USAGE
37
37
  $ internxt COMMAND
@@ -99,7 +99,7 @@ EXAMPLES
99
99
  $ internxt add-cert
100
100
  ```
101
101
 
102
- _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/add-cert.ts)_
102
+ _See code: [src/commands/add-cert.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/add-cert.ts)_
103
103
 
104
104
  ## `internxt config`
105
105
 
@@ -119,7 +119,7 @@ EXAMPLES
119
119
  $ internxt config
120
120
  ```
121
121
 
122
- _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/config.ts)_
122
+ _See code: [src/commands/config.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/config.ts)_
123
123
 
124
124
  ## `internxt create-folder`
125
125
 
@@ -148,7 +148,7 @@ EXAMPLES
148
148
  $ internxt create-folder
149
149
  ```
150
150
 
151
- _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/create-folder.ts)_
151
+ _See code: [src/commands/create-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/create-folder.ts)_
152
152
 
153
153
  ## `internxt delete-permanently-file`
154
154
 
@@ -178,7 +178,7 @@ EXAMPLES
178
178
  $ internxt delete-permanently-file
179
179
  ```
180
180
 
181
- _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/delete-permanently-file.ts)_
181
+ _See code: [src/commands/delete-permanently-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/delete-permanently-file.ts)_
182
182
 
183
183
  ## `internxt delete-permanently-folder`
184
184
 
@@ -208,7 +208,7 @@ EXAMPLES
208
208
  $ internxt delete-permanently-folder
209
209
  ```
210
210
 
211
- _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/delete-permanently-folder.ts)_
211
+ _See code: [src/commands/delete-permanently-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/delete-permanently-folder.ts)_
212
212
 
213
213
  ## `internxt delete permanently file`
214
214
 
@@ -297,7 +297,7 @@ EXAMPLES
297
297
  $ internxt download-file
298
298
  ```
299
299
 
300
- _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/download-file.ts)_
300
+ _See code: [src/commands/download-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/download-file.ts)_
301
301
 
302
302
  ## `internxt download file`
303
303
 
@@ -356,7 +356,7 @@ EXAMPLES
356
356
  $ internxt list
357
357
  ```
358
358
 
359
- _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/list.ts)_
359
+ _See code: [src/commands/list.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/list.ts)_
360
360
 
361
361
  ## `internxt login`
362
362
 
@@ -385,7 +385,7 @@ EXAMPLES
385
385
  $ internxt login
386
386
  ```
387
387
 
388
- _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/login.ts)_
388
+ _See code: [src/commands/login.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/login.ts)_
389
389
 
390
390
  ## `internxt logout`
391
391
 
@@ -405,7 +405,7 @@ EXAMPLES
405
405
  $ internxt logout
406
406
  ```
407
407
 
408
- _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/logout.ts)_
408
+ _See code: [src/commands/logout.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/logout.ts)_
409
409
 
410
410
  ## `internxt logs`
411
411
 
@@ -425,7 +425,7 @@ EXAMPLES
425
425
  $ internxt logs
426
426
  ```
427
427
 
428
- _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/logs.ts)_
428
+ _See code: [src/commands/logs.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/logs.ts)_
429
429
 
430
430
  ## `internxt move-file`
431
431
 
@@ -457,7 +457,7 @@ EXAMPLES
457
457
  $ internxt move-file
458
458
  ```
459
459
 
460
- _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/move-file.ts)_
460
+ _See code: [src/commands/move-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/move-file.ts)_
461
461
 
462
462
  ## `internxt move-folder`
463
463
 
@@ -489,7 +489,7 @@ EXAMPLES
489
489
  $ internxt move-folder
490
490
  ```
491
491
 
492
- _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/move-folder.ts)_
492
+ _See code: [src/commands/move-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/move-folder.ts)_
493
493
 
494
494
  ## `internxt move file`
495
495
 
@@ -580,7 +580,7 @@ EXAMPLES
580
580
  $ internxt rename-file
581
581
  ```
582
582
 
583
- _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/rename-file.ts)_
583
+ _See code: [src/commands/rename-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/rename-file.ts)_
584
584
 
585
585
  ## `internxt rename-folder`
586
586
 
@@ -611,7 +611,7 @@ EXAMPLES
611
611
  $ internxt rename-folder
612
612
  ```
613
613
 
614
- _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/rename-folder.ts)_
614
+ _See code: [src/commands/rename-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/rename-folder.ts)_
615
615
 
616
616
  ## `internxt rename file`
617
617
 
@@ -699,7 +699,7 @@ EXAMPLES
699
699
  $ internxt trash-clear
700
700
  ```
701
701
 
702
- _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-clear.ts)_
702
+ _See code: [src/commands/trash-clear.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-clear.ts)_
703
703
 
704
704
  ## `internxt trash-file`
705
705
 
@@ -729,7 +729,7 @@ EXAMPLES
729
729
  $ internxt trash-file
730
730
  ```
731
731
 
732
- _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-file.ts)_
732
+ _See code: [src/commands/trash-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-file.ts)_
733
733
 
734
734
  ## `internxt trash-folder`
735
735
 
@@ -759,7 +759,7 @@ EXAMPLES
759
759
  $ internxt trash-folder
760
760
  ```
761
761
 
762
- _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-folder.ts)_
762
+ _See code: [src/commands/trash-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-folder.ts)_
763
763
 
764
764
  ## `internxt trash-list`
765
765
 
@@ -785,7 +785,7 @@ EXAMPLES
785
785
  $ internxt trash-list
786
786
  ```
787
787
 
788
- _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-list.ts)_
788
+ _See code: [src/commands/trash-list.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-list.ts)_
789
789
 
790
790
  ## `internxt trash-restore-file`
791
791
 
@@ -816,7 +816,7 @@ EXAMPLES
816
816
  $ internxt trash-restore-file
817
817
  ```
818
818
 
819
- _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-restore-file.ts)_
819
+ _See code: [src/commands/trash-restore-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-restore-file.ts)_
820
820
 
821
821
  ## `internxt trash-restore-folder`
822
822
 
@@ -847,7 +847,7 @@ EXAMPLES
847
847
  $ internxt trash-restore-folder
848
848
  ```
849
849
 
850
- _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/trash-restore-folder.ts)_
850
+ _See code: [src/commands/trash-restore-folder.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/trash-restore-folder.ts)_
851
851
 
852
852
  ## `internxt trash clear`
853
853
 
@@ -1044,7 +1044,7 @@ EXAMPLES
1044
1044
  $ internxt upload-file
1045
1045
  ```
1046
1046
 
1047
- _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/upload-file.ts)_
1047
+ _See code: [src/commands/upload-file.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/upload-file.ts)_
1048
1048
 
1049
1049
  ## `internxt upload file`
1050
1050
 
@@ -1099,7 +1099,7 @@ EXAMPLES
1099
1099
  $ internxt webdav status
1100
1100
  ```
1101
1101
 
1102
- _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/webdav.ts)_
1102
+ _See code: [src/commands/webdav.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/webdav.ts)_
1103
1103
 
1104
1104
  ## `internxt webdav-config`
1105
1105
 
@@ -1107,12 +1107,13 @@ Edit the configuration of the Internxt CLI WebDav server as the port or the prot
1107
1107
 
1108
1108
  ```
1109
1109
  USAGE
1110
- $ internxt webdav-config [--json] [-p <value>] [-s | -h]
1110
+ $ internxt webdav-config [--json] [-p <value>] [-s | -h] [-t <value>]
1111
1111
 
1112
1112
  FLAGS
1113
- -h, --http Configures the WebDAV server to use insecure plain HTTP.
1114
- -p, --port=<value> The new port for the WebDAV server.
1115
- -s, --https Configures the WebDAV server to use HTTPS with self-signed certificates.
1113
+ -h, --http Configures the WebDAV server to use insecure plain HTTP.
1114
+ -p, --port=<value> The new port for the WebDAV server.
1115
+ -s, --https Configures the WebDAV server to use HTTPS with self-signed certificates.
1116
+ -t, --timeout=<value> Configures the WebDAV server to use this timeout in minutes.
1116
1117
 
1117
1118
  GLOBAL FLAGS
1118
1119
  --json Format output as json.
@@ -1124,7 +1125,7 @@ EXAMPLES
1124
1125
  $ internxt webdav-config
1125
1126
  ```
1126
1127
 
1127
- _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/webdav-config.ts)_
1128
+ _See code: [src/commands/webdav-config.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/webdav-config.ts)_
1128
1129
 
1129
1130
  ## `internxt whoami`
1130
1131
 
@@ -1144,7 +1145,7 @@ EXAMPLES
1144
1145
  $ internxt whoami
1145
1146
  ```
1146
1147
 
1147
- _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.5.1/src/commands/whoami.ts)_
1148
+ _See code: [src/commands/whoami.ts](https://github.com/internxt/cli/blob/v1.5.2/src/commands/whoami.ts)_
1148
1149
  <!-- commandsstop -->
1149
1150
 
1150
1151
  # Current Limitations
@@ -8,7 +8,6 @@ const validation_service_1 = require("../services/validation.service");
8
8
  const cli_utils_1 = require("../utils/cli.utils");
9
9
  const errors_utils_1 = require("../utils/errors.utils");
10
10
  const sdk_manager_service_1 = require("../services/sdk-manager.service");
11
- const drive_database_manager_service_1 = require("../services/database/drive-database-manager.service");
12
11
  class Login extends core_1.Command {
13
12
  static args = {};
14
13
  static description = 'Logs into an Internxt account. If the account is two-factor protected, then an extra code will be required.';
@@ -56,8 +55,6 @@ class Login extends core_1.Command {
56
55
  newToken: loginCredentials.newToken,
57
56
  });
58
57
  await config_service_1.ConfigService.instance.saveUser(loginCredentials);
59
- await drive_database_manager_service_1.DriveDatabaseManager.init();
60
- await drive_database_manager_service_1.DriveDatabaseManager.clean();
61
58
  const message = `Succesfully logged in to: ${loginCredentials.user.email}`;
62
59
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
63
60
  return {
@@ -4,7 +4,6 @@ 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
6
  const errors_utils_1 = require("../utils/errors.utils");
7
- const drive_database_manager_service_1 = require("../services/database/drive-database-manager.service");
8
7
  class Logout extends core_1.Command {
9
8
  static args = {};
10
9
  static description = 'Logs out the current internxt user that is logged into the Internxt CLI.';
@@ -16,7 +15,6 @@ class Logout extends core_1.Command {
16
15
  const user = await config_service_1.ConfigService.instance.readUser();
17
16
  if (user) {
18
17
  await config_service_1.ConfigService.instance.clearUser();
19
- await drive_database_manager_service_1.DriveDatabaseManager.clean();
20
18
  const message = 'User logged out successfully.';
21
19
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
22
20
  return { success: true, message };
@@ -8,6 +8,7 @@ export default class WebDAVConfig extends Command {
8
8
  port: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
9
  https: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
10
  http: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ timeout: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
12
  };
12
13
  static readonly enableJsonFlag = true;
13
14
  run: () => Promise<{
@@ -29,6 +29,12 @@ class WebDAVConfig extends core_1.Command {
29
29
  required: false,
30
30
  exclusive: ['https'],
31
31
  }),
32
+ timeout: core_1.Flags.integer({
33
+ char: 't',
34
+ description: 'Configures the WebDAV server to use this timeout in minutes.',
35
+ required: false,
36
+ min: 0,
37
+ }),
32
38
  };
33
39
  static enableJsonFlag = true;
34
40
  run = async () => {
@@ -51,6 +57,10 @@ class WebDAVConfig extends core_1.Command {
51
57
  if (https) {
52
58
  webdavConfig['protocol'] = 'https';
53
59
  }
60
+ const timeout = flags['timeout'];
61
+ if (timeout !== undefined) {
62
+ webdavConfig['timeoutMinutes'] = timeout;
63
+ }
54
64
  await config_service_1.ConfigService.instance.saveWebdavConfig(webdavConfig);
55
65
  const message = `On the next start, the WebDAV server will use the next config: ${JSON.stringify(webdavConfig)}`;
56
66
  cli_utils_1.CLIUtils.success(this.log.bind(this), message);
@@ -4,7 +4,6 @@ const core_1 = require("@oclif/core");
4
4
  const pm2_utils_1 = require("../utils/pm2.utils");
5
5
  const cli_utils_1 = require("../utils/cli.utils");
6
6
  const config_service_1 = require("../services/config.service");
7
- const drive_database_manager_service_1 = require("../services/database/drive-database-manager.service");
8
7
  const errors_utils_1 = require("../utils/errors.utils");
9
8
  const auth_service_1 = require("../services/auth.service");
10
9
  class Webdav extends core_1.Command {
@@ -70,7 +69,6 @@ class Webdav extends core_1.Command {
70
69
  };
71
70
  enableWebDav = async () => {
72
71
  cli_utils_1.CLIUtils.doing('Starting Internxt WebDav server...');
73
- await drive_database_manager_service_1.DriveDatabaseManager.clean();
74
72
  await pm2_utils_1.PM2Utils.killWebDavServer();
75
73
  await pm2_utils_1.PM2Utils.startWebDavServer();
76
74
  cli_utils_1.CLIUtils.done();
@@ -99,7 +97,6 @@ class Webdav extends core_1.Command {
99
97
  };
100
98
  restartWebDav = async () => {
101
99
  cli_utils_1.CLIUtils.doing('Restarting Internxt WebDav server...');
102
- await drive_database_manager_service_1.DriveDatabaseManager.clean();
103
100
  const { status } = await pm2_utils_1.PM2Utils.webdavServerStatus();
104
101
  if (status === 'online') {
105
102
  await pm2_utils_1.PM2Utils.killWebDavServer();
@@ -5,7 +5,6 @@ const cli_utils_1 = require("../utils/cli.utils");
5
5
  const errors_utils_1 = require("../utils/errors.utils");
6
6
  const config_service_1 = require("../services/config.service");
7
7
  const validation_service_1 = require("../services/validation.service");
8
- const drive_database_manager_service_1 = require("../services/database/drive-database-manager.service");
9
8
  class Whoami extends core_1.Command {
10
9
  static args = {};
11
10
  static description = 'Display the current user logged into the Internxt CLI.';
@@ -25,7 +24,6 @@ class Whoami extends core_1.Command {
25
24
  if (!validCreds) {
26
25
  const message = 'Your session has expired. You have been logged out. Please log in again.';
27
26
  await config_service_1.ConfigService.instance.clearUser();
28
- await drive_database_manager_service_1.DriveDatabaseManager.clean();
29
27
  cli_utils_1.CLIUtils.error(this.log.bind(this), message);
30
28
  return { success: false, message };
31
29
  }
@@ -49,13 +49,13 @@ class AuthService {
49
49
  };
50
50
  getAuthDetails = async () => {
51
51
  let loginCreds = await config_service_1.ConfigService.instance.readUser();
52
- if (!(loginCreds?.newToken && loginCreds?.token && loginCreds?.user?.mnemonic)) {
52
+ if (!loginCreds?.newToken || !loginCreds?.token || !loginCreds?.user?.mnemonic) {
53
53
  throw new command_types_1.MissingCredentialsError();
54
54
  }
55
55
  const oldTokenDetails = validation_service_1.ValidationService.instance.validateTokenAndCheckExpiration(loginCreds.token);
56
56
  const newTokenDetails = validation_service_1.ValidationService.instance.validateTokenAndCheckExpiration(loginCreds.newToken);
57
57
  const isValidMnemonic = validation_service_1.ValidationService.instance.validateMnemonic(loginCreds.user.mnemonic);
58
- if (!(oldTokenDetails.isValid && newTokenDetails.isValid && isValidMnemonic)) {
58
+ if (!oldTokenDetails.isValid || !newTokenDetails.isValid || !isValidMnemonic) {
59
59
  throw new command_types_1.InvalidCredentialsError();
60
60
  }
61
61
  if (oldTokenDetails.expiration.expired || newTokenDetails.expiration.expired) {
@@ -69,6 +69,10 @@ class AuthService {
69
69
  return loginCreds;
70
70
  };
71
71
  refreshUserTokens = async (oldCreds) => {
72
+ sdk_manager_service_1.SdkManager.init({
73
+ token: oldCreds.token,
74
+ newToken: oldCreds.newToken,
75
+ });
72
76
  const usersClient = sdk_manager_service_1.SdkManager.instance.getUsers(true);
73
77
  const newCreds = await usersClient.getUserData({ userUuid: oldCreds.user.uuid });
74
78
  const loginCreds = {
@@ -82,6 +86,10 @@ class AuthService {
82
86
  lastLoggedInAt: oldCreds.lastLoggedInAt,
83
87
  lastTokenRefreshAt: new Date().toISOString(),
84
88
  };
89
+ sdk_manager_service_1.SdkManager.init({
90
+ token: newCreds.oldToken,
91
+ newToken: newCreds.newToken,
92
+ });
85
93
  return loginCreds;
86
94
  };
87
95
  }
@@ -11,6 +11,7 @@ export declare class ConfigService {
11
11
  static readonly WEBDAV_LOCAL_URL = "webdav.local.internxt.com";
12
12
  static readonly WEBDAV_DEFAULT_PORT = "3005";
13
13
  static readonly WEBDAV_DEFAULT_PROTOCOL = "https";
14
+ static readonly WEBDAV_DEFAULT_TIMEOUT = 0;
14
15
  static readonly instance: ConfigService;
15
16
  get: (key: keyof ConfigKeys) => string;
16
17
  saveUser: (loginCredentials: LoginCredentials) => Promise<void>;
@@ -19,6 +19,7 @@ class ConfigService {
19
19
  static WEBDAV_LOCAL_URL = 'webdav.local.internxt.com';
20
20
  static WEBDAV_DEFAULT_PORT = '3005';
21
21
  static WEBDAV_DEFAULT_PROTOCOL = 'https';
22
+ static WEBDAV_DEFAULT_TIMEOUT = 0;
22
23
  static instance = new ConfigService();
23
24
  get = (key) => {
24
25
  const value = process.env[key];
@@ -66,12 +67,14 @@ class ConfigService {
66
67
  return {
67
68
  port: configs?.port ?? ConfigService.WEBDAV_DEFAULT_PORT,
68
69
  protocol: configs?.protocol ?? ConfigService.WEBDAV_DEFAULT_PROTOCOL,
70
+ timeoutMinutes: configs?.timeoutMinutes ?? ConfigService.WEBDAV_DEFAULT_TIMEOUT,
69
71
  };
70
72
  }
71
73
  catch {
72
74
  return {
73
75
  port: ConfigService.WEBDAV_DEFAULT_PORT,
74
76
  protocol: ConfigService.WEBDAV_DEFAULT_PROTOCOL,
77
+ timeoutMinutes: ConfigService.WEBDAV_DEFAULT_TIMEOUT,
75
78
  };
76
79
  }
77
80
  };
@@ -9,6 +9,7 @@ export interface LoginCredentials {
9
9
  export interface WebdavConfig {
10
10
  port: string;
11
11
  protocol: 'http' | 'https';
12
+ timeoutMinutes: number;
12
13
  }
13
14
  export declare class NotValidEmailError extends Error {
14
15
  constructor();
@@ -3,12 +3,9 @@ export interface ConfigKeys {
3
3
  readonly DRIVE_API_URL: string;
4
4
  readonly DRIVE_NEW_API_URL: string;
5
5
  readonly PAYMENTS_API_URL: string;
6
- readonly PHOTOS_API_URL: string;
7
6
  readonly APP_CRYPTO_SECRET: string;
8
7
  readonly APP_CRYPTO_SECRET2: string;
9
8
  readonly APP_MAGIC_IV: string;
10
9
  readonly APP_MAGIC_SALT: string;
11
10
  readonly NETWORK_URL: string;
12
- readonly RUDDERSTACK_WRITE_KEY: string;
13
- readonly RUDDERSTACK_DATAPLANE_URL: string;
14
11
  }
@@ -1,21 +1,15 @@
1
1
  import { Request } from 'express';
2
2
  import { WebDavRequestedResource } from '../types/webdav.types';
3
- import { DriveFile } from '../services/database/drive-file/drive-file.domain';
4
- import { DriveFolder } from '../services/database/drive-folder/drive-folder.domain';
5
- import { DriveDatabaseManager } from '../services/database/drive-database-manager.service';
6
3
  import { DriveFolderService } from '../services/drive/drive-folder.service';
7
4
  import { DriveFileService } from '../services/drive/drive-file.service';
8
5
  import { DriveFileItem, DriveFolderItem } from '../types/drive.types';
9
6
  export declare class WebDavUtils {
10
7
  static joinURL(...pathComponents: string[]): string;
11
8
  static removeHostFromURL(completeURL: string): string;
12
- static getRequestedResource(urlObject: string | Request): Promise<WebDavRequestedResource>;
13
- static getDatabaseItemFromResource(resource: WebDavRequestedResource, driveDatabaseManager: DriveDatabaseManager): Promise<DriveFileItem | DriveFolderItem | null>;
14
- static setDatabaseItem(type: 'file' | 'folder', driveItem: DriveFileItem | DriveFolderItem, driveDatabaseManager: DriveDatabaseManager, relativePath: string): Promise<DriveFolder | DriveFile | undefined>;
9
+ static getRequestedResource(urlObject: string | Request, decodeUri?: boolean): Promise<WebDavRequestedResource>;
15
10
  static getDriveItemFromResource(resource: WebDavRequestedResource, driveFolderService?: DriveFolderService, driveFileService?: DriveFileService): Promise<DriveFileItem | DriveFolderItem | undefined>;
16
- static getAndSearchItemFromResource({ resource, driveDatabaseManager, driveFolderService, driveFileService, }: {
11
+ static getAndSearchItemFromResource({ resource, driveFolderService, driveFileService, }: {
17
12
  resource: WebDavRequestedResource;
18
- driveDatabaseManager: DriveDatabaseManager;
19
13
  driveFolderService?: DriveFolderService;
20
14
  driveFileService?: DriveFileService;
21
15
  }): Promise<DriveFileItem | DriveFolderItem>;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WebDavUtils = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const errors_utils_1 = require("./errors.utils");
9
- const logger_utils_1 = require("./logger.utils");
10
9
  class WebDavUtils {
11
10
  static joinURL(...pathComponents) {
12
11
  return node_path_1.default.posix.join(...pathComponents);
@@ -21,7 +20,7 @@ class WebDavUtils {
21
20
  url = '/'.concat(url);
22
21
  return url;
23
22
  }
24
- static async getRequestedResource(urlObject) {
23
+ static async getRequestedResource(urlObject, decodeUri = true) {
25
24
  let requestUrl;
26
25
  if (typeof urlObject === 'string') {
27
26
  requestUrl = urlObject;
@@ -29,7 +28,7 @@ class WebDavUtils {
29
28
  else {
30
29
  requestUrl = urlObject.url;
31
30
  }
32
- const decodedUrl = decodeURIComponent(requestUrl).replaceAll('/./', '/');
31
+ const decodedUrl = (decodeUri ? decodeURIComponent(requestUrl) : requestUrl).replaceAll('/./', '/');
33
32
  const parsedPath = node_path_1.default.parse(decodedUrl);
34
33
  let parentPath = node_path_1.default.dirname(decodedUrl);
35
34
  if (!parentPath.startsWith('/'))
@@ -56,46 +55,30 @@ class WebDavUtils {
56
55
  };
57
56
  }
58
57
  }
59
- static async getDatabaseItemFromResource(resource, driveDatabaseManager) {
60
- let databaseResource = null;
61
- if (resource.type === 'folder') {
62
- databaseResource = await driveDatabaseManager.findFolderByRelativePath(resource.url);
63
- }
64
- if (resource.type === 'file') {
65
- databaseResource = await driveDatabaseManager.findFileByRelativePath(resource.url);
66
- }
67
- return databaseResource?.toItem() ?? null;
68
- }
69
- static async setDatabaseItem(type, driveItem, driveDatabaseManager, relativePath) {
70
- if (type === 'folder') {
71
- return await driveDatabaseManager.createFolder(driveItem, relativePath);
72
- }
73
- if (type === 'file') {
74
- return await driveDatabaseManager.createFile(driveItem, relativePath);
75
- }
76
- }
77
58
  static async getDriveItemFromResource(resource, driveFolderService, driveFileService) {
78
59
  let item = undefined;
79
60
  if (resource.type === 'folder') {
80
- item = await driveFolderService?.getFolderMetadataByPath(resource.url);
61
+ try {
62
+ item = await driveFolderService?.getFolderMetadataByPath(resource.url);
63
+ }
64
+ catch (error) {
65
+ if (error.status === 404) {
66
+ throw new errors_utils_1.ConflictError(`Resource not found on Internxt Drive at ${resource.url}`);
67
+ }
68
+ throw error;
69
+ }
81
70
  }
82
71
  if (resource.type === 'file') {
83
72
  item = await driveFileService?.getFileMetadataByPath(resource.url);
84
73
  }
85
74
  return item;
86
75
  }
87
- static async getAndSearchItemFromResource({ resource, driveDatabaseManager, driveFolderService, driveFileService, }) {
88
- let databaseItem = await this.getDatabaseItemFromResource(resource, driveDatabaseManager);
89
- if (!databaseItem) {
90
- logger_utils_1.webdavLogger.info('Resource not found on local database', { resource });
91
- const driveItem = await this.getDriveItemFromResource(resource, driveFolderService, driveFileService);
92
- if (!driveItem) {
93
- throw new errors_utils_1.NotFoundError(`Resource not found on Internxt Drive at ${resource.url}`);
94
- }
95
- databaseItem = driveItem;
96
- await this.setDatabaseItem(resource.type, driveItem, driveDatabaseManager, resource.url);
76
+ static async getAndSearchItemFromResource({ resource, driveFolderService, driveFileService, }) {
77
+ const driveItem = await this.getDriveItemFromResource(resource, driveFolderService, driveFileService);
78
+ if (!driveItem) {
79
+ throw new errors_utils_1.NotFoundError(`Resource not found on Internxt Drive at ${resource.url}`);
97
80
  }
98
- return databaseItem;
81
+ return driveItem;
99
82
  }
100
83
  }
101
84
  exports.WebDavUtils = WebDavUtils;
@@ -2,7 +2,7 @@ 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;
5
- static toXML(object: object, options?: XmlBuilderOptions): any;
5
+ static toXML(object: object, options?: XmlBuilderOptions): string;
6
6
  static toWebDavXML(object: object, options: XmlBuilderOptions): string;
7
7
  static addDefaultNamespace(key: string): string;
8
8
  static encodeWebDavUri(uri: string): string;
@@ -1,13 +1,11 @@
1
1
  import { Request, Response } from 'express';
2
2
  import { WebDavMethodHandler } from '../../types/webdav.types';
3
- import { DriveDatabaseManager } from '../../services/database/drive-database-manager.service';
4
3
  import { TrashService } from '../../services/drive/trash.service';
5
4
  import { DriveFileService } from '../../services/drive/drive-file.service';
6
5
  import { DriveFolderService } from '../../services/drive/drive-folder.service';
7
6
  export declare class DELETERequestHandler implements WebDavMethodHandler {
8
7
  private readonly dependencies;
9
8
  constructor(dependencies: {
10
- driveDatabaseManager: DriveDatabaseManager;
11
9
  trashService: TrashService;
12
10
  driveFileService: DriveFileService;
13
11
  driveFolderService: DriveFolderService;
@@ -9,12 +9,11 @@ class DELETERequestHandler {
9
9
  this.dependencies = dependencies;
10
10
  }
11
11
  handle = async (req, res) => {
12
- const { driveDatabaseManager, driveFileService, driveFolderService, trashService } = this.dependencies;
12
+ const { driveFileService, driveFolderService, trashService } = this.dependencies;
13
13
  const resource = await webdav_utils_1.WebDavUtils.getRequestedResource(req);
14
14
  logger_utils_1.webdavLogger.info(`[DELETE] Request received for ${resource.type} at ${resource.url}`);
15
15
  const driveItem = await webdav_utils_1.WebDavUtils.getAndSearchItemFromResource({
16
16
  resource,
17
- driveDatabaseManager,
18
17
  driveFolderService,
19
18
  driveFileService: driveFileService,
20
19
  });
@@ -22,12 +21,6 @@ class DELETERequestHandler {
22
21
  await trashService.trashItems({
23
22
  items: [{ type: resource.type, uuid: driveItem.uuid }],
24
23
  });
25
- if (resource.type === 'folder') {
26
- await driveDatabaseManager.deleteFolderById(driveItem.id);
27
- }
28
- else if (resource.type === 'file') {
29
- await driveDatabaseManager.deleteFileById(driveItem.id);
30
- }
31
24
  res.status(204).send();
32
25
  const type = resource.type.charAt(0).toUpperCase() + resource.type.substring(1);
33
26
  logger_utils_1.webdavLogger.info(`[DELETE] [${driveItem.uuid}] ${type} trashed successfully`);
@@ -1,7 +1,6 @@
1
1
  import { WebDavMethodHandler } from '../../types/webdav.types';
2
2
  import { Request, Response } from 'express';
3
3
  import { DriveFileService } from '../../services/drive/drive-file.service';
4
- import { DriveDatabaseManager } from '../../services/database/drive-database-manager.service';
5
4
  import { NetworkFacade } from '../../services/network/network-facade.service';
6
5
  import { DownloadService } from '../../services/network/download.service';
7
6
  import { CryptoService } from '../../services/crypto.service';
@@ -10,7 +9,6 @@ export declare class GETRequestHandler implements WebDavMethodHandler {
10
9
  private readonly dependencies;
11
10
  constructor(dependencies: {
12
11
  driveFileService: DriveFileService;
13
- driveDatabaseManager: DriveDatabaseManager;
14
12
  downloadService: DownloadService;
15
13
  cryptoService: CryptoService;
16
14
  authService: AuthService;
@@ -11,7 +11,7 @@ class GETRequestHandler {
11
11
  this.dependencies = dependencies;
12
12
  }
13
13
  handle = async (req, res) => {
14
- const { driveDatabaseManager, driveFileService, authService, networkFacade } = this.dependencies;
14
+ const { driveFileService, authService, networkFacade } = this.dependencies;
15
15
  const resource = await webdav_utils_1.WebDavUtils.getRequestedResource(req);
16
16
  if (resource.name.startsWith('._'))
17
17
  throw new errors_utils_1.NotFoundError('File not found');
@@ -20,7 +20,6 @@ class GETRequestHandler {
20
20
  logger_utils_1.webdavLogger.info(`[GET] Request received for ${resource.type} at ${resource.url}`);
21
21
  const driveFile = (await webdav_utils_1.WebDavUtils.getAndSearchItemFromResource({
22
22
  resource,
23
- driveDatabaseManager,
24
23
  driveFileService,
25
24
  }));
26
25
  logger_utils_1.webdavLogger.info(`[GET] [${driveFile.uuid}] Found Drive File`);