@internxt/cli 0.1.4

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 (144) hide show
  1. package/.env +11 -0
  2. package/README.md +297 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/dev.js +7 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +7 -0
  7. package/dist/commands/config.d.ts +18 -0
  8. package/dist/commands/config.js +50 -0
  9. package/dist/commands/download.d.ts +19 -0
  10. package/dist/commands/download.js +119 -0
  11. package/dist/commands/list.d.ts +22 -0
  12. package/dist/commands/list.js +125 -0
  13. package/dist/commands/login.d.ts +21 -0
  14. package/dist/commands/login.js +124 -0
  15. package/dist/commands/logout.d.ts +9 -0
  16. package/dist/commands/logout.js +28 -0
  17. package/dist/commands/logs.d.ts +6 -0
  18. package/dist/commands/logs.js +12 -0
  19. package/dist/commands/move.d.ts +18 -0
  20. package/dist/commands/move.js +109 -0
  21. package/dist/commands/trash.d.ts +15 -0
  22. package/dist/commands/trash.js +85 -0
  23. package/dist/commands/upload.d.ts +15 -0
  24. package/dist/commands/upload.js +93 -0
  25. package/dist/commands/webdav.d.ts +12 -0
  26. package/dist/commands/webdav.js +64 -0
  27. package/dist/commands/whoami.d.ts +9 -0
  28. package/dist/commands/whoami.js +27 -0
  29. package/dist/database/migrations/20240402164914-create-files.d.ts +1 -0
  30. package/dist/database/migrations/20240402164914-create-files.js +55 -0
  31. package/dist/database/migrations/20240402165418-create-folders.d.ts +1 -0
  32. package/dist/database/migrations/20240402165418-create-folders.js +37 -0
  33. package/dist/hooks/prerun/auth_check.d.ts +3 -0
  34. package/dist/hooks/prerun/auth_check.js +32 -0
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.js +5 -0
  37. package/dist/services/auth.service.d.ts +14 -0
  38. package/dist/services/auth.service.js +79 -0
  39. package/dist/services/config.service.d.ts +19 -0
  40. package/dist/services/config.service.js +79 -0
  41. package/dist/services/crypto.service.d.ts +22 -0
  42. package/dist/services/crypto.service.js +126 -0
  43. package/dist/services/database/drive-database-manager.service.d.ts +18 -0
  44. package/dist/services/database/drive-database-manager.service.js +76 -0
  45. package/dist/services/database/drive-file/drive-file.attributes.d.ts +14 -0
  46. package/dist/services/database/drive-file/drive-file.attributes.js +2 -0
  47. package/dist/services/database/drive-file/drive-file.domain.d.ts +18 -0
  48. package/dist/services/database/drive-file/drive-file.domain.js +51 -0
  49. package/dist/services/database/drive-file/drive-file.model.d.ts +17 -0
  50. package/dist/services/database/drive-file/drive-file.model.js +82 -0
  51. package/dist/services/database/drive-file/drive-file.repository.d.ts +11 -0
  52. package/dist/services/database/drive-file/drive-file.repository.js +40 -0
  53. package/dist/services/database/drive-folder/drive-folder.attributes.d.ts +9 -0
  54. package/dist/services/database/drive-folder/drive-folder.attributes.js +2 -0
  55. package/dist/services/database/drive-folder/drive-folder.domain.d.ts +13 -0
  56. package/dist/services/database/drive-folder/drive-folder.domain.js +36 -0
  57. package/dist/services/database/drive-folder/drive-folder.model.d.ts +12 -0
  58. package/dist/services/database/drive-folder/drive-folder.model.js +56 -0
  59. package/dist/services/database/drive-folder/drive-folder.repository.d.ts +11 -0
  60. package/dist/services/database/drive-folder/drive-folder.repository.js +40 -0
  61. package/dist/services/drive/drive-file.service.d.ts +15 -0
  62. package/dist/services/drive/drive-file.service.js +51 -0
  63. package/dist/services/drive/drive-folder.service.d.ts +15 -0
  64. package/dist/services/drive/drive-folder.service.js +49 -0
  65. package/dist/services/drive/trash.service.d.ts +5 -0
  66. package/dist/services/drive/trash.service.js +12 -0
  67. package/dist/services/keys.service.d.ts +14 -0
  68. package/dist/services/keys.service.js +110 -0
  69. package/dist/services/network/download.service.d.ts +7 -0
  70. package/dist/services/network/download.service.js +33 -0
  71. package/dist/services/network/network-facade.service.d.ts +21 -0
  72. package/dist/services/network/network-facade.service.js +128 -0
  73. package/dist/services/network/upload.service.d.ts +9 -0
  74. package/dist/services/network/upload.service.js +20 -0
  75. package/dist/services/realms/drive-files.realm.d.ts +23 -0
  76. package/dist/services/realms/drive-files.realm.js +76 -0
  77. package/dist/services/realms/drive-folders.realm.d.ts +20 -0
  78. package/dist/services/realms/drive-folders.realm.js +68 -0
  79. package/dist/services/realms/drive-realm-manager.service.d.ts +15 -0
  80. package/dist/services/realms/drive-realm-manager.service.js +63 -0
  81. package/dist/services/sdk-manager.service.d.ts +28 -0
  82. package/dist/services/sdk-manager.service.js +107 -0
  83. package/dist/services/usage.service.d.ts +6 -0
  84. package/dist/services/usage.service.js +23 -0
  85. package/dist/services/validation.service.d.ts +7 -0
  86. package/dist/services/validation.service.js +21 -0
  87. package/dist/types/command.types.d.ts +42 -0
  88. package/dist/types/command.types.js +59 -0
  89. package/dist/types/config.types.d.ts +13 -0
  90. package/dist/types/config.types.js +2 -0
  91. package/dist/types/drive.types.d.ts +14 -0
  92. package/dist/types/drive.types.js +2 -0
  93. package/dist/types/keys.types.d.ts +16 -0
  94. package/dist/types/keys.types.js +31 -0
  95. package/dist/types/network.types.d.ts +11 -0
  96. package/dist/types/network.types.js +2 -0
  97. package/dist/types/webdav.types.d.ts +15 -0
  98. package/dist/types/webdav.types.js +6 -0
  99. package/dist/utils/cli.utils.d.ts +32 -0
  100. package/dist/utils/cli.utils.js +105 -0
  101. package/dist/utils/crypto.utils.d.ts +6 -0
  102. package/dist/utils/crypto.utils.js +10 -0
  103. package/dist/utils/drive.utils.d.ts +6 -0
  104. package/dist/utils/drive.utils.js +34 -0
  105. package/dist/utils/errors.utils.d.ts +19 -0
  106. package/dist/utils/errors.utils.js +50 -0
  107. package/dist/utils/format.utils.d.ts +6 -0
  108. package/dist/utils/format.utils.js +30 -0
  109. package/dist/utils/hash.utils.d.ts +15 -0
  110. package/dist/utils/hash.utils.js +37 -0
  111. package/dist/utils/logger.utils.d.ts +3 -0
  112. package/dist/utils/logger.utils.js +50 -0
  113. package/dist/utils/network.utils.d.ts +22 -0
  114. package/dist/utils/network.utils.js +49 -0
  115. package/dist/utils/pm2.utils.d.ts +10 -0
  116. package/dist/utils/pm2.utils.js +65 -0
  117. package/dist/utils/stream.utils.d.ts +7 -0
  118. package/dist/utils/stream.utils.js +56 -0
  119. package/dist/utils/webdav.utils.d.ts +7 -0
  120. package/dist/utils/webdav.utils.js +47 -0
  121. package/dist/utils/xml.utils.d.ts +8 -0
  122. package/dist/utils/xml.utils.js +23 -0
  123. package/dist/webdav/handlers/GET.handler.d.ts +23 -0
  124. package/dist/webdav/handlers/GET.handler.js +52 -0
  125. package/dist/webdav/handlers/HEAD.handler.d.ts +5 -0
  126. package/dist/webdav/handlers/HEAD.handler.js +9 -0
  127. package/dist/webdav/handlers/OPTIONS.handler.d.ts +5 -0
  128. package/dist/webdav/handlers/OPTIONS.handler.js +11 -0
  129. package/dist/webdav/handlers/PROPFIND.handler.d.ts +21 -0
  130. package/dist/webdav/handlers/PROPFIND.handler.js +234 -0
  131. package/dist/webdav/handlers/PUT.handler.d.ts +23 -0
  132. package/dist/webdav/handlers/PUT.handler.js +51 -0
  133. package/dist/webdav/index.d.ts +1 -0
  134. package/dist/webdav/index.js +30 -0
  135. package/dist/webdav/middewares/auth.middleware.d.ts +3 -0
  136. package/dist/webdav/middewares/auth.middleware.js +27 -0
  137. package/dist/webdav/middewares/errors.middleware.d.ts +2 -0
  138. package/dist/webdav/middewares/errors.middleware.js +20 -0
  139. package/dist/webdav/middewares/request-logger.middleware.d.ts +7 -0
  140. package/dist/webdav/middewares/request-logger.middleware.js +15 -0
  141. package/dist/webdav/webdav-server.d.ts +25 -0
  142. package/dist/webdav/webdav-server.js +98 -0
  143. package/oclif.manifest.json +593 -0
  144. package/package.json +122 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DriveFoldersRealm = exports.DriveFolderRealmSchema = void 0;
