@remnawave/backend-contract 2.9.13 → 2.9.14

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 (27) hide show
  1. package/build/backend/api/controllers/system.d.ts +1 -0
  2. package/build/backend/api/controllers/system.d.ts.map +1 -1
  3. package/build/backend/api/controllers/system.js +1 -0
  4. package/build/backend/api/routes.d.ts +1 -0
  5. package/build/backend/api/routes.d.ts.map +1 -1
  6. package/build/backend/api/routes.js +1 -0
  7. package/build/backend/commands/hwid/create-user-hwid-device.command.js +1 -1
  8. package/build/backend/commands/system/get-http-stats.command.d.ts +18 -0
  9. package/build/backend/commands/system/get-http-stats.command.d.ts.map +1 -0
  10. package/build/backend/commands/system/get-http-stats.command.js +22 -0
  11. package/build/backend/commands/system/index.d.ts +1 -0
  12. package/build/backend/commands/system/index.d.ts.map +1 -1
  13. package/build/backend/commands/system/index.js +1 -0
  14. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts +2 -0
  15. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts.map +1 -1
  16. package/build/backend/constants/cache-keys/cache-keys.constants.js +2 -0
  17. package/build/backend/constants/errors/errors.d.ts +10 -0
  18. package/build/backend/constants/errors/errors.d.ts.map +1 -1
  19. package/build/backend/constants/errors/errors.js +10 -0
  20. package/build/frontend/api/controllers/system.js +1 -0
  21. package/build/frontend/api/routes.js +1 -0
  22. package/build/frontend/commands/hwid/create-user-hwid-device.command.js +1 -1
  23. package/build/frontend/commands/system/get-http-stats.command.js +22 -0
  24. package/build/frontend/commands/system/index.js +1 -0
  25. package/build/frontend/constants/cache-keys/cache-keys.constants.js +2 -0
  26. package/build/frontend/constants/errors/errors.js +10 -0
  27. package/package.json +1 -1
@@ -6,6 +6,7 @@ export declare const SYSTEM_ROUTES: {
6
6
  readonly NODES_STATS: "stats/nodes";
7
7
  readonly RECAP: "stats/recap";
8
8
  readonly NODES_METRICS: "nodes/metrics";
9
+ readonly HTTP: "stats/http";
9
10
  };
