@internxt/cli 1.5.2 → 1.5.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.
- package/.env +2 -6
- package/README.md +46 -26
- package/bin/dev.js +1 -1
- package/bin/run.js +1 -1
- package/dist/commands/add-cert.d.ts +1 -1
- package/dist/commands/add-cert.js +23 -23
- package/dist/commands/config.js +8 -3
- package/dist/commands/create-folder.js +11 -6
- package/dist/commands/delete-permanently-file.js +9 -4
- package/dist/commands/delete-permanently-folder.js +9 -4
- package/dist/commands/download-file.js +21 -16
- package/dist/commands/list.js +8 -3
- package/dist/commands/login.js +8 -3
- package/dist/commands/logout.js +10 -3
- package/dist/commands/logs.js +8 -3
- package/dist/commands/move-file.js +8 -3
- package/dist/commands/move-folder.js +8 -3
- package/dist/commands/rename-file.js +8 -3
- package/dist/commands/rename-folder.js +8 -3
- package/dist/commands/trash-clear.js +8 -3
- package/dist/commands/trash-file.js +8 -3
- package/dist/commands/trash-folder.js +8 -3
- package/dist/commands/trash-list.js +8 -3
- package/dist/commands/trash-restore-file.js +8 -3
- package/dist/commands/trash-restore-folder.js +8 -3
- package/dist/commands/upload-file.js +17 -11
- package/dist/commands/webdav-config.js +8 -3
- package/dist/commands/webdav.js +22 -22
- package/dist/commands/whoami.js +8 -3
- package/dist/hooks/prerun/auth_check.js +13 -7
- package/dist/services/auth.service.d.ts +1 -0
- package/dist/services/auth.service.js +13 -1
- package/dist/services/crypto.service.d.ts +1 -1
- package/dist/services/crypto.service.js +2 -2
- package/dist/services/drive/drive-file.service.d.ts +1 -1
- package/dist/services/drive/drive-file.service.js +7 -7
- package/dist/services/drive/drive-folder.service.js +7 -7
- package/dist/services/drive/trash.service.d.ts +6 -4
- package/dist/services/drive/trash.service.js +6 -6
- package/dist/services/sdk-manager.service.d.ts +3 -5
- package/dist/services/sdk-manager.service.js +14 -34
- package/dist/services/thumbnail.service.d.ts +2 -2
- package/dist/services/thumbnail.service.js +6 -6
- package/dist/services/usage.service.d.ts +2 -2
- package/dist/services/usage.service.js +2 -2
- package/dist/types/config.types.d.ts +1 -4
- package/dist/utils/cli.utils.d.ts +13 -4
- package/dist/utils/cli.utils.js +44 -10
- package/dist/utils/pm2.utils.d.ts +1 -1
- package/dist/utils/thumbnail.utils.js +3 -3
- package/dist/utils/webdav.utils.d.ts +2 -3
- package/dist/utils/webdav.utils.js +6 -18
- package/dist/utils/xml.utils.d.ts +1 -1
- package/dist/utils/xml.utils.js +3 -3
- package/dist/webdav/handlers/DELETE.handler.js +5 -1
- package/dist/webdav/handlers/GET.handler.js +6 -2
- package/dist/webdav/handlers/HEAD.handler.js +7 -2
- package/dist/webdav/handlers/MKCOL.handler.js +10 -8
- package/dist/webdav/handlers/MOVE.handler.js +10 -3
- package/dist/webdav/handlers/OPTIONS.handler.js +2 -5
- package/dist/webdav/handlers/PROPFIND.handler.js +31 -21
- package/dist/webdav/handlers/PUT.handler.js +8 -4
- package/dist/webdav/index.js +1 -1
- package/dist/webdav/middewares/auth.middleware.js +10 -2
- package/dist/webdav/middewares/errors.middleware.js +8 -13
- package/dist/webdav/webdav-server.d.ts +2 -1
- package/dist/webdav/webdav-server.js +6 -3
- package/oclif.manifest.json +1 -1
- package/package.json +29 -28
- package/scripts/restart-webdav.js +2 -1
|
@@ -16,17 +16,19 @@ class MKCOLRequestHandler {
|
|
|
16
16
|
const resource = await webdav_utils_1.WebDavUtils.getRequestedResource(req);
|
|
17
17
|
logger_utils_1.webdavLogger.info(`[MKCOL] Request received for ${resource.type} at ${resource.url}`);
|
|
18
18
|
const parentResource = await webdav_utils_1.WebDavUtils.getRequestedResource(resource.parentPath, false);
|
|
19
|
-
const
|
|
19
|
+
const parentDriveItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
20
20
|
resource: parentResource,
|
|
21
21
|
driveFolderService,
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
await driveFolderService.getFolderMetadataByPath(resource.url);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
folderAlreadyExists = false;
|
|
22
|
+
});
|
|
23
|
+
if (!parentDriveItem) {
|
|
24
|
+
throw new errors_utils_1.ConflictError(`Parent folders not found on Internxt Drive at ${resource.url}`);
|
|
29
25
|
}
|
|
26
|
+
const parentFolderItem = parentDriveItem;
|
|
27
|
+
const driveFolderItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
28
|
+
resource,
|
|
29
|
+
driveFolderService,
|
|
30
|
+
});
|
|
31
|
+
const folderAlreadyExists = !!driveFolderItem;
|
|
30
32
|
if (folderAlreadyExists) {
|
|
31
33
|
logger_utils_1.webdavLogger.info(`[MKCOL] ❌ Folder '${resource.url}' already exists`);
|
|
32
34
|
throw new errors_utils_1.MethodNotAllowed('Folder already exists');
|
|
@@ -20,11 +20,14 @@ class MOVERequestHandler {
|
|
|
20
20
|
const destinationPath = webdav_utils_1.WebDavUtils.removeHostFromURL(destinationUrl);
|
|
21
21
|
const destinationResource = await webdav_utils_1.WebDavUtils.getRequestedResource(destinationPath);
|
|
22
22
|
logger_utils_1.webdavLogger.info('[MOVE] Destination resource found', { destinationResource });
|
|
23
|
-
const originalDriveItem = await webdav_utils_1.WebDavUtils.
|
|
23
|
+
const originalDriveItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
24
24
|
resource,
|
|
25
25
|
driveFolderService,
|
|
26
26
|
driveFileService,
|
|
27
27
|
});
|
|
28
|
+
if (!originalDriveItem) {
|
|
29
|
+
throw new errors_utils_1.NotFoundError(`Resource not found on Internxt Drive at ${resource.url}`);
|
|
30
|
+
}
|
|
28
31
|
if (destinationResource.path.dir === resource.path.dir) {
|
|
29
32
|
logger_utils_1.webdavLogger.info(`[MOVE] Renaming ${resource.type} with UUID ${originalDriveItem.uuid} to ${destinationResource.name}`);
|
|
30
33
|
const newName = destinationResource.name;
|
|
@@ -47,10 +50,14 @@ class MOVERequestHandler {
|
|
|
47
50
|
else {
|
|
48
51
|
logger_utils_1.webdavLogger.info(`[MOVE] Moving ${resource.type} with UUID ${originalDriveItem.uuid} to ${destinationPath}`);
|
|
49
52
|
const destinationFolderResource = await webdav_utils_1.WebDavUtils.getRequestedResource(destinationResource.parentPath);
|
|
50
|
-
const
|
|
53
|
+
const destinationDriveFolderItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
51
54
|
resource: destinationFolderResource,
|
|
52
55
|
driveFolderService,
|
|
53
|
-
})
|
|
56
|
+
});
|
|
57
|
+
if (!destinationDriveFolderItem) {
|
|
58
|
+
throw new errors_utils_1.NotFoundError(`Resource not found on Internxt Drive at ${resource.url}`);
|
|
59
|
+
}
|
|
60
|
+
const destinationFolderItem = destinationDriveFolderItem;
|
|
54
61
|
if (resource.type === 'folder') {
|
|
55
62
|
const folder = originalDriveItem;
|
|
56
63
|
await driveFolderService.moveFolder({
|
|
@@ -13,23 +13,20 @@ class OPTIONSRequestHandler {
|
|
|
13
13
|
res.header('Allow', 'DELETE, GET, HEAD, MKCOL, MOVE, OPTIONS, PROPFIND, PUT');
|
|
14
14
|
res.header('DAV', '1, 2, ordered-collections');
|
|
15
15
|
res.status(200).send();
|
|
16
|
-
return;
|
|
17
16
|
}
|
|
18
|
-
if (resource.type === 'folder') {
|
|
17
|
+
else if (resource.type === 'folder') {
|
|
19
18
|
const allowedMethods = 'DELETE, HEAD, MKCOL, MOVE, OPTIONS, PROPFIND';
|
|
20
19
|
logger_utils_1.webdavLogger.info(`[OPTIONS] Returning Allowed Options: ${allowedMethods}`);
|
|
21
20
|
res.header('Allow', allowedMethods);
|
|
22
21
|
res.header('DAV', '1, 2, ordered-collections');
|
|
23
22
|
res.status(200).send();
|
|
24
|
-
return;
|
|
25
23
|
}
|
|
26
|
-
|
|
24
|
+
else {
|
|
27
25
|
const allowedMethods = 'DELETE, GET, HEAD, MOVE, OPTIONS, PROPFIND, PUT';
|
|
28
26
|
logger_utils_1.webdavLogger.info(`[OPTIONS] Returning Allowed Options: ${allowedMethods}`);
|
|
29
27
|
res.header('Allow', allowedMethods);
|
|
30
28
|
res.header('DAV', '1, 2, ordered-collections');
|
|
31
29
|
res.status(200).send();
|
|
32
|
-
return;
|
|
33
30
|
}
|
|
34
31
|
};
|
|
35
32
|
}
|
|
@@ -20,28 +20,38 @@ class PROPFINDRequestHandler {
|
|
|
20
20
|
const { driveFolderService, driveFileService } = this.dependencies;
|
|
21
21
|
const resource = await webdav_utils_1.WebDavUtils.getRequestedResource(req);
|
|
22
22
|
logger_utils_1.webdavLogger.info(`[PROPFIND] Request received for ${resource.type} at ${resource.url}`);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
const driveItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
24
|
+
resource,
|
|
25
|
+
driveFolderService,
|
|
26
|
+
driveFileService,
|
|
27
|
+
});
|
|
28
|
+
if (!driveItem) {
|
|
29
|
+
res.status(207).send(xml_utils_1.XMLUtils.toWebDavXML({
|
|
30
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('response')]: {
|
|
31
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('href')]: xml_utils_1.XMLUtils.encodeWebDavUri(resource.url),
|
|
32
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('propstat')]: {
|
|
33
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('status')]: 'HTTP/1.1 404 Not Found',
|
|
34
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('prop')]: {},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
}, {
|
|
38
|
+
ignoreAttributes: false,
|
|
39
|
+
suppressEmptyNode: true,
|
|
40
|
+
}));
|
|
41
|
+
return;
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
switch (resource.type) {
|
|
44
|
+
case 'file': {
|
|
45
|
+
const fileMetaXML = await this.getFileMetaXML(resource, driveItem);
|
|
46
|
+
res.status(207).send(fileMetaXML);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case 'folder': {
|
|
50
|
+
const depth = req.header('depth') ?? '1';
|
|
51
|
+
const folderMetaXML = await this.getFolderContentXML(resource, driveItem, depth);
|
|
52
|
+
res.status(207).send(folderMetaXML);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
45
55
|
}
|
|
46
56
|
};
|
|
47
57
|
getFileMetaXML = async (resource, driveFileItem) => {
|
|
@@ -27,12 +27,16 @@ class PUTRequestHandler {
|
|
|
27
27
|
logger_utils_1.webdavLogger.info(`[PUT] Request received for ${resource.type} at ${resource.url}`);
|
|
28
28
|
logger_utils_1.webdavLogger.info(`[PUT] Uploading '${resource.name}' to '${resource.parentPath}'`);
|
|
29
29
|
const parentResource = await webdav_utils_1.WebDavUtils.getRequestedResource(resource.parentPath, false);
|
|
30
|
-
const
|
|
30
|
+
const parentDriveFolderItem = await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
31
31
|
resource: parentResource,
|
|
32
32
|
driveFolderService,
|
|
33
|
-
})
|
|
33
|
+
});
|
|
34
|
+
if (!parentDriveFolderItem) {
|
|
35
|
+
throw new errors_utils_1.ConflictError(`Parent folders not found on Internxt Drive at ${resource.url}`);
|
|
36
|
+
}
|
|
37
|
+
const parentFolderItem = parentDriveFolderItem;
|
|
34
38
|
try {
|
|
35
|
-
const driveFileItem = (await webdav_utils_1.WebDavUtils.
|
|
39
|
+
const driveFileItem = (await webdav_utils_1.WebDavUtils.getDriveItemFromResource({
|
|
36
40
|
resource: resource,
|
|
37
41
|
driveFileService,
|
|
38
42
|
}));
|
|
@@ -93,7 +97,7 @@ class PUTRequestHandler {
|
|
|
93
97
|
if (isThumbnailable && bufferStream) {
|
|
94
98
|
const thumbnailBuffer = bufferStream.getBuffer();
|
|
95
99
|
if (thumbnailBuffer) {
|
|
96
|
-
await thumbnail_service_1.ThumbnailService.instance.uploadThumbnail(thumbnailBuffer, fileType, user.bucket, file.
|
|
100
|
+
await thumbnail_service_1.ThumbnailService.instance.uploadThumbnail(thumbnailBuffer, fileType, user.bucket, file.uuid, networkFacade);
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
}
|
package/dist/webdav/index.js
CHANGED
|
@@ -15,7 +15,7 @@ const crypto_service_1 = require("../services/crypto.service");
|
|
|
15
15
|
const trash_service_1 = require("../services/drive/trash.service");
|
|
16
16
|
const logger_utils_1 = require("../utils/logger.utils");
|
|
17
17
|
const sdk_manager_service_1 = require("../services/sdk-manager.service");
|
|
18
|
-
dotenv_1.default.config();
|
|
18
|
+
dotenv_1.default.config({ quiet: true });
|
|
19
19
|
const init = async () => {
|
|
20
20
|
await config_service_1.ConfigService.instance.ensureInternxtCliDataDirExists();
|
|
21
21
|
await config_service_1.ConfigService.instance.ensureWebdavCertsDirExists();
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AuthMiddleware = void 0;
|
|
4
4
|
const sdk_manager_service_1 = require("../../services/sdk-manager.service");
|
|
5
5
|
const logger_utils_1 = require("../../utils/logger.utils");
|
|
6
|
+
const xml_utils_1 = require("../../utils/xml.utils");
|
|
6
7
|
const AuthMiddleware = (authService) => {
|
|
7
8
|
return (req, res, next) => {
|
|
8
9
|
(async () => {
|
|
@@ -19,8 +20,15 @@ const AuthMiddleware = (authService) => {
|
|
|
19
20
|
next();
|
|
20
21
|
}
|
|
21
22
|
catch (error) {
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
let message = 'Authentication required to access this resource.';
|
|
24
|
+
if ('message' in error && error.message.trim().length > 0) {
|
|
25
|
+
message = error.message;
|
|
26
|
+
}
|
|
27
|
+
logger_utils_1.webdavLogger.error('Error from AuthMiddleware: ' + message);
|
|
28
|
+
const errorBodyXML = xml_utils_1.XMLUtils.toWebDavXML({
|
|
29
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('responsedescription')]: message,
|
|
30
|
+
}, {}, 'error');
|
|
31
|
+
res.status(401).send(errorBodyXML);
|
|
24
32
|
}
|
|
25
33
|
})();
|
|
26
34
|
};
|
|
@@ -2,21 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ErrorHandlingMiddleware = void 0;
|
|
4
4
|
const logger_utils_1 = require("../../utils/logger.utils");
|
|
5
|
+
const xml_utils_1 = require("../../utils/xml.utils");
|
|
5
6
|
const ErrorHandlingMiddleware = (err, req, res, _) => {
|
|
6
7
|
logger_utils_1.webdavLogger.error(`[ERROR MIDDLEWARE] [${req.method.toUpperCase()} - ${req.url}]`, err);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
res.status(500).send({
|
|
16
|
-
error: {
|
|
17
|
-
message: 'message' in err ? err.message : 'Something went wrong',
|
|
18
|
-
},
|
|
19
|
-
});
|
|
8
|
+
const errorBodyXML = xml_utils_1.XMLUtils.toWebDavXML({
|
|
9
|
+
[xml_utils_1.XMLUtils.addDefaultNamespace('responsedescription')]: 'message' in err ? err.message : 'Something went wrong',
|
|
10
|
+
}, {}, 'error');
|
|
11
|
+
let statusCode = 500;
|
|
12
|
+
if ('statusCode' in err && !isNaN(err.statusCode)) {
|
|
13
|
+
statusCode = err.statusCode;
|
|
20
14
|
}
|
|
15
|
+
res.status(statusCode).send(errorBodyXML);
|
|
21
16
|
};
|
|
22
17
|
exports.ErrorHandlingMiddleware = ErrorHandlingMiddleware;
|
|
@@ -17,7 +17,8 @@ export declare class WebDavServer {
|
|
|
17
17
|
private readonly trashService;
|
|
18
18
|
constructor(app: Express, configService: ConfigService, driveFileService: DriveFileService, driveFolderService: DriveFolderService, downloadService: DownloadService, authService: AuthService, cryptoService: CryptoService, trashService: TrashService);
|
|
19
19
|
private readonly getNetworkFacade;
|
|
20
|
-
private readonly
|
|
20
|
+
private readonly registerStartMiddlewares;
|
|
21
|
+
private readonly registerEndMiddleWares;
|
|
21
22
|
private readonly registerHandlers;
|
|
22
23
|
start: () => Promise<void>;
|
|
23
24
|
}
|
|
@@ -67,8 +67,7 @@ class WebDavServer {
|
|
|
67
67
|
const networkFacade = new network_facade_service_1.NetworkFacade(networkModule, environment, download_service_1.DownloadService.instance, crypto_service_1.CryptoService.instance);
|
|
68
68
|
return networkFacade;
|
|
69
69
|
};
|
|
70
|
-
|
|
71
|
-
this.app.use(errors_middleware_1.ErrorHandlingMiddleware);
|
|
70
|
+
registerStartMiddlewares = () => {
|
|
72
71
|
this.app.use((0, auth_middleware_1.AuthMiddleware)(auth_service_1.AuthService.instance));
|
|
73
72
|
this.app.use((0, request_logger_middleware_1.RequestLoggerMiddleware)({
|
|
74
73
|
enable: true,
|
|
@@ -76,6 +75,9 @@ class WebDavServer {
|
|
|
76
75
|
this.app.use(body_parser_1.default.text({ type: ['application/xml', 'text/xml'] }));
|
|
77
76
|
this.app.use(mkcol_middleware_1.MkcolMiddleware);
|
|
78
77
|
};
|
|
78
|
+
registerEndMiddleWares = () => {
|
|
79
|
+
this.app.use(errors_middleware_1.ErrorHandlingMiddleware);
|
|
80
|
+
};
|
|
79
81
|
registerHandlers = async () => {
|
|
80
82
|
const serverListenPath = /(.*)/;
|
|
81
83
|
const networkFacade = await this.getNetworkFacade();
|
|
@@ -119,8 +121,9 @@ class WebDavServer {
|
|
|
119
121
|
start = async () => {
|
|
120
122
|
const configs = await this.configService.readWebdavConfig();
|
|
121
123
|
this.app.disable('x-powered-by');
|
|
122
|
-
|
|
124
|
+
this.registerStartMiddlewares();
|
|
123
125
|
await this.registerHandlers();
|
|
126
|
+
this.registerEndMiddleWares();
|
|
124
127
|
const plainHttp = configs.protocol === 'http';
|
|
125
128
|
let server;
|
|
126
129
|
if (plainHttp) {
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Internxt <hello@internxt.com>",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.4",
|
|
4
4
|
"description": "Internxt CLI to manage your encrypted storage",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "yarn clean && tsc",
|
|
7
|
-
"clean": "rimraf dist tsconfig.tsbuildinfo oclif.manifest.json",
|
|
7
|
+
"clean": "rimraf dist coverage tsconfig.tsbuildinfo oclif.manifest.json",
|
|
8
8
|
"lint": "eslint .",
|
|
9
9
|
"pretty": "prettier --write **/*.{js,jsx,tsx,ts}",
|
|
10
10
|
"postpack": "rimraf oclif.manifest.json",
|
|
@@ -17,13 +17,14 @@
|
|
|
17
17
|
"dev:webdav": "nodemon -e ts --exec ts-node src/webdav/index.ts",
|
|
18
18
|
"pack:win": "oclif pack win",
|
|
19
19
|
"publish:npm": "npm run build && npm publish --scope=@internxt --registry=https://registry.npmjs.org/ --access public",
|
|
20
|
-
"publish:github": "npm run build && npm publish --scope=@internxt --registry=https://npm.pkg.github.com",
|
|
20
|
+
"publish:github": "npm run build && npm publish --scope=@internxt --registry=https://npm.pkg.github.com --tag latest",
|
|
21
21
|
"postinstall": "node ./scripts/restart-webdav.js"
|
|
22
22
|
},
|
|
23
23
|
"homepage": "https://github.com/internxt/cli",
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"main": "",
|
|
26
26
|
"name": "@internxt/cli",
|
|
27
|
+
"clientName": "internxt-cli",
|
|
27
28
|
"repository": "https://github.com/internxt/cli",
|
|
28
29
|
"bugs": "https://github.com/internxt/cli",
|
|
29
30
|
"types": "dist/index.d.ts",
|
|
@@ -35,61 +36,61 @@
|
|
|
35
36
|
"/oclif.manifest.json"
|
|
36
37
|
],
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@inquirer/prompts": "7.
|
|
39
|
-
"@internxt/inxt-js": "2.
|
|
40
|
-
"@internxt/lib": "1.
|
|
41
|
-
"@internxt/sdk": "1.
|
|
42
|
-
"@oclif/core": "4.
|
|
43
|
-
"@types/validator": "13.15.
|
|
39
|
+
"@inquirer/prompts": "7.6.0",
|
|
40
|
+
"@internxt/inxt-js": "2.2.2",
|
|
41
|
+
"@internxt/lib": "1.3.1",
|
|
42
|
+
"@internxt/sdk": "1.10.5",
|
|
43
|
+
"@oclif/core": "4.4.1",
|
|
44
|
+
"@types/validator": "13.15.2",
|
|
44
45
|
"async": "3.2.6",
|
|
45
|
-
"axios": "1.
|
|
46
|
+
"axios": "1.10.0",
|
|
46
47
|
"bip39": "3.1.0",
|
|
47
48
|
"body-parser": "2.2.0",
|
|
48
49
|
"cli-progress": "3.12.0",
|
|
49
50
|
"dayjs": "1.11.13",
|
|
50
|
-
"dotenv": "
|
|
51
|
+
"dotenv": "17.0.1",
|
|
51
52
|
"express": "5.1.0",
|
|
52
53
|
"express-async-handler": "1.2.0",
|
|
53
54
|
"express-basic-auth": "1.2.1",
|
|
54
|
-
"fast-xml-parser": "5.2.
|
|
55
|
+
"fast-xml-parser": "5.2.5",
|
|
55
56
|
"mime-types": "3.0.1",
|
|
56
|
-
"openpgp": "5.11.
|
|
57
|
-
"pm2": "6.0.
|
|
57
|
+
"openpgp": "5.11.3",
|
|
58
|
+
"pm2": "6.0.8",
|
|
58
59
|
"range-parser": "1.2.1",
|
|
59
60
|
"reflect-metadata": "0.2.2",
|
|
60
61
|
"selfsigned": "2.4.1",
|
|
61
|
-
"sharp": "0.34.
|
|
62
|
+
"sharp": "0.34.2",
|
|
62
63
|
"tty-table": "4.2.3",
|
|
63
64
|
"winston": "3.17.0"
|
|
64
65
|
},
|
|
65
66
|
"devDependencies": {
|
|
66
67
|
"@internxt/eslint-config-internxt": "2.0.0",
|
|
67
68
|
"@internxt/prettier-config": "internxt/prettier-config#v1.0.2",
|
|
68
|
-
"@oclif/test": "4.1.
|
|
69
|
+
"@oclif/test": "4.1.13",
|
|
69
70
|
"@openpgp/web-stream-tools": "0.0.11-patch-1",
|
|
70
71
|
"@types/async": "3.2.24",
|
|
71
72
|
"@types/cli-progress": "3.11.6",
|
|
72
|
-
"@types/express": "5.0.
|
|
73
|
-
"@types/mime-types": "
|
|
74
|
-
"@types/node": "22.
|
|
73
|
+
"@types/express": "5.0.3",
|
|
74
|
+
"@types/mime-types": "3.0.1",
|
|
75
|
+
"@types/node": "22.16.0",
|
|
75
76
|
"@types/range-parser": "1.2.7",
|
|
76
|
-
"@vitest/coverage-istanbul": "3.
|
|
77
|
-
"@vitest/spy": "3.
|
|
78
|
-
"eslint": "9.
|
|
77
|
+
"@vitest/coverage-istanbul": "3.2.4",
|
|
78
|
+
"@vitest/spy": "3.2.4",
|
|
79
|
+
"eslint": "9.30.1",
|
|
79
80
|
"husky": "9.1.7",
|
|
80
|
-
"lint-staged": "
|
|
81
|
-
"nock": "14.0.
|
|
81
|
+
"lint-staged": "16.1.2",
|
|
82
|
+
"nock": "14.0.5",
|
|
82
83
|
"nodemon": "3.1.10",
|
|
83
|
-
"oclif": "4.
|
|
84
|
-
"prettier": "3.
|
|
84
|
+
"oclif": "4.20.1",
|
|
85
|
+
"prettier": "3.6.2",
|
|
85
86
|
"rimraf": "6.0.1",
|
|
86
87
|
"ts-node": "10.9.2",
|
|
87
88
|
"typescript": "5.8.3",
|
|
88
|
-
"vitest": "3.
|
|
89
|
+
"vitest": "3.2.4",
|
|
89
90
|
"vitest-mock-express": "2.2.0"
|
|
90
91
|
},
|
|
91
92
|
"engines": {
|
|
92
|
-
"node": ">=
|
|
93
|
+
"node": ">=22.12.0"
|
|
93
94
|
},
|
|
94
95
|
"bin": {
|
|
95
96
|
"internxt": "./bin/run.js"
|