7
+ const realm_1 = __importDefault(require("realm"));
8
+ class DriveFolderRealmSchema extends realm_1.default.Object {
9
+ id;
10
+ name;
11
+ uuid;
12
+ relative_path;
13
+ parent_id;
14
+ created_at;
15
+ updated_at;
16
+ status;
17
+ static schema = {
18
+ name: 'DriveFolder',
19
+ properties: {
20
+ id: 'int',
21
+ name: 'string',
22
+ uuid: { type: 'string', indexed: true },
23
+ relative_path: { type: 'string', indexed: true },
24
+ parent_id: { type: 'int', indexed: true, default: -1 },
25
+ created_at: 'date',
26
+ updated_at: 'date',
27
+ status: 'string',
28
+ },
29
+ primaryKey: 'id',
30
+ };
31
+ }
32
+ exports.DriveFolderRealmSchema = DriveFolderRealmSchema;
33
+ class DriveFoldersRealm {
34
+ realm;
35
+ constructor(realm) {
36
+ this.realm = realm;
37
+ }
38
+ findByRelativePath(relativePath) {
39
+ const object = this.realm
40
+ .objects('DriveFolder')
41
+ .filtered('relative_path = $0', relativePath)
42
+ .find((folder) => folder.relative_path === relativePath);
43
+ return object ?? null;
44
+ }
45
+ findByParentId(parentId) {
46
+ const parentFolder = this.realm.objectForPrimaryKey('DriveFolder', parentId ?? -1);
47
+ return parentFolder;
48
+ }
49
+ createOrReplace(driveFolder, relativePath) {
50
+ const existingObject = this.realm.objectForPrimaryKey('DriveFolder', driveFolder.id);
51
+ this.realm.write(() => {
52
+ if (existingObject) {
53
+ this.realm.delete(existingObject);
54
+ }
55
+ this.realm.create('DriveFolder', {
56
+ id: driveFolder.id,
57
+ name: driveFolder.name,
58
+ uuid: driveFolder.uuid,
59
+ parent_id: driveFolder.parentId ?? -1,
60
+ created_at: driveFolder.createdAt,
61
+ updated_at: driveFolder.updatedAt,
62
+ status: 'EXISTS',
63
+ relative_path: relativePath,
64
+ });
65
+ });
66
+ }
67
+ }
68
+ exports.DriveFoldersRealm = DriveFoldersRealm;
@@ -0,0 +1,15 @@
1
+ import { DriveFileItem, DriveFolderItem } from '../../types/drive.types';
2
+ import { DriveFileRealmSchema, DriveFilesRealm } from './drive-files.realm';
3
+ import { DriveFolderRealmSchema, DriveFoldersRealm } from './drive-folders.realm';
4
+ import Realm from 'realm';
5
+ export declare class DriveRealmManager {
6
+ private driveFilesRealm;
7
+ private driveFoldersRealm;
8
+ constructor(driveFilesRealm: DriveFilesRealm, driveFoldersRealm: DriveFoldersRealm);
9
+ static getRealm(): Realm.ProgressRealmPromise;
10
+ findByRelativePath(relativePath: string): DriveFolderRealmSchema | DriveFileRealmSchema | null;
11
+ createFolder(driveFolder: DriveFolderItem): void;
12
+ createFile(driveFile: DriveFileItem): void;
13
+ buildRelativePathForFile(fileName: string, parentId: number | null): string;
14
+ buildRelativePathForFolder(folderName: string, parentId: number | null): string;
15
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DriveRealmManager = void 0;
7
+ const drive_files_realm_1 = require("./drive-files.realm");
8
+ const drive_folders_realm_1 = require("./drive-folders.realm");
9
+ const webdav_utils_1 = require("../../utils/webdav.utils");
10
+ const config_service_1 = require("../config.service");
11
+ const realm_1 = __importDefault(require("realm"));
12
+ class DriveRealmManager {
13
+ driveFilesRealm;
14
+ driveFoldersRealm;
15
+ constructor(driveFilesRealm, driveFoldersRealm) {
16
+ this.driveFilesRealm = driveFilesRealm;
17
+ this.driveFoldersRealm = driveFoldersRealm;
18
+ }
19
+ static getRealm() {
20
+ return realm_1.default.open({
21
+ path: config_service_1.ConfigService.DRIVE_REALM_FILE,
22
+ schema: [drive_files_realm_1.DriveFileRealmSchema, drive_folders_realm_1.DriveFolderRealmSchema],
23
+ deleteRealmIfMigrationNeeded: true,
24
+ });
25
+ }
26
+ findByRelativePath(relativePath) {
27
+ const driveFile = this.driveFilesRealm.findByRelativePath(relativePath);
28
+ if (driveFile)
29
+ return driveFile;
30
+ let folderRelativePath = relativePath;
31
+ if (!relativePath.endsWith('/'))
32
+ folderRelativePath = relativePath.concat('/');
33
+ const driveFolder = this.driveFoldersRealm.findByRelativePath(folderRelativePath);
34
+ if (driveFolder)
35
+ return driveFolder;
36
+ return null;
37
+ }
38
+ createFolder(driveFolder) {
39
+ const relativePath = this.buildRelativePathForFolder(driveFolder.name, driveFolder.parentId ?? null);
40
+ return this.driveFoldersRealm.createOrReplace(driveFolder, relativePath);
41
+ }
42
+ createFile(driveFile) {
43
+ const relativePath = this.buildRelativePathForFile(driveFile.type ? `${driveFile.name}.${driveFile.type}` : driveFile.name, driveFile.folderId);
44
+ return this.driveFilesRealm.createOrReplace(driveFile, relativePath);
45
+ }
46
+ buildRelativePathForFile(fileName, parentId) {
47
+ const parentFolder = this.driveFoldersRealm.findByParentId(parentId);
48
+ if (!parentFolder) {
49
+ return webdav_utils_1.WebDavUtils.joinURL('/', fileName);
50
+ }
51
+ const parentPath = this.buildRelativePathForFile(parentFolder.name, parentFolder.parent_id ?? null);
52
+ return webdav_utils_1.WebDavUtils.joinURL(parentPath, fileName);
53
+ }
54
+ buildRelativePathForFolder(folderName, parentId) {
55
+ const parentFolder = this.driveFoldersRealm.findByParentId(parentId);
56
+ if (!parentFolder) {
57
+ return webdav_utils_1.WebDavUtils.joinURL('/', folderName, '/');
58
+ }
59
+ const parentPath = this.buildRelativePathForFolder(parentFolder.name, parentFolder.parent_id ?? null);
60
+ return webdav_utils_1.WebDavUtils.joinURL(parentPath, folderName, '/');
61
+ }
62
+ }
63
+ exports.DriveRealmManager = DriveRealmManager;
@@ -0,0 +1,28 @@
1
+ import { Auth, Drive, photos, Network as NetworkModule } from '@internxt/sdk';
2
+ import { ApiSecurity, AppDetails } from '@internxt/sdk/dist/shared';
3
+ export type SdkManagerApiSecurity = ApiSecurity & {
4
+ newToken: string;
5
+ };
6
+ export declare class SdkManager {
7
+ static readonly instance: SdkManager;
8
+ private static apiSecurity?;
9
+ static readonly init: (apiSecurity: SdkManagerApiSecurity) => void;
10
+ static readonly clean: () => void;
11
+ static readonly getApiSecurity: (config?: {
12
+ throwErrorOnMissingCredentials: boolean;
13
+ }) => SdkManagerApiSecurity;
14
+ static readonly getAppDetails: () => AppDetails;
15
+ getAuthV2(): Auth;
16
+ getAuth(): Auth;
17
+ getPayments(): Drive.Payments;
18
+ getUsers(): Drive.Users;
19
+ getReferrals(): Drive.Referrals;
20
+ getStorage(useNewApi?: boolean): Drive.Storage;
21
+ getTrash(): Drive.Trash;
22
+ getPhotos(): photos.Photos;
23
+ getShare(): Drive.Share;
24
+ getNetwork(credentials: {
25
+ user: string;
26
+ pass: string;
27
+ }): NetworkModule.Network;
28
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SdkManager = void 0;
7
+ const sdk_1 = require("@internxt/sdk");
8
+ const drive_1 = require("@internxt/sdk/dist/drive");
9
+ const config_service_1 = require("./config.service");
10
+ const package_json_1 = __importDefault(require("../../package.json"));
11
+ const network_utils_1 = require("../utils/network.utils");
12
+ class SdkManager {
13
+ static instance = new SdkManager();
14
+ static apiSecurity;
15
+ static init = (apiSecurity) => {
16
+ SdkManager.apiSecurity = apiSecurity;
17
+ };
18
+ static clean = () => {
19
+ SdkManager.apiSecurity = undefined;
20
+ };
21
+ static getApiSecurity = (config = { throwErrorOnMissingCredentials: true }) => {
22
+ if (!SdkManager.apiSecurity && config.throwErrorOnMissingCredentials)
23
+ throw new Error('Api security properties not found in SdkManager');
24
+ return SdkManager.apiSecurity;
25
+ };
26
+ static getAppDetails = () => {
27
+ return {
28
+ clientName: package_json_1.default.name,
29
+ clientVersion: package_json_1.default.version,
30
+ };
31
+ };
32
+ getAuthV2() {
33
+ const DRIVE_NEW_API_URL = config_service_1.ConfigService.instance.get('DRIVE_NEW_API_URL');
34
+ const apiSecurity = SdkManager.getApiSecurity({ throwErrorOnMissingCredentials: false });
35
+ const appDetails = SdkManager.getAppDetails();
36
+ return sdk_1.Auth.client(DRIVE_NEW_API_URL, appDetails, apiSecurity);
37
+ }
38
+ getAuth() {
39
+ const DRIVE_API_URL = config_service_1.ConfigService.instance.get('DRIVE_API_URL');
40
+ const apiSecurity = SdkManager.getApiSecurity({ throwErrorOnMissingCredentials: false });
41
+ const appDetails = SdkManager.getAppDetails();
42
+ return sdk_1.Auth.client(DRIVE_API_URL, appDetails, apiSecurity);
43
+ }
44
+ getPayments() {
45
+ const PAYMENTS_API_URL = config_service_1.ConfigService.instance.get('PAYMENTS_API_URL');
46
+ const newToken = SdkManager.getApiSecurity().newToken;
47
+ const appDetails = SdkManager.getAppDetails();
48
+ return sdk_1.Drive.Payments.client(PAYMENTS_API_URL, appDetails, {
49
+ token: newToken,
50
+ });
51
+ }
52
+ getUsers() {
53
+ const DRIVE_API_URL = config_service_1.ConfigService.instance.get('DRIVE_API_URL');
54
+ const apiSecurity = SdkManager.getApiSecurity({ throwErrorOnMissingCredentials: false });
55
+ const appDetails = SdkManager.getAppDetails();
56
+ return sdk_1.Drive.Users.client(DRIVE_API_URL, appDetails, apiSecurity);
57
+ }
58
+ getReferrals() {
59
+ const DRIVE_API_URL = config_service_1.ConfigService.instance.get('DRIVE_API_URL');
60
+ const apiSecurity = SdkManager.getApiSecurity();
61
+ const appDetails = SdkManager.getAppDetails();
62
+ return sdk_1.Drive.Referrals.client(DRIVE_API_URL, appDetails, apiSecurity);
63
+ }
64
+ getStorage(useNewApi = false) {
65
+ const DRIVE_API_URL = useNewApi
66
+ ? config_service_1.ConfigService.instance.get('DRIVE_NEW_API_URL')
67
+ : config_service_1.ConfigService.instance.get('DRIVE_API_URL');
68
+ const apiSecurity = SdkManager.getApiSecurity();
69
+ const appDetails = SdkManager.getAppDetails();
70
+ return sdk_1.Drive.Storage.client(DRIVE_API_URL, appDetails, {
71
+ token: useNewApi ? apiSecurity.newToken : apiSecurity.token,
72
+ });
73
+ }
74
+ getTrash() {
75
+ const DRIVE_NEW_API_URL = config_service_1.ConfigService.instance.get('DRIVE_NEW_API_URL');
76
+ const newToken = SdkManager.getApiSecurity().newToken;
77
+ const appDetails = SdkManager.getAppDetails();
78
+ return drive_1.Trash.client(DRIVE_NEW_API_URL, appDetails, {
79
+ token: newToken,
80
+ });
81
+ }
82
+ getPhotos() {
83
+ const PHOTOS_API_URL = config_service_1.ConfigService.instance.get('PHOTOS_API_URL');
84
+ const newToken = SdkManager.getApiSecurity().newToken;
85
+ return new sdk_1.photos.Photos(PHOTOS_API_URL, newToken);
86
+ }
87
+ getShare() {
88
+ const DRIVE_NEW_API_URL = config_service_1.ConfigService.instance.get('DRIVE_NEW_API_URL');
89
+ const newToken = SdkManager.getApiSecurity().newToken;
90
+ const appDetails = SdkManager.getAppDetails();
91
+ return sdk_1.Drive.Share.client(DRIVE_NEW_API_URL, appDetails, {
92
+ token: newToken,
93
+ });
94
+ }
95
+ getNetwork(credentials) {
96
+ const appDetails = SdkManager.getAppDetails();
97
+ const auth = network_utils_1.NetworkUtils.getAuthFromCredentials({
98
+ user: credentials.user,
99
+ pass: credentials.pass,
100
+ });
101
+ return sdk_1.Network.Network.client(config_service_1.ConfigService.instance.get('NETWORK_URL'), appDetails, {
102
+ bridgeUser: auth.username,
103
+ userId: auth.password,
104
+ });
105
+ }
106
+ }
107
+ exports.SdkManager = SdkManager;
@@ -0,0 +1,6 @@
1
+ export declare class UsageService {
2
+ static readonly instance: UsageService;
3
+ static readonly INFINITE_LIMIT: number;
4
+ fetchTotalUsage: () => Promise<number>;
5
+ fetchSpaceLimit: () => Promise<number>;
6
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsageService = void 0;
4
+ const sdk_manager_service_1 = require("./sdk-manager.service");
5
+ class UsageService {
6
+ static instance = new UsageService();
7
+ static INFINITE_LIMIT = 99 * Math.pow(1024, 4);
8
+ fetchTotalUsage = async () => {
9
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
10
+ const photosClient = sdk_manager_service_1.SdkManager.instance.getPhotos();
11
+ const [driveUsage, { usage: photosUsage }] = await Promise.all([
12
+ storageClient.spaceUsage(),
13
+ photosClient.photos.getUsage(),
14
+ ]);
15
+ return driveUsage.total + photosUsage;
16
+ };
17
+ fetchSpaceLimit = async () => {
18
+ const storageClient = sdk_manager_service_1.SdkManager.instance.getStorage();
19
+ const spaceLimit = await storageClient.spaceLimit();
20
+ return spaceLimit.maxSpaceBytes;
21
+ };
22
+ }
23
+ exports.UsageService = UsageService;
@@ -0,0 +1,7 @@
1
+ export declare class ValidationService {
2
+ static readonly instance: ValidationService;
3
+ validateEmail: (email: string) => boolean;
4
+ validate2FA: (code: string) => boolean;
5
+ validateMnemonic: (mnemonic: string) => boolean;
6
+ validateUUIDv4: (uuid: string) => boolean;
7
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationService = void 0;
4
+ const lib_1 = require("@internxt/lib");
5
+ const bip39_1 = require("bip39");
6
+ class ValidationService {
7
+ static instance = new ValidationService();
8
+ validateEmail = (email) => {
9
+ return lib_1.auth.isValidEmail(email);
10
+ };
11
+ validate2FA = (code) => {
12
+ return /^\d{6}$/.test(code);
13
+ };
14
+ validateMnemonic = (mnemonic) => {
15
+ return (0, bip39_1.validateMnemonic)(mnemonic);
16
+ };
17
+ validateUUIDv4 = (uuid) => {
18
+ 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);
19
+ };
20
+ }
21
+ exports.ValidationService = ValidationService;
@@ -0,0 +1,42 @@
1
+ import { UserSettings } from '@internxt/sdk/dist/shared/types/userSettings';
2
+ export interface LoginCredentials {
3
+ user: UserSettings;
4
+ token: string;
5
+ newToken: string;
6
+ mnemonic: string;
7
+ }
8
+ export interface CLICredentials extends LoginCredentials {
9
+ root_folder_uuid: string;
10
+ }
11
+ export declare class NotValidEmailError extends Error {
12
+ constructor();
13
+ }
14
+ export declare class EmptyPasswordError extends Error {
15
+ constructor();
16
+ }
17
+ export declare class NotValidTwoFactorCodeError extends Error {
18
+ constructor();
19
+ }
20
+ export declare class NotValidFolderUuidError extends Error {
21
+ constructor();
22
+ }
23
+ export declare class NotValidItemUuidError extends Error {
24
+ constructor();
25
+ }
26
+ export declare class ItemNotFoundError extends Error {
27
+ constructor();
28
+ }
29
+ export declare class NoRootFolderIdFoundError extends Error {
30
+ constructor();
31
+ }
32
+ export declare class MissingCredentialsError extends Error {
33
+ constructor();
34
+ }
35
+ export type PaginatedItem = {
36
+ plainName: string;
37
+ uuid: string;
38
+ isFolder: boolean;
39
+ type: string;
40
+ size: bigint;
41
+ updatedAt: Date;
42
+ };
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MissingCredentialsError = exports.NoRootFolderIdFoundError = exports.ItemNotFoundError = exports.NotValidItemUuidError = exports.NotValidFolderUuidError = exports.NotValidTwoFactorCodeError = exports.EmptyPasswordError = exports.NotValidEmailError = void 0;
4
+ class NotValidEmailError extends Error {
5
+ constructor() {
6
+ super('Email is not valid');
7
+ Object.setPrototypeOf(this, NotValidEmailError.prototype);
8
+ }
9
+ }
10
+ exports.NotValidEmailError = NotValidEmailError;
11
+ class EmptyPasswordError extends Error {
12
+ constructor() {
13
+ super('Password can not be empty');
14
+ Object.setPrototypeOf(this, EmptyPasswordError.prototype);
15
+ }
16
+ }
17
+ exports.EmptyPasswordError = EmptyPasswordError;
18
+ class NotValidTwoFactorCodeError extends Error {
19
+ constructor() {
20
+ super('Two factor auth code is not valid (it must be 6 digit long)');
21
+ Object.setPrototypeOf(this, NotValidTwoFactorCodeError.prototype);
22
+ }
23
+ }
24
+ exports.NotValidTwoFactorCodeError = NotValidTwoFactorCodeError;
25
+ class NotValidFolderUuidError extends Error {
26
+ constructor() {
27
+ super('Folder UUID is not valid (it must be a valid v4 UUID)');
28
+ Object.setPrototypeOf(this, NotValidFolderUuidError.prototype);
29
+ }
30
+ }
31
+ exports.NotValidFolderUuidError = NotValidFolderUuidError;
32
+ class NotValidItemUuidError extends Error {
33
+ constructor() {
34
+ super('Item UUID is not valid (it must be a valid v4 UUID)');
35
+ Object.setPrototypeOf(this, NotValidItemUuidError.prototype);
36
+ }
37
+ }
38
+ exports.NotValidItemUuidError = NotValidItemUuidError;
39
+ class ItemNotFoundError extends Error {
40
+ constructor() {
41
+ super('Item not found');
42
+ Object.setPrototypeOf(this, ItemNotFoundError.prototype);
43
+ }
44
+ }
45
+ exports.ItemNotFoundError = ItemNotFoundError;
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
+ class MissingCredentialsError extends Error {
54
+ constructor() {
55
+ super('Missing credentials, login first');
56
+ Object.setPrototypeOf(this, MissingCredentialsError.prototype);
57
+ }
58
+ }
59
+ exports.MissingCredentialsError = MissingCredentialsError;
@@ -0,0 +1,13 @@
1
+ export interface ConfigKeys {
2
+ readonly DRIVE_URL: string;
3
+ readonly DRIVE_API_URL: string;
4
+ readonly DRIVE_NEW_API_URL: string;
5
+ readonly PAYMENTS_API_URL: string;
6
+ readonly PHOTOS_API_URL: string;
7
+ readonly APP_CRYPTO_SECRET: string;
8
+ readonly APP_CRYPTO_SECRET2: string;
9
+ readonly APP_MAGIC_IV: string;
10
+ readonly APP_MAGIC_SALT: string;
11
+ readonly NETWORK_URL: string;
12
+ readonly WEBDAV_SERVER_PORT: string;
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { DriveFileData, DriveFolderData } from '@internxt/sdk/dist/drive/storage/types';
2
+ export type DriveFileItem = Pick<DriveFileData, 'name' | 'bucket' | 'fileId' | 'id' | 'uuid' | 'folderId' | 'status'> & {
3
+ encryptedName: string;
4
+ size: number;
5
+ createdAt: Date;
6
+ updatedAt: Date;
7
+ type?: string;
8
+ };
9
+ export type DriveFolderItem = Pick<DriveFolderData, 'name' | 'bucket' | 'id' | 'parentId'> & {
10
+ encryptedName: string;
11
+ uuid: string;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ export declare class BadEncodedPrivateKeyError extends Error {
2
+ constructor();
3
+ }
4
+ export declare class WrongIterationsToEncryptPrivateKeyError extends Error {
5
+ constructor();
6
+ }
7
+ export declare class CorruptedEncryptedPrivateKeyError extends Error {
8
+ constructor();
9
+ }
10
+ export declare class KeysDoNotMatchError extends Error {
11
+ constructor();
12
+ }
13
+ export interface AesInit {
14
+ iv: string;
15
+ salt: string;
16
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeysDoNotMatchError = exports.CorruptedEncryptedPrivateKeyError = exports.WrongIterationsToEncryptPrivateKeyError = exports.BadEncodedPrivateKeyError = void 0;
4
+ class BadEncodedPrivateKeyError extends Error {
5
+ constructor() {
6
+ super('Private key is bad encoded');
7
+ Object.setPrototypeOf(this, BadEncodedPrivateKeyError.prototype);
8
+ }
9
+ }
10
+ exports.BadEncodedPrivateKeyError = BadEncodedPrivateKeyError;
11
+ class WrongIterationsToEncryptPrivateKeyError extends Error {
12
+ constructor() {
13
+ super('Private key was encrypted using the wrong iterations number');
14
+ Object.setPrototypeOf(this, WrongIterationsToEncryptPrivateKeyError.prototype);
15
+ }
16
+ }
17
+ exports.WrongIterationsToEncryptPrivateKeyError = WrongIterationsToEncryptPrivateKeyError;
18
+ class CorruptedEncryptedPrivateKeyError extends Error {
19
+ constructor() {
20
+ super('Private key is corrupted');
21
+ Object.setPrototypeOf(this, CorruptedEncryptedPrivateKeyError.prototype);
22
+ }
23
+ }
24
+ exports.CorruptedEncryptedPrivateKeyError = CorruptedEncryptedPrivateKeyError;
25
+ class KeysDoNotMatchError extends Error {
26
+ constructor() {
27
+ super('Keys do not match');
28
+ Object.setPrototypeOf(this, KeysDoNotMatchError.prototype);
29
+ }
30
+ }
31
+ exports.KeysDoNotMatchError = KeysDoNotMatchError;
@@ -0,0 +1,11 @@
1
+ export interface NetworkCredentials {
2
+ user: string;
3
+ pass: string;
4
+ }
5
+ export type UploadProgressCallback = (progress: number) => void;
6
+ export interface NetworkOperationBaseOptions {
7
+ progressCallback: UploadProgressCallback;
8
+ abortController?: AbortController;
9
+ }
10
+ export type UploadOptions = NetworkOperationBaseOptions;
11
+ export type DownloadOptions = NetworkOperationBaseOptions;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ import { Request, Response } from 'express';
3
+ import { ParsedPath } from 'path';
4
+ export declare abstract class WebDavMethodHandler {
5
+ abstract handle(request: Request, response: Response): Promise<void>;
6
+ }
7
+ export type WebDavMethodHandlerOptions = {
8
+ debug: boolean;
9
+ };
10
+ export type WebDavRequestedResource = {
11
+ type: 'file' | 'folder';
12
+ url: string;
13
+ name: string;
14
+ path: ParsedPath;
15
+ };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebDavMethodHandler = void 0;
4
+ class WebDavMethodHandler {
5
+ }
6
+ exports.WebDavMethodHandler = WebDavMethodHandler;
@@ -0,0 +1,32 @@
1
+ import { ux } from '@oclif/core';
2
+ export declare class CLIUtils {
3
+ static clearPreviousLine(): void;
4
+ static warning(message: string): void;
5
+ static error(message: string): void;
6
+ static doing(message: string): void;
7
+ static success(message: string): void;
8
+ static done(): void;
9
+ static readonly CommonFlags: {
10
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ static readonly getValueFromFlag: (flag: {
13
+ value?: string;
14
+ name: string;
15
+ error: Error;
16
+ canBeEmpty?: boolean;
17
+ }, nonInteractive: boolean, validate: (value: string) => boolean) => string | undefined;
18
+ static readonly promptWithAttempts: (prompt: {
19
+ message: string;
20
+ options?: ux.IPromptOptions;
21
+ error: Error;
22
+ }, maxAttempts: number, validate: (value: string) => boolean) => Promise<string>;
23
+ static timer(): {
24
+ stop: () => number;
25
+ };
26
+ static readonly prompt: (prompt: {
27
+ message: string;
28
+ options?: ux.IPromptOptions;
29
+ error: Error;
30
+ }, validate?: ((value: string) => boolean) | undefined) => Promise<string>;
31
+ static readonly parseEmpty: (input: string) => Promise<string>;
32
+ }