10
11
  readonly TOOLS: {
11
12
  readonly GENERATE_X25519: "tools/x25519/generate";
@@ -1 +1 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../api/controllers/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,QAAiB,CAAC;AAEnD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CAgBhB,CAAC"}
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../api/controllers/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,QAAiB,CAAC;AAEnD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAiBhB,CAAC"}
@@ -9,6 +9,7 @@ exports.SYSTEM_ROUTES = {
9
9
  NODES_STATS: 'stats/nodes',
10
10
  RECAP: 'stats/recap',
11
11
  NODES_METRICS: 'nodes/metrics',
12
+ HTTP: 'stats/http',
12
13
  },
13
14
  TOOLS: {
14
15
  GENERATE_X25519: 'tools/x25519/generate',
@@ -131,6 +131,7 @@ export declare const REST_API: {
131
131
  readonly NODES_STATS: "/api/system/stats/nodes";
132
132
  readonly NODES_METRICS: "/api/system/nodes/metrics";
133
133
  readonly RECAP: "/api/system/stats/recap";
134
+ readonly HTTP: "/api/system/stats/http";
134
135
  };
135
136
  readonly TOOLS: {
136
137
  readonly GENERATE_X25519: "/api/system/tools/x25519/generate";
@@ -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;AAE9C,eAAO,MAAM,kBAAkB,EAAG,gBAAyB,CAAC;AAC5D,eAAO,MAAM,cAAc,EAAG,uBAAgC,CAAC;AAC/D,eAAO,MAAM,YAAY,EAAG,wBAAiC,CAAC;AAC9D,eAAO,MAAM,WAAW,EAAG,uBAAgC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;;;qCAcD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;;;gCAkBjB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;8BAOzB,MAAM;6CAES,MAAM;0CAIT,MAAM;;;;;;;;;;;;;;;;;;;;;;kCAyBd,MAAM;uCAED,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAmCT,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;;;;;;;;6BAST,MAAM;;;gCAIH,MAAM;;;;;;;;;;;;;;;;;uCAkBC,MAAM;;;;yCAKJ,MAAM;;;;2CAKJ,MAAM;;;6CAIJ,MAAM;;;;;6CAMN,MAAM;qDAEE,MAAM;6CAEd,MAAM;qDAEE,MAAM;;;;;iCAM1B,MAAM;oCAEH,MAAM;;;iCAIT,MAAM;oCAEH,MAAM;;;CAIvB,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;AAE9C,eAAO,MAAM,kBAAkB,EAAG,gBAAyB,CAAC;AAC5D,eAAO,MAAM,cAAc,EAAG,uBAAgC,CAAC;AAC/D,eAAO,MAAM,YAAY,EAAG,wBAAiC,CAAC;AAC9D,eAAO,MAAM,WAAW,EAAG,uBAAgC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;;;qCAcD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;;;gCAkBjB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;8BAOzB,MAAM;6CAES,MAAM;0CAIT,MAAM;;;;;;;;;;;;;;;;;;;;;;kCAyBd,MAAM;uCAED,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;;;;;;;;6BAST,MAAM;;;gCAIH,MAAM;;;;;;;;;;;;;;;;;uCAkBC,MAAM;;;;yCAKJ,MAAM;;;;2CAKJ,MAAM;;;6CAIJ,MAAM;;;;;6CAMN,MAAM;qDAEE,MAAM;6CAEd,MAAM;qDAEE,MAAM;;;;;iCAM1B,MAAM;oCAEH,MAAM;;;iCAIT,MAAM;oCAEH,MAAM;;;CAIvB,CAAC"}
@@ -168,6 +168,7 @@ exports.REST_API = {
168
168
  NODES_STATS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_STATS}`,
169
169
  NODES_METRICS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_METRICS}`,
170
170
  RECAP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.RECAP}`,
171
+ HTTP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.HTTP}`,
171
172
  },
172
173
  TOOLS: {
173
174
  GENERATE_X25519: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.TOOLS.GENERATE_X25519}`,
@@ -11,7 +11,7 @@ var CreateUserHwidDeviceCommand;
11
11
  CreateUserHwidDeviceCommand.TSQ_url = CreateUserHwidDeviceCommand.url;
12
12
  CreateUserHwidDeviceCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.HWID_ROUTES.CREATE_USER_HWID_DEVICE, 'post', 'Create a user HWID device', { scope: 'create', kind: 'write' });
13
13
  CreateUserHwidDeviceCommand.RequestBodySchema = zod_1.z.object({
14
- hwid: zod_1.z.string(),
14
+ hwid: zod_1.z.string().regex(/^[a-zA-Z0-9=-]{10,64}$/),
15
15
  userUuid: zod_1.z.uuid(),
16
16
  platform: zod_1.z.optional(zod_1.z.string()),
17
17
  osVersion: zod_1.z.optional(zod_1.z.string()),
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare namespace GetHttpStatsCommand {
3
+ const url: "/api/system/stats/http";
4
+ const TSQ_url: "/api/system/stats/http";
5
+ const endpointDetails: import("../../constants").EndpointDetails;
6
+ const ResponseSchema: z.ZodObject<{
7
+ response: z.ZodObject<{
8
+ routes: z.ZodArray<z.ZodObject<{
9
+ method: z.ZodString;
10
+ route: z.ZodString;
11
+ count: z.ZodInt32;
12
+ }, z.core.$strip>>;
13
+ total: z.ZodInt32;
14
+ }, z.core.$strip>;
15
+ }, z.core.$strip>;
16
+ type Response = z.infer<typeof ResponseSchema>;
17
+ }
18
+ //# sourceMappingURL=get-http-stats.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-http-stats.command.d.ts","sourceRoot":"","sources":["../../../../commands/system/get-http-stats.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,yBAAiB,mBAAmB,CAAC;IAC1B,MAAM,GAAG,0BAA6B,CAAC;IACvC,MAAM,OAAO,0BAAM,CAAC;IAEpB,MAAM,eAAe,2CAK3B,CAAC;IAEK,MAAM,cAAc;;;;;;;;;qBAWzB,CAAC;IAEH,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetHttpStatsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../api");
6
+ const constants_1 = require("../../constants");
7
+ var GetHttpStatsCommand;
8
+ (function (GetHttpStatsCommand) {
9
+ GetHttpStatsCommand.url = api_1.REST_API.SYSTEM.STATS.HTTP;
10
+ GetHttpStatsCommand.TSQ_url = GetHttpStatsCommand.url;
11
+ GetHttpStatsCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.SYSTEM_ROUTES.STATS.HTTP, 'get', 'Get HTTP Stats', { scope: 'http', kind: 'read' });
12
+ GetHttpStatsCommand.ResponseSchema = zod_1.z.object({
13
+ response: zod_1.z.object({
14
+ routes: zod_1.z.array(zod_1.z.object({
15
+ method: zod_1.z.string(),
16
+ route: zod_1.z.string(),
17
+ count: zod_1.z.int32().nonnegative(),
18
+ })),
19
+ total: zod_1.z.int32().nonnegative(),
20
+ }),
21
+ });
22
+ })(GetHttpStatsCommand || (exports.GetHttpStatsCommand = GetHttpStatsCommand = {}));
@@ -7,4 +7,5 @@ export * from './get-remnawave-health.command';
7
7
  export * from './get-stats.command';
8
8
  export * from './testers';
9
9
  export * from './tools';
10
+ export * from './get-http-stats.command';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/system/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/system/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC"}
@@ -23,3 +23,4 @@ __exportStar(require("./get-remnawave-health.command"), exports);
23
23
  __exportStar(require("./get-stats.command"), exports);
24
24
  __exportStar(require("./testers"), exports);
25
25
  __exportStar(require("./tools"), exports);
26
+ __exportStar(require("./get-http-stats.command"), exports);
@@ -13,6 +13,7 @@ export declare const CACHE_KEYS: {
13
13
  readonly NODE_XRAY_UPTIME: (uuid: string) => string;
14
14
  readonly RAW_INBOUND: (uuid: string) => string;
15
15
  readonly XRAY_JSON_TEMPLATE: (uuid: string) => string;
16
+ readonly EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid: string, type: TSubscriptionTemplateType) => string;
16
17
  };
17
18
  export declare const CACHE_KEYS_TTL: {
18
19
  readonly REMNAWAVE_SETTINGS: 86400;
@@ -23,6 +24,7 @@ export declare const CACHE_KEYS_TTL: {
23
24
  readonly NODE_XRAY_UPTIME: 16;
24
25
  readonly RAW_INBOUND: 3600;
25
26
  readonly XRAY_JSON_TEMPLATE: 3600;
27
+ readonly EXTERNAL_SQUAD_TEMPLATE_NAME: 3600;
26
28
  };
27
29
  export declare const INTERNAL_CACHE_KEYS: {
28
30
  readonly NODE_USER_USAGE_PREFIX: "node_user_usage:";
@@ -1 +1 @@
1
- {"version":3,"file":"cache-keys.constants.d.ts","sourceRoot":"","sources":["../../../../constants/cache-keys/cache-keys.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,UAAU;;6CAEa,MAAM;2CACR,MAAM,QAAQ,yBAAyB;kDAEhC,MAAM;oDACJ,MAAM;;sCAEpB,MAAM;uCACL,MAAM;uCACN,MAAM;mCACV,MAAM;sCACH,MAAM;iCACX,MAAM;wCACC,MAAM;CAC3B,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;CASjB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;uCAEF,MAAM;;;;CAK1B,CAAC;AAEX,eAAO,MAAM,uBAAuB;;CAE1B,CAAC"}
1
+ {"version":3,"file":"cache-keys.constants.d.ts","sourceRoot":"","sources":["../../../../constants/cache-keys/cache-keys.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,UAAU;;6CAEa,MAAM;2CACR,MAAM,QAAQ,yBAAyB;kDAEhC,MAAM;oDACJ,MAAM;;sCAEpB,MAAM;uCACL,MAAM;uCACN,MAAM;mCACV,MAAM;sCACH,MAAM;iCACX,MAAM;wCACC,MAAM;kDACI,MAAM,QAAQ,yBAAyB;CAEtE,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;uCAEF,MAAM;;;;CAK1B,CAAC;AAEX,eAAO,MAAM,uBAAuB;;CAE1B,CAAC"}
@@ -15,6 +15,7 @@ exports.CACHE_KEYS = {
15
15
  NODE_XRAY_UPTIME: (uuid) => `node_xray_uptime:${uuid}`,
16
16
  RAW_INBOUND: (uuid) => `raw_inbound:${uuid}`,
17
17
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
+ EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid, type) => `external_squad_template_name:${uuid}:${type}`,
18
19
  };
19
20
  exports.CACHE_KEYS_TTL = {
20
21
  REMNAWAVE_SETTINGS: 86400, // 1 day
@@ -25,6 +26,7 @@ exports.CACHE_KEYS_TTL = {
25
26
  NODE_XRAY_UPTIME: 16, // 16 seconds
26
27
  RAW_INBOUND: 3600, // 1 hour
27
28
  XRAY_JSON_TEMPLATE: 3600, // 1 hour
29
+ EXTERNAL_SQUAD_TEMPLATE_NAME: 3600, // 1 hour
28
30
  };
29
31
  exports.INTERNAL_CACHE_KEYS = {
30
32
  NODE_USER_USAGE_PREFIX: 'node_user_usage:',
@@ -1179,5 +1179,15 @@ export declare const ERRORS: {
1179
1179
  readonly message: "Either nodeUuid or name must be provided";
1180
1180
  readonly httpCode: 400;
1181
1181
  };
1182
+ readonly CUSTOM_RAW_REMARK_VALIDATION_ERROR: {
1183
+ readonly code: "A231";
1184
+ readonly message: "Invalid custom raw remark";
1185
+ readonly httpCode: 500;
1186
+ readonly withMessage: (message: string) => {
1187
+ code: string;
1188
+ message: string;
1189
+ httpCode: number;
1190
+ };
1191
+ };
1182
1192
  };
1183
1193
  //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA2qBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsK3B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA2qBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0KN,MAAM;;;;;;CAM3B,CAAC"}
@@ -1150,4 +1150,14 @@ exports.ERRORS = {
1150
1150
  message: 'Either nodeUuid or name must be provided',
1151
1151
  httpCode: 400,
1152
1152
  },
1153
+ CUSTOM_RAW_REMARK_VALIDATION_ERROR: {
1154
+ code: 'A231',
1155
+ message: 'Invalid custom raw remark',
1156
+ httpCode: 500,
1157
+ withMessage: (message) => ({
1158
+ code: 'A231',
1159
+ message,
1160
+ httpCode: 500,
1161
+ }),
1162
+ },
1153
1163
  };
@@ -9,6 +9,7 @@ exports.SYSTEM_ROUTES = {
9
9
  NODES_STATS: 'stats/nodes',
10
10
  RECAP: 'stats/recap',
11
11
  NODES_METRICS: 'nodes/metrics',
12
+ HTTP: 'stats/http',
12
13
  },
13
14
  TOOLS: {
14
15
  GENERATE_X25519: 'tools/x25519/generate',
@@ -168,6 +168,7 @@ exports.REST_API = {
168
168
  NODES_STATS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_STATS}`,
169
169
  NODES_METRICS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_METRICS}`,
170
170
  RECAP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.RECAP}`,
