@remnawave/backend-contract 2.6.7 → 2.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/build/backend/api/controllers/bandwidth-stats.d.ts +6 -0
  2. package/build/backend/api/controllers/bandwidth-stats.d.ts.map +1 -1
  3. package/build/backend/api/controllers/bandwidth-stats.js +9 -1
  4. package/build/backend/api/routes.d.ts +4 -0
  5. package/build/backend/api/routes.d.ts.map +1 -1
  6. package/build/backend/api/routes.js +4 -0
  7. package/build/backend/commands/bandwidth-stats/index.d.ts +1 -0
  8. package/build/backend/commands/bandwidth-stats/index.d.ts.map +1 -1
  9. package/build/backend/commands/bandwidth-stats/index.js +1 -0
  10. package/build/backend/commands/bandwidth-stats/user-ips/create-user-ips-job.command.d.ts +33 -0
  11. package/build/backend/commands/bandwidth-stats/user-ips/create-user-ips-job.command.d.ts.map +1 -0
  12. package/build/backend/commands/bandwidth-stats/user-ips/create-user-ips-job.command.js +20 -0
  13. package/build/backend/commands/bandwidth-stats/user-ips/get-user-ips-result.command.d.ts +149 -0
  14. package/build/backend/commands/bandwidth-stats/user-ips/get-user-ips-result.command.d.ts.map +1 -0
  15. package/build/backend/commands/bandwidth-stats/user-ips/get-user-ips-result.command.js +38 -0
  16. package/build/backend/commands/bandwidth-stats/user-ips/index.d.ts +3 -0
  17. package/build/backend/commands/bandwidth-stats/user-ips/index.d.ts.map +1 -0
  18. package/build/backend/commands/bandwidth-stats/user-ips/index.js +18 -0
  19. package/build/backend/constants/errors/errors.d.ts +10 -0
  20. package/build/backend/constants/errors/errors.d.ts.map +1 -1
  21. package/build/backend/constants/errors/errors.js +10 -0
  22. package/build/frontend/api/controllers/bandwidth-stats.js +9 -1
  23. package/build/frontend/api/routes.js +4 -0
  24. package/build/frontend/commands/bandwidth-stats/index.js +1 -0
  25. package/build/frontend/commands/bandwidth-stats/user-ips/create-user-ips-job.command.js +20 -0
  26. package/build/frontend/commands/bandwidth-stats/user-ips/get-user-ips-result.command.js +38 -0
  27. package/build/frontend/commands/bandwidth-stats/user-ips/index.js +18 -0
  28. package/build/frontend/constants/errors/errors.js +10 -0
  29. package/package.json +1 -1
@@ -1,8 +1,10 @@
1
1
  export declare const BANDWIDTH_STATS_CONTROLLER: "bandwidth-stats";
2
2
  export declare const BANDWIDTH_STATS_NODES_ROUTE: "nodes";
3
3
  export declare const BANDWIDTH_STATS_USERS_ROUTE: "users";
4
+ export declare const BANDWIDTH_STATS_USER_IPS_ROUTE: "user-ips";
4
5
  export declare const BANDWIDTH_STATS_NODES_CONTROLLER: "bandwidth-stats/nodes";
5
6
  export declare const BANDWIDTH_STATS_USERS_CONTROLLER: "bandwidth-stats/users";
