@internxt/cli 1.6.7 → 1.6.9

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 (87) hide show
  1. package/README.md +36 -231
  2. package/bin/dev.js +10 -0
  3. package/bin/run.js +10 -0
  4. package/dist/commands/create-folder.js +2 -6
  5. package/dist/commands/delete-permanently-file.js +1 -1
  6. package/dist/commands/delete-permanently-folder.js +1 -1
  7. package/dist/commands/download-file.js +3 -3
  8. package/dist/commands/list.d.ts +2 -0
  9. package/dist/commands/list.js +1 -1
  10. package/dist/commands/login.d.ts +0 -1
  11. package/dist/commands/login.js +1 -11
  12. package/dist/commands/move-file.d.ts +1 -0
  13. package/dist/commands/move-file.js +1 -1
  14. package/dist/commands/move-folder.js +1 -1
  15. package/dist/commands/rename-file.js +1 -1
  16. package/dist/commands/rename-folder.js +1 -1
  17. package/dist/commands/trash-file.js +1 -1
  18. package/dist/commands/trash-folder.js +1 -1
  19. package/dist/commands/trash-list.d.ts +2 -0
  20. package/dist/commands/trash-restore-file.d.ts +1 -0
  21. package/dist/commands/trash-restore-file.js +1 -1
  22. package/dist/commands/trash-restore-folder.js +1 -1
  23. package/dist/commands/upload-file.d.ts +1 -0
  24. package/dist/commands/upload-file.js +22 -13
  25. package/dist/hooks/prerun/auth_check.js +2 -2
  26. package/dist/services/auth.service.d.ts +3 -3
  27. package/dist/services/auth.service.js +30 -40
  28. package/dist/services/crypto.service.d.ts +0 -4
  29. package/dist/services/crypto.service.js +1 -32
  30. package/dist/services/database/drive-item/drive-item.model.js +1 -0
  31. package/dist/services/database/drive-item/drive-item.repository.js +12 -2
  32. package/dist/services/drive/drive-file.service.d.ts +2 -0
  33. package/dist/services/drive/drive-file.service.js +48 -18
  34. package/dist/services/drive/drive-folder.service.d.ts +2 -0
  35. package/dist/services/drive/drive-folder.service.js +18 -48
  36. package/dist/services/drive/trash.service.d.ts +2 -0
  37. package/dist/services/drive/trash.service.js +14 -41
  38. package/dist/services/network/upload/upload-file.service.js +5 -9
  39. package/dist/services/network/upload/upload.types.d.ts +2 -1
  40. package/dist/services/sdk-manager.service.d.ts +0 -2
  41. package/dist/services/sdk-manager.service.js +0 -7
  42. package/dist/services/thumbnail.service.d.ts +4 -13
  43. package/dist/services/thumbnail.service.js +7 -21
  44. package/dist/services/universal-link.service.d.ts +1 -1
  45. package/dist/services/universal-link.service.js +2 -2
  46. package/dist/services/validation.service.d.ts +1 -1
  47. package/dist/services/validation.service.js +3 -2
  48. package/dist/types/command.types.d.ts +0 -29
  49. package/dist/types/command.types.js +1 -15
  50. package/dist/types/network.types.d.ts +3 -11
  51. package/dist/types/webdav.types.d.ts +0 -3
  52. package/dist/utils/cli.utils.js +9 -22
  53. package/dist/utils/errors.utils.d.ts +8 -0
  54. package/dist/utils/errors.utils.js +19 -1
  55. package/dist/utils/logger.utils.js +9 -2
  56. package/dist/utils/network.utils.js +7 -6
  57. package/dist/utils/stream.utils.d.ts +2 -2
  58. package/dist/utils/stream.utils.js +7 -6
  59. package/dist/utils/thumbnail.utils.d.ts +1 -3
  60. package/dist/utils/thumbnail.utils.js +3 -13
  61. package/dist/utils/upload.utils.d.ts +1 -1
  62. package/dist/utils/upload.utils.js +2 -2
  63. package/dist/utils/webdav.utils.d.ts +2 -0
  64. package/dist/utils/webdav.utils.js +16 -0
  65. package/dist/webdav/handlers/DELETE.handler.js +0 -2
  66. package/dist/webdav/handlers/GET.handler.js +18 -7
  67. package/dist/webdav/handlers/HEAD.handler.js +18 -7
  68. package/dist/webdav/handlers/LOCK.handler.js +5 -1
  69. package/dist/webdav/handlers/MOVE.handler.js +13 -1
  70. package/dist/webdav/handlers/OPTIONS.handler.js +3 -3
  71. package/dist/webdav/handlers/PROPFIND.handler.js +5 -6
  72. package/dist/webdav/handlers/PROPPATCH.handler.d.ts +3 -1
  73. package/dist/webdav/handlers/PROPPATCH.handler.js +53 -3
  74. package/dist/webdav/handlers/PUT.handler.js +19 -10
  75. package/dist/webdav/index.js +2 -2
  76. package/dist/webdav/middewares/auth.middleware.js +1 -1
  77. package/dist/webdav/middewares/errors.middleware.js +32 -6
  78. package/oclif.manifest.json +9 -198
  79. package/package.json +26 -25
  80. package/dist/commands/workspaces-list.d.ts +0 -20
  81. package/dist/commands/workspaces-list.js +0 -68
  82. package/dist/commands/workspaces-unset.d.ts +0 -23
  83. package/dist/commands/workspaces-unset.js +0 -46
  84. package/dist/commands/workspaces-use.d.ts +0 -27
  85. package/dist/commands/workspaces-use.js +0 -114
  86. package/dist/services/drive/workspace.service.d.ts +0 -7
  87. package/dist/services/drive/workspace.service.js +0 -30