171
+ HTTP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.HTTP}`,
171
172
  },
172
173
  TOOLS: {
173
174
  GENERATE_X25519: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.TOOLS.GENERATE_X25519}`,
@@ -11,7 +11,7 @@ var CreateUserHwidDeviceCommand;
11
11
  CreateUserHwidDeviceCommand.TSQ_url = CreateUserHwidDeviceCommand.url;
12
12
  CreateUserHwidDeviceCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.HWID_ROUTES.CREATE_USER_HWID_DEVICE, 'post', 'Create a user HWID device', { scope: 'create', kind: 'write' });
13
13
  CreateUserHwidDeviceCommand.RequestBodySchema = zod_1.z.object({
14
- hwid: zod_1.z.string(),
14
+ hwid: zod_1.z.string().regex(/^[a-zA-Z0-9=-]{10,64}$/),
15
15
  userUuid: zod_1.z.uuid(),
16
16
  platform: zod_1.z.optional(zod_1.z.string()),
17
17
  osVersion: zod_1.z.optional(zod_1.z.string()),
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetHttpStatsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../api");
6
+ const constants_1 = require("../../constants");
7
+ var GetHttpStatsCommand;
8
+ (function (GetHttpStatsCommand) {
9
+ GetHttpStatsCommand.url = api_1.REST_API.SYSTEM.STATS.HTTP;
10
+ GetHttpStatsCommand.TSQ_url = GetHttpStatsCommand.url;
11
+ GetHttpStatsCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.SYSTEM_ROUTES.STATS.HTTP, 'get', 'Get HTTP Stats', { scope: 'http', kind: 'read' });
12
+ GetHttpStatsCommand.ResponseSchema = zod_1.z.object({
13
+ response: zod_1.z.object({
14
+ routes: zod_1.z.array(zod_1.z.object({
15
+ method: zod_1.z.string(),
16
+ route: zod_1.z.string(),
17
+ count: zod_1.z.int32().nonnegative(),
18
+ })),
19
+ total: zod_1.z.int32().nonnegative(),
20
+ }),
21
+ });
22
+ })(GetHttpStatsCommand || (exports.GetHttpStatsCommand = GetHttpStatsCommand = {}));
@@ -23,3 +23,4 @@ __exportStar(require("./get-remnawave-health.command"), exports);
23
23
  __exportStar(require("./get-stats.command"), exports);
24
24
  __exportStar(require("./testers"), exports);
25
25
  __exportStar(require("./tools"), exports);
26
+ __exportStar(require("./get-http-stats.command"), exports);
@@ -15,6 +15,7 @@ exports.CACHE_KEYS = {
15
15
  NODE_XRAY_UPTIME: (uuid) => `node_xray_uptime:${uuid}`,
16
16
  RAW_INBOUND: (uuid) => `raw_inbound:${uuid}`,
17
17
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
+ EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid, type) => `external_squad_template_name:${uuid}:${type}`,
18
19
  };
