@internxt/cli 1.6.6 → 1.6.8

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 (85) hide show
  1. package/README.md +36 -231
  2. package/dist/commands/create-folder.js +2 -6
  3. package/dist/commands/delete-permanently-file.js +1 -1
  4. package/dist/commands/delete-permanently-folder.js +1 -1
  5. package/dist/commands/download-file.js +3 -3
  6. package/dist/commands/list.d.ts +2 -0
  7. package/dist/commands/list.js +6 -4
  8. package/dist/commands/login.d.ts +0 -1
  9. package/dist/commands/login.js +1 -11
  10. package/dist/commands/move-file.d.ts +1 -0
  11. package/dist/commands/move-file.js +1 -1
  12. package/dist/commands/move-folder.js +1 -1
  13. package/dist/commands/rename-file.js +1 -1
  14. package/dist/commands/rename-folder.js +1 -1
  15. package/dist/commands/trash-file.js +1 -1
  16. package/dist/commands/trash-folder.js +1 -1
  17. package/dist/commands/trash-list.d.ts +2 -0
  18. package/dist/commands/trash-list.js +5 -3
  19. package/dist/commands/trash-restore-file.d.ts +1 -0
  20. package/dist/commands/trash-restore-file.js +1 -1
  21. package/dist/commands/trash-restore-folder.js +1 -1
  22. package/dist/commands/upload-file.d.ts +1 -0
  23. package/dist/commands/upload-file.js +22 -13
  24. package/dist/commands/whoami.js +6 -3
  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 +35 -44
  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 +14 -46
  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 +3 -13
  47. package/dist/services/validation.service.js +4 -28
  48. package/dist/types/command.types.d.ts +1 -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/drive.utils.d.ts +1 -0
  54. package/dist/utils/drive.utils.js +5 -1
  55. package/dist/utils/format.utils.js +6 -2
  56. package/dist/utils/logger.utils.js +9 -2
  57. package/dist/utils/network.utils.js +2 -2
  58. package/dist/utils/stream.utils.d.ts +2 -2
  59. package/dist/utils/stream.utils.js +7 -6
  60. package/dist/utils/thumbnail.utils.d.ts +1 -3
  61. package/dist/utils/thumbnail.utils.js +3 -13
  62. package/dist/utils/upload.utils.d.ts +1 -1
  63. package/dist/utils/upload.utils.js +2 -2
  64. package/dist/utils/webdav.utils.d.ts +2 -0
  65. package/dist/utils/webdav.utils.js +16 -0
  66. package/dist/webdav/handlers/GET.handler.js +4 -2
  67. package/dist/webdav/handlers/HEAD.handler.js +2 -0
  68. package/dist/webdav/handlers/MKCOL.handler.js +3 -3
  69. package/dist/webdav/handlers/PROPFIND.handler.js +8 -4
  70. package/dist/webdav/handlers/PUT.handler.js +24 -10
  71. package/dist/webdav/index.js +2 -2
  72. package/dist/webdav/middewares/auth.middleware.js +2 -1
  73. package/dist/webdav/middewares/errors.middleware.js +29 -5
  74. package/dist/webdav/middewares/webdav-auth.middleware.js +1 -0
  75. package/dist/webdav/webdav-server.js +2 -2
  76. package/oclif.manifest.json +9 -198
  77. package/package.json +23 -22
  78. package/dist/commands/workspaces-list.d.ts +0 -20
  79. package/dist/commands/workspaces-list.js +0 -68
  80. package/dist/commands/workspaces-unset.d.ts +0 -23
  81. package/dist/commands/workspaces-unset.js +0 -46
  82. package/dist/commands/workspaces-use.d.ts +0 -27
  83. package/dist/commands/workspaces-use.js +0 -114
  84. package/dist/services/drive/workspace.service.d.ts +0 -7
  85. 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();
@@ -38,52 +37,32 @@ class DriveFolderService {
38
37
  return { folders, files };
39
38
  };
40
39
  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);
40
+ const folders = await this.getAllSubfolders(folderUuid, 0);
44
41
  return folders;
45
42
  };
46
43
  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);
44
+ const files = await this.getAllSubfiles(folderUuid, 0);
50
45
  return files;
