@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.
- package/.env +4 -7
- package/README.md +78 -26
- package/bin/dev.js +1 -1
- package/bin/run.js +1 -1
- package/dist/commands/create-folder.js +1 -1
- package/dist/commands/delete-permanently-file.js +1 -1
- package/dist/commands/delete-permanently-folder.js +1 -1
- package/dist/commands/download-file.js +2 -1
- package/dist/commands/logout.js +2 -0
- package/dist/commands/upload-file.js +3 -2
- package/dist/services/auth.service.d.ts +1 -0
- package/dist/services/auth.service.js +14 -1
- package/dist/services/crypto.service.d.ts +1 -1
- package/dist/services/crypto.service.js +2 -2
- package/dist/services/drive/drive-file.service.d.ts +1 -1
- package/dist/services/drive/drive-file.service.js +7 -7
- package/dist/services/drive/drive-folder.service.js +7 -7
- package/dist/services/drive/trash.service.d.ts +6 -4
- package/dist/services/drive/trash.service.js +6 -6
- package/dist/services/keys.service.js +1 -1
- package/dist/services/sdk-manager.service.d.ts +3 -5
- package/dist/services/sdk-manager.service.js +15 -34
- package/dist/services/thumbnail.service.d.ts +2 -2
- package/dist/services/thumbnail.service.js +6 -6
- package/dist/services/usage.service.d.ts +2 -2
- package/dist/services/usage.service.js +2 -2
- package/dist/services/validation.service.js +2 -2
- package/dist/types/config.types.d.ts +2 -4
- package/dist/utils/pm2.utils.d.ts +1 -1
- package/dist/utils/thumbnail.utils.js +3 -3
- package/dist/utils/webdav.utils.d.ts +2 -3
- package/dist/utils/webdav.utils.js +6 -18
- package/dist/webdav/handlers/DELETE.handler.js +5 -1
- package/dist/webdav/handlers/GET.handler.js +6 -2
- package/dist/webdav/handlers/HEAD.handler.js +7 -2
- package/dist/webdav/handlers/MKCOL.handler.js +10 -8
- package/dist/webdav/handlers/MOVE.handler.js +10 -3
- package/dist/webdav/handlers/OPTIONS.handler.js +2 -5
- package/dist/webdav/handlers/PROPFIND.handler.js +20 -21
- package/dist/webdav/handlers/PUT.handler.js +8 -4
- package/dist/webdav/index.js +1 -1
- package/dist/webdav/webdav-server.js +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +35 -38
- package/scripts/restart-webdav.js +2 -1
package/.env
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
21
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
22
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
23
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
24
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
25
|
+
[](https://sonarcloud.io/summary/new_code?id=internxt_cli)
|
|
26
|
+
[](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 >=
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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('
|
|
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(
|
|
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.
|
|
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(
|
|
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);
|
package/dist/commands/logout.js
CHANGED
|
@@ -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.
|
|
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('
|
|
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
|
};
|
|
@@ -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(
|
|
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
|
-
|
|
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
|
|
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.
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
48
|
-
return storageClient.
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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: (
|
|
6
|
-
|
|
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(
|
|
8
|
+
const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
|
|
9
9
|
return storageClient.addItemsToTrash(payload);
|
|
10
10
|
};
|
|
11
|
-
deleteFile = (
|
|
12
|
-
const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage(
|
|
13
|
-
return storageClient.
|
|
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(
|
|
17
|
-
return storageClient.
|
|
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: '
|
|
110
|
+
curve: 'ed25519Legacy',
|
|
111
111
|
});
|
|
112
112
|
return {
|
|
113
113
|
privateKeyArmored: privateKey,
|