19
20
  exports.CACHE_KEYS_TTL = {
20
21
  REMNAWAVE_SETTINGS: 86400, // 1 day
@@ -25,6 +26,7 @@ exports.CACHE_KEYS_TTL = {
25
26
  NODE_XRAY_UPTIME: 16, // 16 seconds
26
27
  RAW_INBOUND: 3600, // 1 hour
27
28
  XRAY_JSON_TEMPLATE: 3600, // 1 hour
29
+ EXTERNAL_SQUAD_TEMPLATE_NAME: 3600, // 1 hour
28
30
  };
29
31
  exports.INTERNAL_CACHE_KEYS = {
30
32
  NODE_USER_USAGE_PREFIX: 'node_user_usage:',
@@ -1150,4 +1150,14 @@ exports.ERRORS = {
1150
1150
  message: 'Either nodeUuid or name must be provided',
1151
1151
  httpCode: 400,
1152
1152
  },
1153
+ CUSTOM_RAW_REMARK_VALIDATION_ERROR: {
1154
+ code: 'A231',
1155
+ message: 'Invalid custom raw remark',
1156
+ httpCode: 500,
1157
+ withMessage: (message) => ({
1158
+ code: 'A231',
1159
+ message,
1160
+ httpCode: 500,
1161
+ }),
1162
+ },
1153
1163
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnawave/backend-contract",
3
- "version": "2.9.13",
3
+ "version": "2.9.14",
4
4
  "description": "A contract library for Remnawave Backend. It can be used in backend and frontend.",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/remnawave",