@remnawave/xtls-sdk 0.0.1 → 0.0.3
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/README.md +164 -53
- package/build/src/common/errors/handler/handler.errors.d.ts +23 -0
- package/build/src/common/errors/handler/handler.errors.d.ts.map +1 -0
- package/build/src/common/errors/handler/handler.errors.js +22 -0
- package/build/src/common/errors/handler/index.d.ts +2 -0
- package/build/src/common/errors/handler/index.d.ts.map +1 -0
- package/build/src/common/errors/handler/index.js +17 -0
- package/build/src/common/errors/index.d.ts +1 -0
- package/build/src/common/errors/index.d.ts.map +1 -1
- package/build/src/common/errors/index.js +1 -0
- package/build/src/common/utils/create-typed-message/create-typed-message.d.ts +5 -0
- package/build/src/common/utils/create-typed-message/create-typed-message.d.ts.map +1 -0
- package/build/src/common/utils/create-typed-message/create-typed-message.js +10 -0
- package/build/src/common/utils/decode-user/constants/account-types.d.ts +39 -0
- package/build/src/common/utils/decode-user/constants/account-types.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/constants/account-types.js +59 -0
- package/build/src/common/utils/decode-user/constants/index.d.ts +2 -0
- package/build/src/common/utils/decode-user/constants/index.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/constants/index.js +17 -0
- package/build/src/common/utils/decode-user/decode-user.d.ts +37 -0
- package/build/src/common/utils/decode-user/decode-user.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/decode-user.js +56 -0
- package/build/src/common/utils/decode-user/types/account-type-keys.type.d.ts +3 -0
- package/build/src/common/utils/decode-user/types/account-type-keys.type.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/types/account-type-keys.type.js +2 -0
- package/build/src/common/utils/decode-user/types/account-type-mapping.type.d.ts +4 -0
- package/build/src/common/utils/decode-user/types/account-type-mapping.type.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/types/account-type-mapping.type.js +2 -0
- package/build/src/common/utils/decode-user/types/decoded-user.type.d.ts +18 -0
- package/build/src/common/utils/decode-user/types/decoded-user.type.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/types/decoded-user.type.js +2 -0
- package/build/src/common/utils/decode-user/types/index.d.ts +4 -0
- package/build/src/common/utils/decode-user/types/index.d.ts.map +1 -0
- package/build/src/common/utils/decode-user/types/index.js +19 -0
- package/build/src/handler/handler.service.d.ts +108 -0
- package/build/src/handler/handler.service.d.ts.map +1 -1
- package/build/src/handler/handler.service.js +402 -0
- package/build/src/handler/interfaces/add-user/add-http-user.interface.d.ts +8 -0
- package/build/src/handler/interfaces/add-user/add-http-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-http-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks-user.interface.d.ts +10 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks2022-user.interface.d.ts +7 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks2022-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-shadowsocks2022-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/add-socks-user.interface.d.ts +8 -0
- package/build/src/handler/interfaces/add-user/add-socks-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-socks-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/add-trojan-user.interface.d.ts +7 -0
- package/build/src/handler/interfaces/add-user/add-trojan-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-trojan-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/add-vless-user.interface.d.ts +8 -0
- package/build/src/handler/interfaces/add-user/add-vless-user.interface.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/add-vless-user.interface.js +2 -0
- package/build/src/handler/interfaces/add-user/index.d.ts +7 -0
- package/build/src/handler/interfaces/add-user/index.d.ts.map +1 -0
- package/build/src/handler/interfaces/add-user/index.js +22 -0
- package/build/src/handler/interfaces/index.d.ts +2 -0
- package/build/src/handler/interfaces/index.d.ts.map +1 -0
- package/build/src/handler/interfaces/index.js +17 -0
- package/build/src/handler/models/add-user/add-user.response.model.d.ts +5 -0
- package/build/src/handler/models/add-user/add-user.response.model.d.ts.map +1 -0
- package/build/src/handler/models/add-user/add-user.response.model.js +9 -0
- package/build/src/handler/models/add-user/index.d.ts +2 -0
- package/build/src/handler/models/add-user/index.d.ts.map +1 -0
- package/build/src/handler/models/add-user/index.js +17 -0
- package/build/src/handler/models/get-inbound-users/get-inbound-users.response.model.d.ts +7 -0
- package/build/src/handler/models/get-inbound-users/get-inbound-users.response.model.d.ts.map +1 -0
- package/build/src/handler/models/get-inbound-users/get-inbound-users.response.model.js +10 -0
- package/build/src/handler/models/get-inbound-users/index.d.ts +2 -0
- package/build/src/handler/models/get-inbound-users/index.d.ts.map +1 -0
- package/build/src/handler/models/get-inbound-users/index.js +17 -0
- package/build/src/handler/models/index.d.ts +4 -0
- package/build/src/handler/models/index.d.ts.map +1 -0
- package/build/src/handler/models/index.js +19 -0
- package/build/src/handler/models/remove-user/index.d.ts +2 -0
- package/build/src/handler/models/remove-user/index.d.ts.map +1 -0
- package/build/src/handler/models/remove-user/index.js +17 -0
- package/build/src/handler/models/remove-user/remove-user.response.model.d.ts +5 -0
- package/build/src/handler/models/remove-user/remove-user.response.model.d.ts.map +1 -0
- package/build/src/handler/models/remove-user/remove-user.response.model.js +9 -0
- package/build/tests/stats.spec.d.ts +2 -0
- package/build/tests/stats.spec.d.ts.map +1 -0
- package/build/tests/stats.spec.js +86 -0
- package/package.json +43 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-vless-user.interface.d.ts","sourceRoot":"","sources":["../../../../../src/handler/interfaces/add-user/add-vless-user.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,GAAG,EAAE,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './add-trojan-user.interface';
|
|
2
|
+
export * from './add-vless-user.interface';
|
|
3
|
+
export * from './add-shadowsocks-user.interface';
|
|
4
|
+
export * from './add-shadowsocks2022-user.interface';
|
|
5
|
+
export * from './add-socks-user.interface';
|
|
6
|
+
export * from './add-http-user.interface';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handler/interfaces/add-user/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./add-trojan-user.interface"), exports);
|
|
18
|
+
__exportStar(require("./add-vless-user.interface"), exports);
|
|
19
|
+
__exportStar(require("./add-shadowsocks-user.interface"), exports);
|
|
20
|
+
__exportStar(require("./add-shadowsocks2022-user.interface"), exports);
|
|
21
|
+
__exportStar(require("./add-socks-user.interface"), exports);
|
|
22
|
+
__exportStar(require("./add-http-user.interface"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/handler/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./add-user"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-user.response.model.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/add-user/add-user.response.model.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IACtB,OAAO,EAAE,OAAO,CAAC;gBACZ,OAAO,EAAE,OAAO;CAG/B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddUserResponseModel = void 0;
|
|
4
|
+
class AddUserResponseModel {
|
|
5
|
+
constructor(isAdded) {
|
|
6
|
+
this.isAdded = isAdded;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.AddUserResponseModel = AddUserResponseModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/add-user/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./add-user.response.model"), exports);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DecodedUser } from '../../../common/utils/decode-user/types/decoded-user.type';
|
|
2
|
+
import { User } from '../../../xray-protos/common/protocol/user';
|
|
3
|
+
export declare class GetInboundUsersResponseModel {
|
|
4
|
+
users: DecodedUser[];
|
|
5
|
+
constructor(users: User[]);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=get-inbound-users.response.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-inbound-users.response.model.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/get-inbound-users/get-inbound-users.response.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AAExF,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AAEjE,qBAAa,4BAA4B;IAC9B,KAAK,EAAE,WAAW,EAAE,CAAC;gBAEhB,KAAK,EAAE,IAAI,EAAE;CAG5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetInboundUsersResponseModel = void 0;
|
|
4
|
+
const decode_user_1 = require("../../../common/utils/decode-user/decode-user");
|
|
5
|
+
class GetInboundUsersResponseModel {
|
|
6
|
+
constructor(users) {
|
|
7
|
+
this.users = users.map(decode_user_1.decodeUser);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.GetInboundUsersResponseModel = GetInboundUsersResponseModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/get-inbound-users/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./get-inbound-users.response.model"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/handler/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./get-inbound-users"), exports);
|
|
18
|
+
__exportStar(require("./add-user"), exports);
|
|
19
|
+
__exportStar(require("./remove-user"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/remove-user/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./remove-user.response.model"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-user.response.model.d.ts","sourceRoot":"","sources":["../../../../../src/handler/models/remove-user/remove-user.response.model.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAuB;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAC;gBAEvB,SAAS,EAAE,OAAO;CAGjC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoveUserResponseModel = void 0;
|
|
4
|
+
class RemoveUserResponseModel {
|
|
5
|
+
constructor(isDeleted) {
|
|
6
|
+
this.isDeleted = isDeleted;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.RemoveUserResponseModel = RemoveUserResponseModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.spec.d.ts","sourceRoot":"","sources":["../../tests/stats.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("../index");
|
|
4
|
+
describe('StatsService', () => {
|
|
5
|
+
const validIp = '127.0.0.1';
|
|
6
|
+
const validPort = '8080';
|
|
7
|
+
let api;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
api = new index_1.XtlsApi(validIp, validPort);
|
|
10
|
+
});
|
|
11
|
+
describe('System Stats', () => {
|
|
12
|
+
it('should get system stats', async () => {
|
|
13
|
+
const response = await api.stats.getSysStats();
|
|
14
|
+
expect(response.isOk).toBe(true);
|
|
15
|
+
if (response.isOk) {
|
|
16
|
+
expect(response.data).toBeDefined();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('User Stats', () => {
|
|
21
|
+
const testUsername = 'testUser';
|
|
22
|
+
it('should get all users stats', async () => {
|
|
23
|
+
const response = await api.stats.getAllUsersStats();
|
|
24
|
+
expect(response.isOk).toBe(true);
|
|
25
|
+
if (response.isOk) {
|
|
26
|
+
expect(Array.isArray(response.data?.users)).toBe(true);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
it('should get all users stats with reset', async () => {
|
|
30
|
+
const response = await api.stats.getAllUsersStats(true);
|
|
31
|
+
expect(response.isOk).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
it('should get specific user stats', async () => {
|
|
34
|
+
const response = await api.stats.getUserStats(testUsername);
|
|
35
|
+
expect(response.isOk).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('should get user online status', async () => {
|
|
38
|
+
const response = await api.stats.getUserOnlineStatus(testUsername);
|
|
39
|
+
expect(response.isOk).toBe(true);
|
|
40
|
+
if (response.isOk) {
|
|
41
|
+
expect(typeof response.data?.online).toBe('boolean');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('Inbound Stats', () => {
|
|
46
|
+
const testInbound = 'testInbound';
|
|
47
|
+
it('should get all inbounds stats', async () => {
|
|
48
|
+
const response = await api.stats.getAllInboundsStats();
|
|
49
|
+
expect(response.isOk).toBe(true);
|
|
50
|
+
if (response.isOk) {
|
|
51
|
+
expect(Array.isArray(response.data?.inbounds)).toBe(true);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
it('should get specific inbound stats', async () => {
|
|
55
|
+
const response = await api.stats.getInboundStats(testInbound);
|
|
56
|
+
expect(response.isOk).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
it('should get all inbounds stats with reset', async () => {
|
|
59
|
+
const response = await api.stats.getAllInboundsStats(true);
|
|
60
|
+
expect(response.isOk).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('Outbound Stats', () => {
|
|
64
|
+
const testOutbound = 'testOutbound';
|
|
65
|
+
it('should get all outbounds stats', async () => {
|
|
66
|
+
const response = await api.stats.getAllOutboundsStats();
|
|
67
|
+
expect(response.isOk).toBe(true);
|
|
68
|
+
if (response.isOk) {
|
|
69
|
+
expect(Array.isArray(response.data?.outbounds)).toBe(true);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
it('should get specific outbound stats', async () => {
|
|
73
|
+
const response = await api.stats.getOutboundStats(testOutbound);
|
|
74
|
+
expect(response.isOk).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it('should get all outbounds stats with reset', async () => {
|
|
77
|
+
const response = await api.stats.getAllOutboundsStats(true);
|
|
78
|
+
expect(response.isOk).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
afterEach(async () => {
|
|
82
|
+
if (api?.channel) {
|
|
83
|
+
await api.channel.close();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnawave/xtls-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "A Typescript SDK for XRAY (XTLS) Core GRPC Api",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -9,11 +9,29 @@
|
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
11
|
"prepublish": "rm -rf build && tsc",
|
|
12
|
-
"build": "tsc"
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"test:watch": "jest --watch"
|
|
13
15
|
},
|
|
14
16
|
"author": "Remnawave",
|
|
15
17
|
"license": "MIT",
|
|
16
|
-
"keywords": [
|
|
18
|
+
"keywords": [
|
|
19
|
+
"xtls",
|
|
20
|
+
"grpc",
|
|
21
|
+
"sdk",
|
|
22
|
+
"xray core api",
|
|
23
|
+
"typescript",
|
|
24
|
+
"xray",
|
|
25
|
+
"xray-core",
|
|
26
|
+
"api",
|
|
27
|
+
"client",
|
|
28
|
+
"network",
|
|
29
|
+
"proxy",
|
|
30
|
+
"protocol",
|
|
31
|
+
"trojan",
|
|
32
|
+
"vless",
|
|
33
|
+
"vmess"
|
|
34
|
+
],
|
|
17
35
|
"dependencies": {
|
|
18
36
|
"long": "^5.2.3",
|
|
19
37
|
"nice-grpc": "^2.1.10",
|
|
@@ -21,8 +39,29 @@
|
|
|
21
39
|
"tar": "^7.4.3"
|
|
22
40
|
},
|
|
23
41
|
"devDependencies": {
|
|
42
|
+
"@types/jest": "^29.5.2",
|
|
24
43
|
"@types/node": "^22.9.0",
|
|
25
44
|
"grpc-tools": "^1.12.4",
|
|
26
|
-
"ts-
|
|
45
|
+
"ts-jest": "^29.1.0",
|
|
46
|
+
"jest": "^29.5.0",
|
|
47
|
+
"ts-proto": "^2.2.7",
|
|
48
|
+
"typescript": "^5.6.3"
|
|
49
|
+
},
|
|
50
|
+
"jest": {
|
|
51
|
+
"moduleFileExtensions": [
|
|
52
|
+
"js",
|
|
53
|
+
"json",
|
|
54
|
+
"ts"
|
|
55
|
+
],
|
|
56
|
+
"rootDir": ".",
|
|
57
|
+
"testRegex": ".*\\.spec\\.ts$",
|
|
58
|
+
"transform": {
|
|
59
|
+
"^.+\\.(t|j)s$": "ts-jest"
|
|
60
|
+
},
|
|
61
|
+
"collectCoverageFrom": [
|
|
62
|
+
"**/*.(t|j)s"
|
|
63
|
+
],
|
|
64
|
+
"coverageDirectory": "./coverage",
|
|
65
|
+
"testEnvironment": "node"
|
|
27
66
|
}
|
|
28
67
|
}
|