@@ -4,7 +4,6 @@ exports.DriveFolderService = void 0;
4
4
  const types_1 = require("@internxt/sdk/dist/drive/storage/types");
5
5
  const sdk_manager_service_1 = require("../sdk-manager.service");
6
6
  const drive_utils_1 = require("../../utils/drive.utils");
7
- const auth_service_1 = require("../auth.service");
8
7
  const errors_utils_1 = require("../../utils/errors.utils");
9
8
  class DriveFolderService {
10
9
  static instance = new DriveFolderService();
@@ -33,57 +32,39 @@ class DriveFolderService {
33
32
  return folderItem;
34
33
  };
35
34
  getFolderContent = async (folderUuid) => {
36
- const folders = await this.getFolderSubfolders(folderUuid);
37
- const files = await this.getFolderSubfiles(folderUuid);
35
+ const [folders, files] = await Promise.all([
36
+ this.getFolderSubfolders(folderUuid),
37
+ this.getFolderSubfiles(folderUuid),
38
+ ]);
38
39
  return { folders, files };
39
40
  };
40
41
  getFolderSubfolders = async (folderUuid) => {
41
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
42
- const currentWorkspaceCreds = currentWorkspace?.workspaceCredentials;
43
- const folders = await this.getAllSubfolders(currentWorkspaceCreds, folderUuid, 0);
42
+ const folders = await this.getAllSubfolders(folderUuid, 0);
44
43
  return folders;
45
44
  };
46
45
  getFolderSubfiles = async (folderUuid) => {
47
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
48
- const currentWorkspaceCreds = currentWorkspace?.workspaceCredentials;
49
- const files = await this.getAllSubfiles(currentWorkspaceCreds, folderUuid, 0);
46
+ const files = await this.getAllSubfiles(folderUuid, 0);
50
47
  return files;
51
48
  };
52
- getAllSubfolders = async (currentWorkspace, folderUuid, offset) => {
53
- let folders;
54
- if (currentWorkspace) {
55
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
56
- const [workspaceContentPromise] = workspaceClient.getFolders(currentWorkspace.id, folderUuid, offset, 50, 'plainName', 'ASC');
57
- folders = (await workspaceContentPromise).result;
58
- }
59
- else {
60
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
61
- const [personalFolderContentPromise] = storageClient.getFolderFoldersByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
62
- folders = (await personalFolderContentPromise).folders;
63
- }
49
+ getAllSubfolders = async (folderUuid, offset) => {
50
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
51
+ const [personalFolderContentPromise] = storageClient.getFolderFoldersByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
52
+ let folders = (await personalFolderContentPromise).folders;
64
53
  folders = folders.filter((folder) => folder.status === types_1.FileStatus.EXISTS);
65
54
  if (folders.length > 0) {
66
- return folders.concat(await this.getAllSubfolders(currentWorkspace, folderUuid, offset + folders.length));
55
+ return folders.concat(await this.getAllSubfolders(folderUuid, offset + folders.length));
67
56
  }
68
57
  else {
69
58
  return folders;
70
59
  }
71
60
  };
72
- getAllSubfiles = async (currentWorkspace, folderUuid, offset) => {
73
- let files;
74
- if (currentWorkspace) {
75
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
76
- const [workspaceContentPromise] = workspaceClient.getFiles(currentWorkspace.id, folderUuid, offset, 50, 'plainName', 'ASC');
77
- files = (await workspaceContentPromise).result;
78
- }
79
- else {
80
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
81
- const [folderContentPromise] = storageClient.getFolderFilesByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
82
- files = (await folderContentPromise).files;
83
- }
61
+ getAllSubfiles = async (folderUuid, offset) => {
62
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
63
+ const [folderContentPromise] = storageClient.getFolderFilesByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
64
+ let files = (await folderContentPromise).files;
84
65
  files = files.filter((file) => file.status === types_1.FileStatus.EXISTS);
85
66
  if (files.length > 0) {
86
- return files.concat(await this.getAllSubfiles(currentWorkspace, folderUuid, offset + files.length));
67
+ return files.concat(await this.getAllSubfiles(folderUuid, offset + files.length));
87
68
  }
88
69
  else {
89
70
  return files;
@@ -95,19 +76,8 @@ class DriveFolderService {
95
76
  return folderMeta;
96
77
  };
97
78
  createFolder = async (payload) => {
98
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
99
- if (currentWorkspace) {
100
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
101
- return workspaceClient.createFolder({
102
- workspaceId: currentWorkspace.workspaceCredentials.id,
103
- parentFolderUuid: payload.parentFolderUuid,
104
- plainName: payload.plainName,
105
- });
106
- }
107
- else {
108
- const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
109
- return storageClient.createFolderByUuid(payload);
110
- }
79
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
80
+ return storageClient.createFolderByUuid(payload);
111
81
  };
112
82
  renameFolder = async (payload) => {
113
83
  const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
@@ -31,6 +31,7 @@ export declare class TrashService {
31
31
  status: "EXISTS" | "TRASHED" | "DELETED";
32
32
  removed: boolean;
33
33
  deleted: boolean;
34
+ isFavorite?: boolean;
34
35
  }[];
35
36
  files: {
36
37
  id: number;
@@ -50,6 +51,7 @@ export declare class TrashService {
50
51
  updatedAt: string;
51
52
  plainName: string;
52
53
  status: "EXISTS" | "TRASHED" | "DELETED";
54
+ isFavorite?: boolean;
53
55
  }[];
54
56
  }>;
55
57
  private readonly getAllTrashSubfolders;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TrashService = void 0;
4
4
  const sdk_manager_service_1 = require("../sdk-manager.service");
5
- const auth_service_1 = require("../auth.service");
6
5
  class TrashService {
7
6
  static instance = new TrashService();
8
7
  trashItems = (payload) => {
@@ -26,57 +25,31 @@ class TrashService {
26
25
  return storageClient.deleteFolderByUuid(folderId);
27
26
  };
28
27
  clearTrash = async () => {
29
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
30
- const currentWorkspaceCreds = currentWorkspace?.workspaceCredentials;
31
- if (currentWorkspaceCreds) {
32
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
33
- return workspaceClient.emptyPersonalTrash(currentWorkspaceCreds.id);
34
- }
35
- else {
36
- const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
37
- return trashClient.clearTrash();
38
- }
28
+ const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
29
+ return trashClient.clearTrash();
39
30
  };
40
31
  getTrashFolderContent = async () => {
41
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
42
- const currentWorkspaceCreds = currentWorkspace?.workspaceCredentials;
43
- const folders = await this.getAllTrashSubfolders(currentWorkspaceCreds, 0);
44
- const files = await this.getAllTrashSubfiles(currentWorkspaceCreds, 0);
32
+ const folders = await this.getAllTrashSubfolders(0);
33
+ const files = await this.getAllTrashSubfiles(0);
45
34
  return { folders, files };
46
35
  };
47
- getAllTrashSubfolders = async (currentWorkspace, offset) => {
48
- let folders;
49
- if (currentWorkspace) {
50
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
51
- const promise = workspaceClient.getPersonalTrash(currentWorkspace.id, 'folder', offset, 50);
52
- folders = (await promise).result;
53
- }
54
- else {
55
- const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
56
- const promise = trashClient.getTrashedFilesPaginated(50, offset, 'folders', true);
57
- folders = (await promise).result;
58
- }
36
+ getAllTrashSubfolders = async (offset) => {
37
+ const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
38
+ const promise = trashClient.getTrashedFilesPaginated(50, offset, 'folders', true);
39
+ const folders = (await promise).result;
59
40
  if (folders.length > 0) {
60
- return folders.concat(await this.getAllTrashSubfolders(currentWorkspace, offset + folders.length));
41
+ return folders.concat(await this.getAllTrashSubfolders(offset + folders.length));
61
42
  }
62
43
  else {
63
44
  return folders;
64
45
  }
65
46
  };
66
- getAllTrashSubfiles = async (currentWorkspace, offset) => {
67
- let files;
68
- if (currentWorkspace) {
69
- const workspaceClient = sdk_manager_service_1.SdkManager.instance.getWorkspaces();
70
- const promise = workspaceClient.getPersonalTrash(currentWorkspace.id, 'file', offset, 50);
71
- files = (await promise).result;
72
- }
73
- else {
74
- const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
75
- const promise = trashClient.getTrashedFilesPaginated(50, offset, 'files', true);
76
- files = (await promise).result;
77
- }
47
+ getAllTrashSubfiles = async (offset) => {
48
+ const trashClient = sdk_manager_service_1.SdkManager.instance.getTrash();
49
+ const promise = trashClient.getTrashedFilesPaginated(50, offset, 'files', true);
50
+ const files = (await promise).result;
78
51
  if (files.length > 0) {
79
- return files.concat(await this.getAllTrashSubfiles(currentWorkspace, offset + files.length));
52
+ return files.concat(await this.getAllTrashSubfiles(offset + files.length));
80
53
  }
81
54
  else {
82
55
  return files;
@@ -11,6 +11,7 @@ const types_1 = require("@internxt/sdk/dist/drive/storage/types");
11
11
  const cli_utils_1 = require("../../../utils/cli.utils");
12
12
  const thumbnail_service_1 = require("../../thumbnail.service");
13
13
  const format_utils_1 = require("../../../utils/format.utils");
14
+ const node_fs_1 = require("node:fs");
14
15
  class UploadFileService {
15
16
  static instance = new UploadFileService();
16
17
  uploadFilesConcurrently = async ({ network, filesToUpload, folderMap, bucket, destinationFolderUuid, currentProgress, emitProgress, debugMode, reporter, }) => {
@@ -51,21 +52,16 @@ class UploadFileService {
51
52
  const fileSize = stats.size ?? 0;
52
53
  const fileType = (0, node_path_1.extname)(file.absolutePath).replaceAll('.', '');
53
54
  let fileId;
54
- let thumbnailStream;
55
55
  const timings = {
56
56
  networkUpload: 0,
57
57
  driveUpload: 0,
58
58
  thumbnailUpload: 0,
59
59
  };
60
60
  if (fileSize > 0) {
61
- const { fileStream, bufferStream } = thumbnail_service_1.ThumbnailService.instance.createFileStreamWithBuffer({
62
- path: file.absolutePath,
63
- fileType,
64
- });
61
+ const readStream = (0, node_fs_1.createReadStream)(file.absolutePath);
65
62
  const uploadTimer = cli_utils_1.CLIUtils.timer();
66
- thumbnailStream = bufferStream;
67
63
  fileId = await network.uploadFile({
68
- from: fileStream,
64
+ from: readStream,
69
65
  size: fileSize,
70
66
  bucketId: bucket,
71
67
  progressCallback: () => { },
@@ -86,9 +82,9 @@ class UploadFileService {
86
82
  });
87
83
  timings.driveUpload = driveTimer.stop();
88
84
  const thumbnailTimer = cli_utils_1.CLIUtils.timer();
89
- if (thumbnailStream && fileSize > 0) {
85
+ if (fileSize > 0) {
90
86
  await thumbnail_service_1.ThumbnailService.instance.tryUploadThumbnail({
91
- bufferStream: thumbnailStream,
87
+ input: file.absolutePath,
92
88
  fileType,
93
89
  bucket,
94
90
  fileUuid: createdDriveFile.uuid,
@@ -16,7 +16,7 @@ export interface UploadFolderParams {
16
16
  debugMode: boolean;
17
17
  reporter: LogReporter;
18
18
  }
19
- export interface UploadProgress {
19
+ interface UploadProgress {
20
20
  percentage: number;
21
21
  currentFile?: string;
22
22
  }
@@ -62,3 +62,4 @@ export interface UploadFileWithRetryParams {
62
62
  export declare const MAX_CONCURRENT_UPLOADS = 10;
63
63
  export declare const DELAYS_MS: number[];
64
64
  export declare const MAX_RETRIES = 2;
65
+ export {};
@@ -1,6 +1,5 @@
1
1
  import { Auth, Drive, Network as NetworkModule } from '@internxt/sdk';
2
2
  import { ApiSecurity, AppDetails } from '@internxt/sdk/dist/shared';
3
- import { Workspaces } from '@internxt/sdk/dist/workspaces';
4
3
  export type SdkManagerApiSecurity = ApiSecurity;
5
4
  export declare class SdkManager {
6
5
  static readonly instance: SdkManager;
@@ -16,7 +15,6 @@ export declare class SdkManager {
16
15
  getStorage: () => Drive.Storage;
17
16
  getTrash: () => Drive.Trash;
18
17
  getShare: () => Drive.Share;
19
- getWorkspaces: () => Workspaces;
20
18
  getNetwork: (credentials: {
21
19
  user: string;
22
20
  pass: string;
@@ -9,7 +9,6 @@ const drive_1 = require("@internxt/sdk/dist/drive");
9
9
  const config_service_1 = require("./config.service");
10
10
  const package_json_1 = __importDefault(require("../../package.json"));
11
11
  const network_utils_1 = require("../utils/network.utils");
12
- const workspaces_1 = require("@internxt/sdk/dist/workspaces");
13
12
  const MAX_RETRIES = 3;
14
13
  class SdkManager {
15
14
  static instance = new SdkManager();
@@ -68,12 +67,6 @@ class SdkManager {
68
67
  const appDetails = SdkManager.getAppDetails();
69
68
  return sdk_1.Drive.Share.client(DRIVE_NEW_API_URL, appDetails, apiSecurity);
70
69
  };
71
- getWorkspaces = () => {
72
- const DRIVE_NEW_API_URL = config_service_1.ConfigService.instance.get('DRIVE_NEW_API_URL');
73
- const apiSecurity = SdkManager.getApiSecurity();
74
- const appDetails = SdkManager.getAppDetails();
75
- return workspaces_1.Workspaces.client(DRIVE_NEW_API_URL, appDetails, apiSecurity);
76
- };
77
70
  getNetwork = (credentials) => {
78
71
  const appDetails = SdkManager.getAppDetails();
79
72
  const auth = network_utils_1.NetworkUtils.getAuthFromCredentials({
@@ -1,25 +1,16 @@
1
- import { Readable } from 'node:stream';
2
1
  import { StorageTypes } from '@internxt/sdk/dist/drive';
3
2
  import { NetworkFacade } from './network/network-facade.service';
4
- import { BufferStream } from '../utils/stream.utils';
5
3
  export declare class ThumbnailService {
6
4
  static readonly instance: ThumbnailService;
7
5
  private static readonly MAX_THUMBNAIL_TIMEOUT;
8
- uploadThumbnail: (fileContent: Buffer, fileType: string, userBucket: string, file_id: string, networkFacade: NetworkFacade, fileSize: number) => Promise<StorageTypes.Thumbnail | undefined>;
9
- private readonly getThumbnailFromImageBuffer;
10
- tryUploadThumbnail: ({ bufferStream, fileType, bucket, fileUuid, networkFacade, size, }: {
11
- bufferStream?: BufferStream;
6
+ uploadThumbnail: (input: string | Buffer, fileType: string, userBucket: string, file_id: string, networkFacade: NetworkFacade, fileSize: number) => Promise<StorageTypes.Thumbnail | undefined>;
7
+ private readonly generateThumbnail;
8
+ tryUploadThumbnail: ({ input, fileType, bucket, fileUuid, networkFacade, size, }: {
9
+ input?: string | Buffer;
12
10
  fileType: string;
13
11
  bucket: string;
14
12
  fileUuid: string;
15
13
  networkFacade: NetworkFacade;
16
14
  size: number;
17
15
  }) => Promise<void>;
18
- createFileStreamWithBuffer: ({ path, fileType, }: {
19
- path: string;
20
- fileType: string;
21
- }) => {
22
- bufferStream?: BufferStream;
23
- fileStream: Readable;
24
- };
25
16
  }
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ThumbnailService = void 0;
4
4
  const node_stream_1 = require("node:stream");
5
- const node_fs_1 = require("node:fs");
6
5
  const drive_file_service_1 = require("./drive/drive-file.service");
7
6
  const drive_1 = require("@internxt/sdk/dist/drive");
8
7
  const thumbnail_utils_1 = require("../utils/thumbnail.utils");
9
- const stream_utils_1 = require("../utils/stream.utils");
10
8
  const errors_utils_1 = require("../utils/errors.utils");
11
9
  const async_utils_1 = require("../utils/async.utils");
12
10
  let sharpDependency = null;
@@ -24,10 +22,10 @@ const getSharp = async () => {
24
22
  class ThumbnailService {
25
23
  static instance = new ThumbnailService();
26
24
  static MAX_THUMBNAIL_TIMEOUT = 30000;
27
- uploadThumbnail = async (fileContent, fileType, userBucket, file_id, networkFacade, fileSize) => {
25
+ uploadThumbnail = async (input, fileType, userBucket, file_id, networkFacade, fileSize) => {
28
26
  let thumbnailBuffer;
29
27
  if (thumbnail_utils_1.ThumbnailUtils.isImageThumbnailable(fileType, fileSize)) {
30
- thumbnailBuffer = await this.getThumbnailFromImageBuffer(fileContent);
28
+ thumbnailBuffer = await this.generateThumbnail(input);
31
29
  }
32
30
  if (thumbnailBuffer) {
33
31
  const size = thumbnailBuffer.length;
@@ -50,10 +48,10 @@ class ThumbnailService {
50
48
  return createdThumbnailFile;
51
49
  }
52
50
  };
53
- getThumbnailFromImageBuffer = async (buffer) => {
51
+ generateThumbnail = async (input) => {
54
52
  const sharp = await getSharp();
55
53
  if (sharp) {
56
- return sharp(buffer, { failOn: 'none' })
54
+ return sharp(input, { failOn: 'none' })
57
55
  .resize({
58
56
  height: thumbnail_utils_1.ThumbnailConfig.MaxHeight,
59
57
  width: thumbnail_utils_1.ThumbnailConfig.MaxWidth,
@@ -65,27 +63,15 @@ class ThumbnailService {
65
63
  .toBuffer();
66
64
  }
67
65
  };
68
- tryUploadThumbnail = async ({ bufferStream, fileType, bucket, fileUuid, networkFacade, size, }) => {
66
+ tryUploadThumbnail = async ({ input, fileType, bucket, fileUuid, networkFacade, size, }) => {
69
67
  try {
70
- const thumbnailBuffer = bufferStream?.getBuffer();
71
- if (thumbnailBuffer && size > 0) {
72
- await async_utils_1.AsyncUtils.withTimeout(ThumbnailService.instance.uploadThumbnail(thumbnailBuffer, fileType, bucket, fileUuid, networkFacade, size), ThumbnailService.MAX_THUMBNAIL_TIMEOUT, 'Thumbnail upload timeout');
68
+ if (input && size > 0) {
69
+ await async_utils_1.AsyncUtils.withTimeout(ThumbnailService.instance.uploadThumbnail(input, fileType, bucket, fileUuid, networkFacade, size), ThumbnailService.MAX_THUMBNAIL_TIMEOUT, 'Thumbnail upload timeout');
73
70
  }
74
71
  }
75
72
  catch (error) {
76
73
  errors_utils_1.ErrorUtils.report(error);
77
74
  }
78
75
  };
79
- createFileStreamWithBuffer = ({ path, fileType, }) => {
80
- const readable = (0, node_fs_1.createReadStream)(path);
81
- if (thumbnail_utils_1.ThumbnailUtils.isFileThumbnailable(fileType)) {
82
- const bufferStream = new stream_utils_1.BufferStream();
83
- return {
84
- bufferStream,
85
- fileStream: readable.pipe(bufferStream),
86
- };
87
- }
88
- return { fileStream: readable };
89
- };
90
76
  }
91
77
  exports.ThumbnailService = ThumbnailService;
@@ -8,5 +8,5 @@ export declare class UniversalLinkService {
8
8
  privateKey: string;
9
9
  }) => Promise<LoginCredentials>;
10
10
  buildLoginUrl: (redirectUri: string) => string;
11
- loginSSO: (jsonFlag: boolean, reporter: LogReporter, hostIp?: string, forcedPort?: number) => Promise<LoginCredentials>;
11
+ loginSSO: (jsonFlag: boolean, reporter: LogReporter, forcedPort?: number) => Promise<LoginCredentials>;
12
12
  }
@@ -42,7 +42,7 @@ class UniversalLinkService {
42
42
  });
43
43
  return `${loginURL}?${params.toString()}`;
44
44
  };
45
- loginSSO = async (jsonFlag, reporter, hostIp = '127.0.0.1', forcedPort = 0) => {
45
+ loginSSO = async (jsonFlag, reporter, forcedPort = 0) => {
46
46
  return new Promise((resolve, reject) => {
47
47
  const server = node_http_1.default.createServer(async (req, res) => {
48
48
  if (!req.url)
@@ -77,7 +77,7 @@ class UniversalLinkService {
77
77
  });
78
78
  server.listen(forcedPort, async () => {
79
79
  const { port } = server.address();
80
- const redirectUri = Buffer.from(`http://${hostIp}:${port}/callback`).toString('base64');
80
+ const redirectUri = Buffer.from(`http://127.0.0.1:${port}/callback`).toString('base64');
81
81
  const loginUrl = this.buildLoginUrl(redirectUri);
82
82
  cli_utils_1.CLIUtils.log(reporter, 'Opening browser for login...');
83
83
  cli_utils_1.CLIUtils.log(reporter, 'If the browser doesn’t open automatically, visit:');
@@ -4,7 +4,7 @@ export declare class ValidationService {
4
4
  validateEmail: (email: string) => boolean;
5
5
  validate2FA: (code: string) => boolean;
6
6
  validateMnemonic: (mnemonic: string) => boolean;
7
- validateUUIDv4: (uuid: string) => boolean;
7
+ validateUUID: (uuid: string) => boolean;
8
8
  validateYesOrNoString: (message: string) => boolean;
9
9
  validateTCPIntegerPort: (port: string) => boolean;
10
10
  validateStringIsNotEmpty: (str: string) => boolean;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ValidationService = void 0;
7
7
  const lib_1 = require("@internxt/lib");
8
8
  const bip39_1 = require("bip39");
9
+ const uuid_1 = require("uuid");
9
10
  const promises_1 = __importDefault(require("node:fs/promises"));
10
11
  class ValidationService {
11
12
  static instance = new ValidationService();
@@ -18,8 +19,8 @@ class ValidationService {
18
19
  validateMnemonic = (mnemonic) => {
19
20
  return (0, bip39_1.validateMnemonic)(mnemonic);
20
21
  };
21
- validateUUIDv4 = (uuid) => {
22
- return /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i.test(uuid);
22
+ validateUUID = (uuid) => {
23
+ return (0, uuid_1.validate)(uuid);
23
24
  };
24
25
  validateYesOrNoString = (message) => {
25
26
  return message.length > 0 && /^(yes|no|y|n)$/i.test(message.trim());
@@ -1,5 +1,3 @@
1
- import { WorkspaceData } from '@internxt/sdk/dist/workspaces';
2
- import { NetworkCredentials } from './network.types';
3
1
  export interface LoginUserDetails {
4
2
  userId: string;
5
3
  uuid: string;
@@ -25,21 +23,9 @@ export interface LoginUserDetails {
25
23
  avatar: string | null;
26
24
  emailVerified: boolean;
27
25
  }
28
- export interface WorkspaceCredentialsDetails {
29
- id: string;
30
- bucket: string;
31
- workspaceUserId: string;
32
- credentials: NetworkCredentials;
33
- token: string;
34
- }
35
- export interface Workspace {
36
- workspaceData: WorkspaceData;
37
- workspaceCredentials: WorkspaceCredentialsDetails;
38
- }
39
26
  export interface LoginCredentials {
40
27
  user: LoginUserDetails;
41
28
  token: string;
42
- workspace?: Workspace;
43
29
  }
44
30
  export interface WebdavConfig {
45
31
  host: string;
@@ -70,9 +56,6 @@ export declare class NotValidFileUuidError extends Error {
70
56
  export declare class NotValidFileIdError extends Error {
71
57
  constructor();
72
58
  }
73
- export declare class NoRootFolderIdFoundError extends Error {
74
- constructor();
75
- }
76
59
  export declare class MissingCredentialsError extends Error {
77
60
  constructor();
78
61
  }
@@ -103,9 +86,6 @@ export declare class NotValidDirectoryError extends Error {
103
86
  export declare class NotValidFileError extends Error {
104
87
  constructor();
105
88
  }
106
- export declare class NotValidWorkspaceUuidError extends Error {
107
- constructor();
108
- }
109
89
  export declare class MissingCredentialsWhenUsingAuthError extends Error {
110
90
  constructor();
111
91
  }
@@ -127,12 +107,3 @@ export interface PromptOptions {
127
107
  default?: number;
128
108
  };
129
109
  }
130
- export interface PaginatedWorkspace {
131
- name: string;
132
- id: string;
133
- usedSpace: string;
134
- availableSpace: string;
135
- owner: string;
136
- address: string;
137
- created: string;
138
- }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MissingCredentialsWhenUsingAuthError = exports.NotValidWorkspaceUuidError = exports.NotValidFileError = exports.NotValidDirectoryError = exports.NotValidPortError = exports.EmptyCustomAuthPasswordError = exports.EmptyCustomAuthUsernameError = exports.EmptyFolderNameError = exports.EmptyFileNameError = exports.InvalidCredentialsError = exports.ExpiredCredentialsError = exports.MissingCredentialsError = exports.NoRootFolderIdFoundError = exports.NotValidFileIdError = exports.NotValidFileUuidError = exports.NotValidFolderUuidError = exports.NotValidTwoFactorCodeError = exports.EmptyPasswordError = exports.NotValidEmailError = void 0;
3
+ exports.MissingCredentialsWhenUsingAuthError = exports.NotValidFileError = exports.NotValidDirectoryError = exports.NotValidPortError = exports.EmptyCustomAuthPasswordError = exports.EmptyCustomAuthUsernameError = exports.EmptyFolderNameError = exports.EmptyFileNameError = exports.InvalidCredentialsError = exports.ExpiredCredentialsError = exports.MissingCredentialsError = exports.NotValidFileIdError = exports.NotValidFileUuidError = exports.NotValidFolderUuidError = exports.NotValidTwoFactorCodeError = exports.EmptyPasswordError = exports.NotValidEmailError = void 0;
4
4
  class NotValidEmailError extends Error {
5
5
  constructor() {
6
6
  super('Email is not valid');
@@ -43,13 +43,6 @@ class NotValidFileIdError extends Error {
43
43
  }
44
44
  }
45
45
  exports.NotValidFileIdError = NotValidFileIdError;
46
- class NoRootFolderIdFoundError extends Error {
47
- constructor() {
48
- super('No root folder id found on your account');
49
- Object.setPrototypeOf(this, NoRootFolderIdFoundError.prototype);
50
- }
51
- }
52
- exports.NoRootFolderIdFoundError = NoRootFolderIdFoundError;
53
46
  class MissingCredentialsError extends Error {
54
47
  constructor() {
55
48
  super('Missing credentials, please login first');
@@ -120,13 +113,6 @@ class NotValidFileError extends Error {
120
113
  }
121
114
  }
122
115
  exports.NotValidFileError = NotValidFileError;
123
- class NotValidWorkspaceUuidError extends Error {
124
- constructor() {
125
- super('Workspace UUID is not valid (it must be a valid v4 UUID)');
126
- Object.setPrototypeOf(this, NotValidWorkspaceUuidError.prototype);
127
- }
128
- }
129
- exports.NotValidWorkspaceUuidError = NotValidWorkspaceUuidError;
130
116
  class MissingCredentialsWhenUsingAuthError extends Error {
131
117
  constructor() {
132
118
  super('When using custom WebDAV authentication, both username and password must be provided');
@@ -9,22 +9,14 @@ export interface NetworkOptions {
9
9
  mnemonic: string;
10
10
  }
11
11
  export type DownloadProgressCallback = (downloadedBytes: number) => void;
12
- export type UploadProgressCallback = (uploadedBytes: number) => void;
13
- export interface NetworkOperationBaseOptions {
12
+ type UploadProgressCallback = (uploadedBytes: number) => void;
13
+ interface NetworkOperationBaseOptions {
14
14
  progressCallback?: UploadProgressCallback;
15
15
  abortController?: AbortController;
16
16
  }
17
- export type UploadOptions = NetworkOperationBaseOptions;
18
17
  export type DownloadOptions = NetworkOperationBaseOptions;
19
18
  export interface SelfsignedCert {
20
19
  cert: string | Buffer;
21
20
  key: string | Buffer;
22
21
  }
23
- export interface UploadTask {
24
- contentToUpload: Buffer;
25
- urlToUpload: string;
26
- index: number;
27
- }
28
- export interface UploadMultipartOptions extends UploadOptions {
29
- parts: number;
30
- }
22
+ export {};
@@ -3,9 +3,6 @@ import { ParsedPath } from 'node:path';
3
3
  export declare abstract class WebDavMethodHandler {
4
4
  abstract handle(request: Request, response: Response): Promise<void>;
5
5
  }
6
- export type WebDavMethodHandlerOptions = {
7
- debug: boolean;
8
- };
9
6
  export type WebDavRequestedResource = {
10
7
  url: string;
11
8
  name: string;
@@ -118,7 +118,7 @@ class CLIUtils {
118
118
  options: { type: 'input' },
119
119
  },
120
120
  }, {
121
- validate: validation_service_1.ValidationService.instance.validateUUIDv4,
121
+ validate: validation_service_1.ValidationService.instance.validateUUID,
122
122
  error: new command_types_1.NotValidFolderUuidError(),
123
123
  canBeEmpty: true,
124
124
  }, reporter);
@@ -255,27 +255,14 @@ class CLIUtils {
255
255
  }
256
256
  };
257
257
  static getNetworkCreds = async (userCredentials) => {
258
- const currentWorkspace = await auth_service_1.AuthService.instance.getCurrentWorkspace();
259
- if (currentWorkspace) {
260
- return {
261
- bucket: currentWorkspace.workspaceCredentials.bucket,
262
- credentials: {
263
- user: currentWorkspace.workspaceCredentials.credentials.user,
264
- pass: currentWorkspace.workspaceCredentials.credentials.pass,
265
- },
266
- mnemonic: currentWorkspace.workspaceData.workspaceUser.key,
267
- };
268
- }
269
- else {
270
- return {
271
- bucket: userCredentials.bucket,
272
- credentials: {
273
- user: userCredentials.bridgeUser,
274
- pass: userCredentials.userId,
275
- },
276
- mnemonic: userCredentials.mnemonic,
277
- };
278
- }
258
+ return {
259
+ bucket: userCredentials.bucket,
260
+ credentials: {
261
+ user: userCredentials.bridgeUser,
262
+ pass: userCredentials.userId,
263
+ },
264
+ mnemonic: userCredentials.mnemonic,
265
+ };
279
266
  };
280
267
  }
281
268
  exports.CLIUtils = CLIUtils;
@@ -28,3 +28,11 @@ export declare class NotImplementedError extends Error {
28
28
  statusCode: number;
29
29
  constructor(message: string);
30
30
  }
31
+ export declare class PreconditionFailedError extends Error {
32
+ statusCode: number;
33
+ constructor(message: string);
34
+ }
35
+ export declare class RangeNotSatisfiableError extends Error {
36
+ statusCode: number;
37
+ constructor(message: string);
38
+ }