7
+ export declare const BANDWIDTH_STATS_USER_IPS_CONTROLLER: "bandwidth-stats/user-ips";
6
8
  export declare const BANDWIDTH_STATS_ROUTES: {
7
9
  readonly NODES: {
8
10
  readonly GET: "";
@@ -12,6 +14,10 @@ export declare const BANDWIDTH_STATS_ROUTES: {
12
14
  readonly USERS: {
13
15
  readonly GET_BY_UUID: (uuid: string) => string;
14
16
  };
17
+ readonly USER_IPS: {
18
+ readonly CREATE: (uuid: string) => string;
19
+ readonly GET_RESULT: (jobId: string) => string;
20
+ };
15
21
  readonly LEGACY: {
16
22
  readonly NODES: {
17
23
  readonly GET_USERS: (uuid: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"bandwidth-stats.d.ts","sourceRoot":"","sources":["../../../../api/controllers/bandwidth-stats.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,EAAG,iBAA0B,CAAC;AAErE,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAC5D,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAE5D,eAAO,MAAM,gCAAgC,yBAC8B,CAAC;AAC5E,eAAO,MAAM,gCAAgC,yBAC8B,CAAC;AAO5E,eAAO,MAAM,sBAAsB;;;;mCAOT,MAAM;;;qCAIJ,MAAM;;;;uCAKJ,MAAM;;;yCAIJ,MAAM;;;CAG5B,CAAC"}
1
+ {"version":3,"file":"bandwidth-stats.d.ts","sourceRoot":"","sources":["../../../../api/controllers/bandwidth-stats.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,EAAG,iBAA0B,CAAC;AAErE,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAC5D,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAC5D,eAAO,MAAM,8BAA8B,EAAG,UAAmB,CAAC;AAElE,eAAO,MAAM,gCAAgC,yBAC8B,CAAC;AAC5E,eAAO,MAAM,gCAAgC,yBAC8B,CAAC;AAC5E,eAAO,MAAM,mCAAmC,4BAC8B,CAAC;AAO/E,eAAO,MAAM,sBAAsB;;;;mCAOT,MAAM;;;qCAIJ,MAAM;;;gCAIX,MAAM;qCAED,MAAM;;;;uCAKJ,MAAM;;;yCAIJ,MAAM;;;CAG5B,CAAC"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BANDWIDTH_STATS_ROUTES = exports.BANDWIDTH_STATS_USERS_CONTROLLER = exports.BANDWIDTH_STATS_NODES_CONTROLLER = exports.BANDWIDTH_STATS_USERS_ROUTE = exports.BANDWIDTH_STATS_NODES_ROUTE = exports.BANDWIDTH_STATS_CONTROLLER = void 0;
3
+ exports.BANDWIDTH_STATS_ROUTES = exports.BANDWIDTH_STATS_USER_IPS_CONTROLLER = exports.BANDWIDTH_STATS_USERS_CONTROLLER = exports.BANDWIDTH_STATS_NODES_CONTROLLER = exports.BANDWIDTH_STATS_USER_IPS_ROUTE = exports.BANDWIDTH_STATS_USERS_ROUTE = exports.BANDWIDTH_STATS_NODES_ROUTE = exports.BANDWIDTH_STATS_CONTROLLER = void 0;
4
4
  exports.BANDWIDTH_STATS_CONTROLLER = 'bandwidth-stats';
5
5
  exports.BANDWIDTH_STATS_NODES_ROUTE = 'nodes';
6
6
  exports.BANDWIDTH_STATS_USERS_ROUTE = 'users';
7
+ exports.BANDWIDTH_STATS_USER_IPS_ROUTE = 'user-ips';
7
8
  exports.BANDWIDTH_STATS_NODES_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_NODES_ROUTE}`;
8
9
  exports.BANDWIDTH_STATS_USERS_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_USERS_ROUTE}`;
10
+ exports.BANDWIDTH_STATS_USER_IPS_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_USER_IPS_ROUTE}`;
9
11
  // Variants:
10
12
  // 1. Nodes -> Metrics
11
13
  // 2. Nodes -> Management -> Show usage (!need legacy)
@@ -23,6 +25,12 @@ exports.BANDWIDTH_STATS_ROUTES = {
23
25
  // GET /bandwidth-stats/users/:userUuid –– Users -> User -> Show Usage
24
26
  GET_BY_UUID: (uuid) => `${uuid}`,
25
27
  },
28
+ USER_IPS: {
29
+ // POST /bandwidth-stats/user-ips/:userUuid — create job
30
+ CREATE: (uuid) => `${uuid}`,
31
+ // GET /bandwidth-stats/user-ips/result/:jobId — get job result
32
+ GET_RESULT: (jobId) => `result/${jobId}`,
33
+ },
26
34
  LEGACY: {
27
35
  NODES: {
28
36
  // GET /bandwidth-stats/nodes/:nodeUuid/users/legacy –– Nodes -> Management -> Show usage (legacy)
@@ -263,6 +263,10 @@ export declare const REST_API: {
263
263
  readonly USERS: {
264
264
  readonly GET_BY_UUID: (uuid: string) => string;
265
265
  };
266
+ readonly USER_IPS: {
267
+ readonly CREATE: (uuid: string) => string;
268
+ readonly GET_RESULT: (jobId: string) => string;
269
+ };
266
270
  readonly LEGACY: {
267
271
  readonly NODES: {
268
272
  readonly GET_USERS: (uuid: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../api/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AACpC,eAAO,MAAM,YAAY,EAAG,UAAmB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAG,SAAkB,CAAC;AAC9C,eAAO,MAAM,cAAc,EAAG,SAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;qCAYD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;gCAgBjB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;8BAOzB,MAAM;6CAES,MAAM;0CAIT,MAAM;2DAIW,MAAM;+CAIlB,MAAM;oCAIjB,MAAM;gCAIV,MAAM;;;;;;;;;;;;;;;;;;;;;kCAyBJ,MAAM;0CAEE,MAAM;uCAET,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAoCT,MAAM;;gCAKH,MAAM;;;;;;;;;;;;;;mDAiBa,MAAM;;;;;;;;;0CAYf,MAAM;kCAId,MAAM;6CAIK,MAAM;iDAIF,MAAM;;;6CAMV,MAAM;;qDAKE,MAAM;;;;;;qCAStB,MAAM;gCAIX,MAAM;sDAIgB,MAAM;6DAIC,MAAM;;;;;;;;;;qCAa9B,MAAM;gCAIX,MAAM;0CAII,MAAM;;uCAKT,MAAM;0CAEH,MAAM;;;;;;;;;;yCAWP,MAAM;8CAED,MAAM;;;;6CAMP,MAAM;;;gDAKH,MAAM;;;;;;;;;;;;;;;;qCAiBjB,MAAM;gCAIX,MAAM;;uCAKC,MAAM;0CAEH,MAAM;;;;;;;;;;;6BAYnB,MAAM;;;gCAIH,MAAM;;;;;;;;;;;uCAYC,MAAM;;;yCAIJ,MAAM;;;;2CAKJ,MAAM;;;6CAIJ,MAAM;;;;CAKhC,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../api/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AACpC,eAAO,MAAM,YAAY,EAAG,UAAmB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAG,SAAkB,CAAC;AAC9C,eAAO,MAAM,cAAc,EAAG,SAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;qCAYD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;gCAgBjB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;8BAOzB,MAAM;6CAES,MAAM;0CAIT,MAAM;2DAIW,MAAM;+CAIlB,MAAM;oCAIjB,MAAM;gCAIV,MAAM;;;;;;;;;;;;;;;;;;;;;kCAyBJ,MAAM;0CAEE,MAAM;uCAET,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAoCT,MAAM;;gCAKH,MAAM;;;;;;;;;;;;;;mDAiBa,MAAM;;;;;;;;;0CAYf,MAAM;kCAId,MAAM;6CAIK,MAAM;iDAIF,MAAM;;;6CAMV,MAAM;;qDAKE,MAAM;;;;;;qCAStB,MAAM;gCAIX,MAAM;sDAIgB,MAAM;6DAIC,MAAM;;;;;;;;;;qCAa9B,MAAM;gCAIX,MAAM;0CAII,MAAM;;uCAKT,MAAM;0CAEH,MAAM;;;;;;;;;;yCAWP,MAAM;8CAED,MAAM;;;;6CAMP,MAAM;;;gDAKH,MAAM;;;;;;;;;;;;;;;;qCAiBjB,MAAM;gCAIX,MAAM;;uCAKC,MAAM;0CAEH,MAAM;;;;;;;;;;;6BAYnB,MAAM;;;gCAIH,MAAM;;;;;;;;;;;uCAYC,MAAM;;;yCAIJ,MAAM;;;oCAIX,MAAM;yCAED,MAAM;;;;2CAKJ,MAAM;;;6CAIJ,MAAM;;;;CAKhC,CAAC"}
@@ -300,6 +300,10 @@ exports.REST_API = {
300
300
  USERS: {
301
301
  GET_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USERS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USERS.GET_BY_UUID(uuid)}`,
302
302
  },
303
+ USER_IPS: {
304
+ CREATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USER_IPS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USER_IPS.CREATE(uuid)}`,
305
+ GET_RESULT: (jobId) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USER_IPS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USER_IPS.GET_RESULT(jobId)}`,
306
+ },
303
307
  LEGACY: {
304
308
  NODES: {
305
309
  GET_USERS: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_NODES_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.LEGACY.NODES.GET_USERS(uuid)}`,
@@ -1,4 +1,5 @@
1
1
  export * from './legacy';
2
2
  export * from './nodes';
3
+ export * from './user-ips';
3
4
  export * from './users';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/bandwidth-stats/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/bandwidth-stats/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./legacy"), exports);
18
18
  __exportStar(require("./nodes"), exports);
19
+ __exportStar(require("./user-ips"), exports);
19
20
  __exportStar(require("./users"), exports);
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ export declare namespace CreateUserIpsJobCommand {
3
+ const url: (uuid: string) => string;
4
+ const TSQ_url: string;
5
+ const endpointDetails: import("../../../constants").EndpointDetails;
6
+ const RequestSchema: z.ZodObject<{
7
+ uuid: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ uuid: string;
10
+ }, {
11
+ uuid: string;
12
+ }>;
13
+ type Request = z.infer<typeof RequestSchema>;
14
+ const ResponseSchema: z.ZodObject<{
15
+ response: z.ZodObject<{
16
+ jobId: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ jobId: string;
19
+ }, {
20
+ jobId: string;
21
+ }>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ response: {
24
+ jobId: string;
25
+ };
26
+ }, {
27
+ response: {
28
+ jobId: string;
29
+ };
30
+ }>;
31
+ type Response = z.infer<typeof ResponseSchema>;
32
+ }
33
+ //# sourceMappingURL=create-user-ips-job.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-user-ips-job.command.d.ts","sourceRoot":"","sources":["../../../../../commands/bandwidth-stats/user-ips/create-user-ips-job.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,yBAAiB,uBAAuB,CAAC;IAC9B,MAAM,GAAG,0BAA2C,CAAC;IACrD,MAAM,OAAO,QAAe,CAAC;IAE7B,MAAM,eAAe,8CAI3B,CAAC;IAEK,MAAM,aAAa;;;;;;MAExB,CAAC;IAEH,KAAY,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IAE7C,MAAM,cAAc;;;;;;;;;;;;;;;;MAIzB,CAAC;IAEH,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateUserIpsJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../../api");
6
+ const constants_1 = require("../../../constants");
7
+ var CreateUserIpsJobCommand;
8
+ (function (CreateUserIpsJobCommand) {
9
+ CreateUserIpsJobCommand.url = api_1.REST_API.BANDWIDTH_STATS.USER_IPS.CREATE;
10
+ CreateUserIpsJobCommand.TSQ_url = CreateUserIpsJobCommand.url(':uuid');
11
+ CreateUserIpsJobCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.BANDWIDTH_STATS_ROUTES.USER_IPS.CREATE(':uuid'), 'post', 'Create User IPs Job');
12
+ CreateUserIpsJobCommand.RequestSchema = zod_1.z.object({
13
+ uuid: zod_1.z.string().uuid(),
14
+ });
15
+ CreateUserIpsJobCommand.ResponseSchema = zod_1.z.object({
16
+ response: zod_1.z.object({
17
+ jobId: zod_1.z.string().uuid(),
18
+ }),
19
+ });
20
+ })(CreateUserIpsJobCommand || (exports.CreateUserIpsJobCommand = CreateUserIpsJobCommand = {}));
@@ -0,0 +1,149 @@
1
+ import { z } from 'zod';
2
+ export declare namespace GetUserIpsResultCommand {
3
+ const url: (jobId: string) => string;
4
+ const TSQ_url: string;
5
+ const endpointDetails: import("../../../constants").EndpointDetails;
6
+ const RequestSchema: z.ZodObject<{
7
+ jobId: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ jobId: string;
10
+ }, {
11
+ jobId: string;
12
+ }>;
13
+ type Request = z.infer<typeof RequestSchema>;
14
+ const ResponseSchema: z.ZodObject<{
15
+ response: z.ZodObject<{
16
+ isCompleted: z.ZodBoolean;
17
+ isFailed: z.ZodBoolean;
18
+ progress: z.ZodObject<{
19
+ total: z.ZodNumber;
20
+ completed: z.ZodNumber;
21
+ percent: z.ZodNumber;
22
+ }, "strip", z.ZodTypeAny, {
23
+ total: number;
24
+ completed: number;
25
+ percent: number;
26
+ }, {
27
+ total: number;
28
+ completed: number;
29
+ percent: number;
30
+ }>;
31
+ result: z.ZodNullable<z.ZodObject<{
32
+ success: z.ZodBoolean;
33
+ userUuid: z.ZodString;
34
+ nodes: z.ZodArray<z.ZodObject<{
35
+ nodeUuid: z.ZodString;
36
+ nodeName: z.ZodString;
37
+ countryCode: z.ZodString;
38
+ ips: z.ZodArray<z.ZodString, "many">;
39
+ }, "strip", z.ZodTypeAny, {
40
+ nodeUuid: string;
41
+ nodeName: string;
42
+ countryCode: string;
43
+ ips: string[];
44
+ }, {
45
+ nodeUuid: string;
46
+ nodeName: string;
47
+ countryCode: string;
48
+ ips: string[];
49
+ }>, "many">;
50
+ }, "strip", z.ZodTypeAny, {
51
+ nodes: {
52
+ nodeUuid: string;
53
+ nodeName: string;
54
+ countryCode: string;
55
+ ips: string[];
56
+ }[];
57
+ userUuid: string;
58
+ success: boolean;
59
+ }, {
60
+ nodes: {
61
+ nodeUuid: string;
62
+ nodeName: string;
63
+ countryCode: string;
64
+ ips: string[];
65
+ }[];
66
+ userUuid: string;
67
+ success: boolean;
68
+ }>>;
69
+ }, "strip", z.ZodTypeAny, {
70
+ isCompleted: boolean;
71
+ isFailed: boolean;
72
+ progress: {
73
+ total: number;
74
+ completed: number;
75
+ percent: number;
76
+ };
77
+ result: {
78
+ nodes: {
79
+ nodeUuid: string;
80
+ nodeName: string;
81
+ countryCode: string;
82
+ ips: string[];
83
+ }[];
84
+ userUuid: string;
85
+ success: boolean;
86
+ } | null;
87
+ }, {
88
+ isCompleted: boolean;
89
+ isFailed: boolean;
90
+ progress: {
91
+ total: number;
92
+ completed: number;
93
+ percent: number;
94
+ };
95
+ result: {
96
+ nodes: {
97
+ nodeUuid: string;
98
+ nodeName: string;
99
+ countryCode: string;
100
+ ips: string[];
101
+ }[];
102
+ userUuid: string;
103
+ success: boolean;
104
+ } | null;
105
+ }>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ response: {
108
+ isCompleted: boolean;
109
+ isFailed: boolean;
110
+ progress: {
111
+ total: number;
112
+ completed: number;
113
+ percent: number;
114
+ };
115
+ result: {
116
+ nodes: {
117
+ nodeUuid: string;
118
+ nodeName: string;
119
+ countryCode: string;
120
+ ips: string[];
121
+ }[];
122
+ userUuid: string;
123
+ success: boolean;
124
+ } | null;
125
+ };
126
+ }, {
127
+ response: {
128
+ isCompleted: boolean;
129
+ isFailed: boolean;
130
+ progress: {
131
+ total: number;
132
+ completed: number;
133
+ percent: number;
134
+ };
135
+ result: {
136
+ nodes: {
137
+ nodeUuid: string;
138
+ nodeName: string;
139
+ countryCode: string;
140
+ ips: string[];
141
+ }[];
142
+ userUuid: string;
143
+ success: boolean;
144
+ } | null;
145
+ };
146
+ }>;
147
+ type Response = z.infer<typeof ResponseSchema>;
148
+ }
149
+ //# sourceMappingURL=get-user-ips-result.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-ips-result.command.d.ts","sourceRoot":"","sources":["../../../../../commands/bandwidth-stats/user-ips/get-user-ips-result.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,yBAAiB,uBAAuB,CAAC;IAC9B,MAAM,GAAG,2BAA+C,CAAC;IACzD,MAAM,OAAO,QAAgB,CAAC;IAE9B,MAAM,eAAe,8CAI3B,CAAC;IAEK,MAAM,aAAa;;;;;;MAExB,CAAC;IAEH,KAAY,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IAE7C,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwBzB,CAAC;IAEH,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetUserIpsResultCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../../api");
6
+ const constants_1 = require("../../../constants");
7
+ var GetUserIpsResultCommand;
8
+ (function (GetUserIpsResultCommand) {
9
+ GetUserIpsResultCommand.url = api_1.REST_API.BANDWIDTH_STATS.USER_IPS.GET_RESULT;
10
+ GetUserIpsResultCommand.TSQ_url = GetUserIpsResultCommand.url(':jobId');
11
+ GetUserIpsResultCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.BANDWIDTH_STATS_ROUTES.USER_IPS.GET_RESULT(':jobId'), 'get', 'Get User IPs Result by Job ID');
12
+ GetUserIpsResultCommand.RequestSchema = zod_1.z.object({
13
+ jobId: zod_1.z.string(),
14
+ });
15
+ GetUserIpsResultCommand.ResponseSchema = zod_1.z.object({
16
+ response: zod_1.z.object({
17
+ isCompleted: zod_1.z.boolean(),
18
+ isFailed: zod_1.z.boolean(),
19
+ progress: zod_1.z.object({
20
+ total: zod_1.z.number(),
21
+ completed: zod_1.z.number(),
22
+ percent: zod_1.z.number(),
23
+ }),
24
+ result: zod_1.z
25
+ .object({
26
+ success: zod_1.z.boolean(),
27
+ userUuid: zod_1.z.string().uuid(),
28
+ nodes: zod_1.z.array(zod_1.z.object({
29
+ nodeUuid: zod_1.z.string().uuid(),
30
+ nodeName: zod_1.z.string(),
31
+ countryCode: zod_1.z.string(),
32
+ ips: zod_1.z.array(zod_1.z.string()),
33
+ })),
34
+ })
35
+ .nullable(),
36
+ }),
37
+ });
38
+ })(GetUserIpsResultCommand || (exports.GetUserIpsResultCommand = GetUserIpsResultCommand = {}));
@@ -0,0 +1,3 @@
1
+ export * from './create-user-ips-job.command';
2
+ export * from './get-user-ips-result.command';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../commands/bandwidth-stats/user-ips/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,18 @@
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("./create-user-ips-job.command"), exports);
18
+ __exportStar(require("./get-user-ips-result.command"), exports);
@@ -1119,5 +1119,15 @@ export declare const ERRORS: {
1119
1119
  readonly message: "Invalid Remnawave injector";
1120
1120
  readonly httpCode: 400;
1121
1121
  };
1122
+ readonly JOB_CREATION_FAILED: {
1123
+ readonly code: "A217";
1124
+ readonly message: "Job creation failed";
1125
+ readonly httpCode: 500;
1126
+ };
1127
+ readonly JOB_RESULT_FETCH_FAILED: {
1128
+ readonly code: "A218";
1129
+ readonly message: "Job result fetch failed or job not found";
1130
+ readonly httpCode: 404;
1131
+ };
1122
1132
  };
1123
1133
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../constants/errors/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAwJY,MAAM;;;;;;;;;;wCAUN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA4IN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0rBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2F3B,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../constants/errors/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAwJY,MAAM;;;;;;;;;;wCAUN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA4IN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0rBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqG3B,CAAC"}
@@ -1090,4 +1090,14 @@ exports.ERRORS = {
1090
1090
  message: 'Invalid Remnawave injector',
1091
1091
  httpCode: 400,
1092
1092
  },
1093
+ JOB_CREATION_FAILED: {
1094
+ code: 'A217',
1095
+ message: 'Job creation failed',
1096
+ httpCode: 500,
1097
+ },
1098
+ JOB_RESULT_FETCH_FAILED: {
1099
+ code: 'A218',
1100
+ message: 'Job result fetch failed or job not found',
1101
+ httpCode: 404,
1102
+ },
1093
1103
  };
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BANDWIDTH_STATS_ROUTES = exports.BANDWIDTH_STATS_USERS_CONTROLLER = exports.BANDWIDTH_STATS_NODES_CONTROLLER = exports.BANDWIDTH_STATS_USERS_ROUTE = exports.BANDWIDTH_STATS_NODES_ROUTE = exports.BANDWIDTH_STATS_CONTROLLER = void 0;
3
+ exports.BANDWIDTH_STATS_ROUTES = exports.BANDWIDTH_STATS_USER_IPS_CONTROLLER = exports.BANDWIDTH_STATS_USERS_CONTROLLER = exports.BANDWIDTH_STATS_NODES_CONTROLLER = exports.BANDWIDTH_STATS_USER_IPS_ROUTE = exports.BANDWIDTH_STATS_USERS_ROUTE = exports.BANDWIDTH_STATS_NODES_ROUTE = exports.BANDWIDTH_STATS_CONTROLLER = void 0;
4
4
  exports.BANDWIDTH_STATS_CONTROLLER = 'bandwidth-stats';
5
5
  exports.BANDWIDTH_STATS_NODES_ROUTE = 'nodes';
6
6
  exports.BANDWIDTH_STATS_USERS_ROUTE = 'users';
7
+ exports.BANDWIDTH_STATS_USER_IPS_ROUTE = 'user-ips';
7
8
  exports.BANDWIDTH_STATS_NODES_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_NODES_ROUTE}`;
8
9
  exports.BANDWIDTH_STATS_USERS_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_USERS_ROUTE}`;
10
+ exports.BANDWIDTH_STATS_USER_IPS_CONTROLLER = `${exports.BANDWIDTH_STATS_CONTROLLER}/${exports.BANDWIDTH_STATS_USER_IPS_ROUTE}`;
9
11
  // Variants:
10
12
  // 1. Nodes -> Metrics
11
13
  // 2. Nodes -> Management -> Show usage (!need legacy)
@@ -23,6 +25,12 @@ exports.BANDWIDTH_STATS_ROUTES = {
23
25
  // GET /bandwidth-stats/users/:userUuid –– Users -> User -> Show Usage
24
26
  GET_BY_UUID: (uuid) => `${uuid}`,
25
27
  },
28
+ USER_IPS: {
29
+ // POST /bandwidth-stats/user-ips/:userUuid — create job
30
+ CREATE: (uuid) => `${uuid}`,
31
+ // GET /bandwidth-stats/user-ips/result/:jobId — get job result
32
+ GET_RESULT: (jobId) => `result/${jobId}`,
33
+ },
26
34
  LEGACY: {
27
35
  NODES: {
28
36
  // GET /bandwidth-stats/nodes/:nodeUuid/users/legacy –– Nodes -> Management -> Show usage (legacy)
@@ -300,6 +300,10 @@ exports.REST_API = {
300
300
  USERS: {
301
301
  GET_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USERS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USERS.GET_BY_UUID(uuid)}`,
302
302
  },
303
+ USER_IPS: {
304
+ CREATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USER_IPS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USER_IPS.CREATE(uuid)}`,
305
+ GET_RESULT: (jobId) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_USER_IPS_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.USER_IPS.GET_RESULT(jobId)}`,
306
+ },
303
307
  LEGACY: {
304
308
  NODES: {
305
309
  GET_USERS: (uuid) => `${exports.ROOT}/${CONTROLLERS.BANDWIDTH_STATS_CONTROLLER}/${CONTROLLERS.BANDWIDTH_STATS_NODES_ROUTE}/${CONTROLLERS.BANDWIDTH_STATS_ROUTES.LEGACY.NODES.GET_USERS(uuid)}`,
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./legacy"), exports);
18
18
  __exportStar(require("./nodes"), exports);
19
+ __exportStar(require("./user-ips"), exports);
19
20
  __exportStar(require("./users"), exports);
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateUserIpsJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../../api");
6
+ const constants_1 = require("../../../constants");
7
+ var CreateUserIpsJobCommand;
8
+ (function (CreateUserIpsJobCommand) {
9
+ CreateUserIpsJobCommand.url = api_1.REST_API.BANDWIDTH_STATS.USER_IPS.CREATE;
10
+ CreateUserIpsJobCommand.TSQ_url = CreateUserIpsJobCommand.url(':uuid');
11
+ CreateUserIpsJobCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.BANDWIDTH_STATS_ROUTES.USER_IPS.CREATE(':uuid'), 'post', 'Create User IPs Job');
12
+ CreateUserIpsJobCommand.RequestSchema = zod_1.z.object({
13
+ uuid: zod_1.z.string().uuid(),
14
+ });
15
+ CreateUserIpsJobCommand.ResponseSchema = zod_1.z.object({
16
+ response: zod_1.z.object({
17
+ jobId: zod_1.z.string().uuid(),
18
+ }),
19
+ });
20
+ })(CreateUserIpsJobCommand || (exports.CreateUserIpsJobCommand = CreateUserIpsJobCommand = {}));
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetUserIpsResultCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../../api");
6
+ const constants_1 = require("../../../constants");
7
+ var GetUserIpsResultCommand;
8
+ (function (GetUserIpsResultCommand) {
9
+ GetUserIpsResultCommand.url = api_1.REST_API.BANDWIDTH_STATS.USER_IPS.GET_RESULT;
10
+ GetUserIpsResultCommand.TSQ_url = GetUserIpsResultCommand.url(':jobId');
11
+ GetUserIpsResultCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.BANDWIDTH_STATS_ROUTES.USER_IPS.GET_RESULT(':jobId'), 'get', 'Get User IPs Result by Job ID');
12
+ GetUserIpsResultCommand.RequestSchema = zod_1.z.object({
13
+ jobId: zod_1.z.string(),
14
+ });
15
+ GetUserIpsResultCommand.ResponseSchema = zod_1.z.object({
16
+ response: zod_1.z.object({
17
+ isCompleted: zod_1.z.boolean(),
18
+ isFailed: zod_1.z.boolean(),
19
+ progress: zod_1.z.object({
20
+ total: zod_1.z.number(),
21
+ completed: zod_1.z.number(),
22
+ percent: zod_1.z.number(),
23
+ }),
24
+ result: zod_1.z
25
+ .object({
26
+ success: zod_1.z.boolean(),
27
+ userUuid: zod_1.z.string().uuid(),
28
+ nodes: zod_1.z.array(zod_1.z.object({
29
+ nodeUuid: zod_1.z.string().uuid(),
30
+ nodeName: zod_1.z.string(),
31
+ countryCode: zod_1.z.string(),
32
+ ips: zod_1.z.array(zod_1.z.string()),
33
+ })),
34
+ })
35
+ .nullable(),
36
+ }),
37
+ });
38
+ })(GetUserIpsResultCommand || (exports.GetUserIpsResultCommand = GetUserIpsResultCommand = {}));
@@ -0,0 +1,18 @@
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("./create-user-ips-job.command"), exports);
18
+ __exportStar(require("./get-user-ips-result.command"), exports);
@@ -1090,4 +1090,14 @@ exports.ERRORS = {
1090
1090
  message: 'Invalid Remnawave injector',
1091
1091
  httpCode: 400,
1092
1092
  },
1093
+ JOB_CREATION_FAILED: {
1094
+ code: 'A217',
1095
+ message: 'Job creation failed',
1096
+ httpCode: 500,
1097
+ },
1098
+ JOB_RESULT_FETCH_FAILED: {
1099
+ code: 'A218',
1100
+ message: 'Job result fetch failed or job not found',
1101
+ httpCode: 404,
1102
+ },
1093
1103
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnawave/backend-contract",
3
- "version": "2.6.7",
3
+ "version": "2.6.9",
4
4
  "public": true,
5
5
  "license": "AGPL-3.0-only",
6
6
  "description": "A contract library for Remnawave Backend. It can be used in backend and frontend.",