51
46
  };
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
- }
47
+ getAllSubfolders = async (folderUuid, offset) => {
48
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
49
+ const [personalFolderContentPromise] = storageClient.getFolderFoldersByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
50
+ let folders = (await personalFolderContentPromise).folders;
64
51
  folders = folders.filter((folder) => folder.status === types_1.FileStatus.EXISTS);
65
52
  if (folders.length > 0) {
66
- return folders.concat(await this.getAllSubfolders(currentWorkspace, folderUuid, offset + folders.length));
53
+ return folders.concat(await this.getAllSubfolders(folderUuid, offset + folders.length));
67
54
  }
68
55
  else {
69
56
  return folders;
70
57
  }
71
58
  };
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
- }
59
+ getAllSubfiles = async (folderUuid, offset) => {
60
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
61
+ const [folderContentPromise] = storageClient.getFolderFilesByUuid(folderUuid, offset, 50, 'plainName', 'ASC');
62
+ let files = (await folderContentPromise).files;
84
63
  files = files.filter((file) => file.status === types_1.FileStatus.EXISTS);
85
64
  if (files.length > 0) {
86
- return files.concat(await this.getAllSubfiles(currentWorkspace, folderUuid, offset + files.length));
65
+ return files.concat(await this.getAllSubfiles(folderUuid, offset + files.length));
87
66
  }
88
67
  else {
89
68
  return files;
@@ -95,19 +74,8 @@ class DriveFolderService {
95
74
  return folderMeta;
96
75
  };
97
76
  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
- }
77
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
78
+ return storageClient.createFolderByUuid(payload);
111
79
  };
112
80
  renameFolder = async (payload) => {
113
81
  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:');
@@ -1,24 +1,14 @@
1
+ import { TokenStatus } from '@internxt/lib';
1
2
  export declare class ValidationService {
2
3
  static readonly instance: ValidationService;
3
4
  validateEmail: (email: string) => boolean;
4
5
  validate2FA: (code: string) => boolean;
5
6
  validateMnemonic: (mnemonic: string) => boolean;
6
- validateUUIDv4: (uuid: string) => boolean;
7
+ validateUUID: (uuid: string) => boolean;
7
8
  validateYesOrNoString: (message: string) => boolean;
8
9
  validateTCPIntegerPort: (port: string) => boolean;
9
10
  validateStringIsNotEmpty: (str: string) => boolean;
10
11
  validateDirectoryExists: (path: string) => Promise<boolean>;
11
12
  validateFileExists: (path: string) => Promise<boolean>;
12
- validateJwtAndCheckExpiration: (token?: string) => number | null;
13
- checkTokenExpiration: (expirationTimestamp: number) => {
14
- expired: boolean;
15
- refreshRequired: boolean;
16
- };
17
- validateTokenAndCheckExpiration: (token?: string) => {
18
- isValid: boolean;
19
- expiration: {
20
- expired: boolean;
21
- refreshRequired: boolean;
22
- };
23
- };
13
+ validateTokenAndCheckExpiration: (token: string) => TokenStatus;
24
14
  }
@@ -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());
@@ -48,33 +49,8 @@ class ValidationService {
48
49
  return false;
49
50
  }
50
51
  };
51
- validateJwtAndCheckExpiration = (token) => {
52
- if (!token || typeof token !== 'string' || token.split('.').length !== 3) {
53
- return null;
54
- }
55
- try {
56
- const payload = JSON.parse(atob(token.split('.')[1]));
57
- return typeof payload.exp === 'number' ? payload.exp : null;
58
- }
59
- catch {
60
- return null;
61
- }
62
- };
63
- checkTokenExpiration = (expirationTimestamp) => {
64
- const TWO_DAYS_IN_SECONDS = 2 * 24 * 60 * 60;
65
- const currentTime = Math.floor(Date.now() / 1000);
66
- const remainingSeconds = expirationTimestamp - currentTime;
67
- return {
68
- expired: remainingSeconds <= 0,
69
- refreshRequired: remainingSeconds > 0 && remainingSeconds <= TWO_DAYS_IN_SECONDS,
70
- };
71
- };
72
52
  validateTokenAndCheckExpiration = (token) => {
73
- const expiration = this.validateJwtAndCheckExpiration(token);
74
- return {
75
- isValid: expiration !== null,
76
- expiration: expiration ? this.checkTokenExpiration(expiration) : { expired: true, refreshRequired: false },
77
- };
53
+ return lib_1.auth.validateTokenAndCheckExpiration(token);
78
54
  };
79
55
  }
80
56
  exports.ValidationService = ValidationService;
@@ -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
  }
@@ -114,6 +94,7 @@ export interface PaginatedItem {
114
94
  type: string;
115
95
  id: string;
116
96
  size: string;
97
+ created: string;
117
98
  modified: string;
118
99
  }
119
100
  export interface PromptOptions {
@@ -126,12 +107,3 @@ export interface PromptOptions {
126
107
  default?: number;
127
108
  };
128
109
  }
129
- export interface PaginatedWorkspace {
130
- name: string;
131
- id: string;
132
- usedSpace: string;
133
- availableSpace: string;
134
- owner: string;
135
- address: string;
136
- created: string;
137
- }
@@ -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;