@remnawave/backend-contract 2.9.12 → 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 (41) 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/api-tokens/get-ott.command.js +1 -1
  8. package/build/backend/commands/hwid/create-user-hwid-device.command.js +1 -1
  9. package/build/backend/commands/system/get-http-stats.command.d.ts +18 -0
  10. package/build/backend/commands/system/get-http-stats.command.d.ts.map +1 -0
  11. package/build/backend/commands/system/get-http-stats.command.js +22 -0
  12. package/build/backend/commands/system/index.d.ts +1 -0
  13. package/build/backend/commands/system/index.d.ts.map +1 -1
  14. package/build/backend/commands/system/index.js +1 -0
  15. package/build/backend/constants/backend-tools/backend-tools.constants.d.ts +9 -0
  16. package/build/backend/constants/backend-tools/backend-tools.constants.d.ts.map +1 -0
  17. package/build/backend/constants/backend-tools/backend-tools.constants.js +10 -0
  18. package/build/backend/constants/backend-tools/index.d.ts +2 -0
  19. package/build/backend/constants/backend-tools/index.d.ts.map +1 -0
  20. package/build/backend/constants/backend-tools/index.js +17 -0
  21. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts +2 -2
  22. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts.map +1 -1
  23. package/build/backend/constants/cache-keys/cache-keys.constants.js +2 -2
  24. package/build/backend/constants/errors/errors.d.ts +10 -0
  25. package/build/backend/constants/errors/errors.d.ts.map +1 -1
  26. package/build/backend/constants/errors/errors.js +10 -0
  27. package/build/backend/constants/index.d.ts +1 -0
  28. package/build/backend/constants/index.d.ts.map +1 -1
  29. package/build/backend/constants/index.js +1 -0
  30. package/build/frontend/api/controllers/system.js +1 -0
  31. package/build/frontend/api/routes.js +1 -0
  32. package/build/frontend/commands/api-tokens/get-ott.command.js +1 -1
  33. package/build/frontend/commands/hwid/create-user-hwid-device.command.js +1 -1
  34. package/build/frontend/commands/system/get-http-stats.command.js +22 -0
  35. package/build/frontend/commands/system/index.js +1 -0
  36. package/build/frontend/constants/backend-tools/backend-tools.constants.js +10 -0
  37. package/build/frontend/constants/backend-tools/index.js +17 -0
  38. package/build/frontend/constants/cache-keys/cache-keys.constants.js +2 -2
  39. package/build/frontend/constants/errors/errors.js +10 -0
  40. package/build/frontend/constants/index.js +1 -0
  41. 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}`,
@@ -8,7 +8,7 @@ var GetOttCommand;
8
8
  (function (GetOttCommand) {
9
9
  GetOttCommand.url = api_1.REST_API.API_TOKENS.OTT;
10
10
  GetOttCommand.TSQ_url = GetOttCommand.url;
11
- GetOttCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.API_TOKENS_ROUTES.OTT, 'post', 'Get one-time token for accessing backend tools (Swagger, Scalar, Bull Board)', { scope: 'ott', kind: 'write' });
11
+ GetOttCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.API_TOKENS_ROUTES.OTT, 'post', 'Get short-lived token for accessing backend tools (Swagger, Scalar, Bull Board)', { scope: 'ott', kind: 'write' });
12
12
  GetOttCommand.ResponseSchema = zod_1.z.object({
13
13
  response: zod_1.z.object({
14
14
  ott: zod_1.z.string(),
@@ -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);
@@ -0,0 +1,9 @@
1
+ export declare const BACKEND_TOOLS_AUTH_COOKIE_NAME = "rw-tools";
2
+ export declare const BACKEND_TOOLS_JWT_ISSUER = "Remnawave";
3
+ export declare const BACKEND_TOOLS_JWT_LIFETIME_HOURS = 2;
4
+ export declare const BACKEND_TOOLS_JWT_SCOPES: {
5
+ readonly ACCESS: "access";
6
+ readonly OTT: "ott";
7
+ };
8
+ export type TBackendToolsJwtScope = (typeof BACKEND_TOOLS_JWT_SCOPES)[keyof typeof BACKEND_TOOLS_JWT_SCOPES];
9
+ //# sourceMappingURL=backend-tools.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-tools.constants.d.ts","sourceRoot":"","sources":["../../../../constants/backend-tools/backend-tools.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,aAAa,CAAC;AACzD,eAAO,MAAM,wBAAwB,cAAc,CAAC;AACpD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC;AACX,MAAM,MAAM,qBAAqB,GAC7B,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BACKEND_TOOLS_JWT_SCOPES = exports.BACKEND_TOOLS_JWT_LIFETIME_HOURS = exports.BACKEND_TOOLS_JWT_ISSUER = exports.BACKEND_TOOLS_AUTH_COOKIE_NAME = void 0;
4
+ exports.BACKEND_TOOLS_AUTH_COOKIE_NAME = 'rw-tools';
5
+ exports.BACKEND_TOOLS_JWT_ISSUER = 'Remnawave';
6
+ exports.BACKEND_TOOLS_JWT_LIFETIME_HOURS = 2;
7
+ exports.BACKEND_TOOLS_JWT_SCOPES = {
8
+ ACCESS: 'access',
9
+ OTT: 'ott',
10
+ };
@@ -0,0 +1,2 @@
1
+ export * from './backend-tools.constants';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../constants/backend-tools/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("./backend-tools.constants"), exports);
@@ -5,7 +5,6 @@ export declare const CACHE_KEYS: {
5
5
  readonly SUBSCRIPTION_TEMPLATE: (name: string, type: TSubscriptionTemplateType) => string;
6
6
  readonly PASSKEY_REGISTRATION_OPTIONS: (uuid: string) => string;
7
7
  readonly PASSKEY_AUTHENTICATION_OPTIONS: (uuid: string) => string;
8
- readonly OTT: "ott";
9
8
  readonly REMNAWAVE_SETTINGS: "remnawave_settings";
10
9
  readonly NODE_SYSTEM_INFO: (uuid: string) => string;
11
10
  readonly NODE_SYSTEM_STATS: (uuid: string) => string;
@@ -14,9 +13,9 @@ export declare const CACHE_KEYS: {
14
13
  readonly NODE_XRAY_UPTIME: (uuid: string) => string;
15
14
  readonly RAW_INBOUND: (uuid: string) => string;
16
15
  readonly XRAY_JSON_TEMPLATE: (uuid: string) => string;
16
+ readonly EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid: string, type: TSubscriptionTemplateType) => string;
17
17
  };
18
18
  export declare const CACHE_KEYS_TTL: {
19
- readonly OTT: 60;
20
19
  readonly REMNAWAVE_SETTINGS: 86400;
21
20
  readonly EXTERNAL_SQUAD_SETTINGS: 3600;
22
21
  readonly SUBSCRIPTION_SETTINGS: 3600;
@@ -25,6 +24,7 @@ export declare const CACHE_KEYS_TTL: {
25
24
  readonly NODE_XRAY_UPTIME: 16;
26
25
  readonly RAW_INBOUND: 3600;
27
26
  readonly XRAY_JSON_TEMPLATE: 3600;
27
+ readonly EXTERNAL_SQUAD_TEMPLATE_NAME: 3600;
28
28
  };
29
29
  export declare const INTERNAL_CACHE_KEYS: {
30
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;;;sCAGpB,MAAM;uCACL,MAAM;uCACN,MAAM;mCACV,MAAM;sCACH,MAAM;iCACX,MAAM;wCACC,MAAM;CAC3B,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;CAUjB,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"}
@@ -7,7 +7,6 @@ exports.CACHE_KEYS = {
7
7
  SUBSCRIPTION_TEMPLATE: (name, type) => `subscription_template:${name}:${type}`,
8
8
  PASSKEY_REGISTRATION_OPTIONS: (uuid) => `passkey_registration_options:${uuid}`,
9
9
  PASSKEY_AUTHENTICATION_OPTIONS: (uuid) => `passkey_authentication_options:${uuid}`,
10
- OTT: 'ott',
11
10
  REMNAWAVE_SETTINGS: 'remnawave_settings',
12
11
  NODE_SYSTEM_INFO: (uuid) => `node_system_info:${uuid}`,
13
12
  NODE_SYSTEM_STATS: (uuid) => `node_system_stats:${uuid}`,
@@ -16,9 +15,9 @@ exports.CACHE_KEYS = {
16
15
  NODE_XRAY_UPTIME: (uuid) => `node_xray_uptime:${uuid}`,
17
16
  RAW_INBOUND: (uuid) => `raw_inbound:${uuid}`,
18
17
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
+ EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid, type) => `external_squad_template_name:${uuid}:${type}`,
19
19
  };
20
20
  exports.CACHE_KEYS_TTL = {
21
- OTT: 60, // 1 minute
22
21
  REMNAWAVE_SETTINGS: 86400, // 1 day
23
22
  EXTERNAL_SQUAD_SETTINGS: 3600, // 1 hour
24
23
  SUBSCRIPTION_SETTINGS: 3600, // 1 hour
@@ -27,6 +26,7 @@ exports.CACHE_KEYS_TTL = {
27
26
  NODE_XRAY_UPTIME: 16, // 16 seconds
28
27
  RAW_INBOUND: 3600, // 1 hour
29
28
  XRAY_JSON_TEMPLATE: 3600, // 1 hour
29
+ EXTERNAL_SQUAD_TEMPLATE_NAME: 3600, // 1 hour
30
30
  };
31
31
  exports.INTERNAL_CACHE_KEYS = {
32
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
  };
@@ -14,4 +14,5 @@ export * from './scopes';
14
14
  export * from './subscription-template';
15
15
  export * from './templates';
16
16
  export * from './users';
17
+ export * from './backend-tools';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -30,3 +30,4 @@ __exportStar(require("./scopes"), exports);
30
30
  __exportStar(require("./subscription-template"), exports);
31
31
  __exportStar(require("./templates"), exports);
32
32
  __exportStar(require("./users"), exports);
33
+ __exportStar(require("./backend-tools"), exports);
@@ -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}`,
@@ -8,7 +8,7 @@ var GetOttCommand;
8
8
  (function (GetOttCommand) {
9
9
  GetOttCommand.url = api_1.REST_API.API_TOKENS.OTT;
10
10
  GetOttCommand.TSQ_url = GetOttCommand.url;
11
- GetOttCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.API_TOKENS_ROUTES.OTT, 'post', 'Get one-time token for accessing backend tools (Swagger, Scalar, Bull Board)', { scope: 'ott', kind: 'write' });
11
+ GetOttCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.API_TOKENS_ROUTES.OTT, 'post', 'Get short-lived token for accessing backend tools (Swagger, Scalar, Bull Board)', { scope: 'ott', kind: 'write' });
12
12
  GetOttCommand.ResponseSchema = zod_1.z.object({
13
13
  response: zod_1.z.object({
14
14
  ott: zod_1.z.string(),
@@ -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);
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BACKEND_TOOLS_JWT_SCOPES = exports.BACKEND_TOOLS_JWT_LIFETIME_HOURS = exports.BACKEND_TOOLS_JWT_ISSUER = exports.BACKEND_TOOLS_AUTH_COOKIE_NAME = void 0;
4
+ exports.BACKEND_TOOLS_AUTH_COOKIE_NAME = 'rw-tools';
5
+ exports.BACKEND_TOOLS_JWT_ISSUER = 'Remnawave';
6
+ exports.BACKEND_TOOLS_JWT_LIFETIME_HOURS = 2;
7
+ exports.BACKEND_TOOLS_JWT_SCOPES = {
8
+ ACCESS: 'access',
9
+ OTT: 'ott',
10
+ };
@@ -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("./backend-tools.constants"), exports);
@@ -7,7 +7,6 @@ exports.CACHE_KEYS = {
7
7
  SUBSCRIPTION_TEMPLATE: (name, type) => `subscription_template:${name}:${type}`,
8
8
  PASSKEY_REGISTRATION_OPTIONS: (uuid) => `passkey_registration_options:${uuid}`,
9
9
  PASSKEY_AUTHENTICATION_OPTIONS: (uuid) => `passkey_authentication_options:${uuid}`,
10
- OTT: 'ott',
11
10
  REMNAWAVE_SETTINGS: 'remnawave_settings',
12
11
  NODE_SYSTEM_INFO: (uuid) => `node_system_info:${uuid}`,
13
12
  NODE_SYSTEM_STATS: (uuid) => `node_system_stats:${uuid}`,
@@ -16,9 +15,9 @@ exports.CACHE_KEYS = {
16
15
  NODE_XRAY_UPTIME: (uuid) => `node_xray_uptime:${uuid}`,
17
16
  RAW_INBOUND: (uuid) => `raw_inbound:${uuid}`,
18
17
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
+ EXTERNAL_SQUAD_TEMPLATE_NAME: (uuid, type) => `external_squad_template_name:${uuid}:${type}`,
19
19
  };
20
20
  exports.CACHE_KEYS_TTL = {
21
- OTT: 60, // 1 minute
22
21
  REMNAWAVE_SETTINGS: 86400, // 1 day
23
22
  EXTERNAL_SQUAD_SETTINGS: 3600, // 1 hour
24
23
  SUBSCRIPTION_SETTINGS: 3600, // 1 hour
@@ -27,6 +26,7 @@ exports.CACHE_KEYS_TTL = {
27
26
  NODE_XRAY_UPTIME: 16, // 16 seconds
28
27
  RAW_INBOUND: 3600, // 1 hour
29
28
  XRAY_JSON_TEMPLATE: 3600, // 1 hour
29
+ EXTERNAL_SQUAD_TEMPLATE_NAME: 3600, // 1 hour
30
30
  };
31
31
  exports.INTERNAL_CACHE_KEYS = {
32
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
  };
@@ -30,3 +30,4 @@ __exportStar(require("./scopes"), exports);
30
30
  __exportStar(require("./subscription-template"), exports);
31
31
  __exportStar(require("./templates"), exports);
32
32
  __exportStar(require("./users"), exports);
33
+ __exportStar(require("./backend-tools"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnawave/backend-contract",
3
- "version": "2.9.12",
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",