@remnawave/backend-contract 2.9.9 → 2.9.12

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 (82) hide show
  1. package/build/backend/api/controllers/api-tokens.d.ts +1 -0
  2. package/build/backend/api/controllers/api-tokens.d.ts.map +1 -1
  3. package/build/backend/api/controllers/api-tokens.js +1 -0
  4. package/build/backend/api/controllers/users.d.ts +4 -0
  5. package/build/backend/api/controllers/users.d.ts.map +1 -1
  6. package/build/backend/api/controllers/users.js +4 -0
  7. package/build/backend/api/routes.d.ts +5 -1
  8. package/build/backend/api/routes.d.ts.map +1 -1
  9. package/build/backend/api/routes.js +6 -2
  10. package/build/backend/commands/api-tokens/create.command.d.ts +1 -1
  11. package/build/backend/commands/api-tokens/create.command.js +1 -1
  12. package/build/backend/commands/api-tokens/get-api-tokens.command.d.ts +0 -5
  13. package/build/backend/commands/api-tokens/get-api-tokens.command.d.ts.map +1 -1
  14. package/build/backend/commands/api-tokens/get-api-tokens.command.js +0 -5
  15. package/build/backend/commands/api-tokens/get-ott.command.d.ts +13 -0
  16. package/build/backend/commands/api-tokens/get-ott.command.d.ts.map +1 -0
  17. package/build/backend/commands/api-tokens/get-ott.command.js +17 -0
  18. package/build/backend/commands/api-tokens/index.d.ts +1 -0
  19. package/build/backend/commands/api-tokens/index.d.ts.map +1 -1
  20. package/build/backend/commands/api-tokens/index.js +1 -0
  21. package/build/backend/commands/auth/login.command.js +2 -2
  22. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-stats-node-user-usage.command.d.ts +4 -4
  23. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-stats-node-user-usage.command.d.ts.map +1 -1
  24. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-stats-node-user-usage.command.js +4 -5
  25. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-user-usage.command.d.ts +4 -4
  26. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-user-usage.command.d.ts.map +1 -1
  27. package/build/backend/commands/bandwidth-stats/legacy/get-legacy-user-usage.command.js +4 -5
  28. package/build/backend/commands/bandwidth-stats/nodes/get-stats-node-users-usage.command.d.ts +3 -3
  29. package/build/backend/commands/bandwidth-stats/nodes/get-stats-node-users-usage.command.d.ts.map +1 -1
  30. package/build/backend/commands/bandwidth-stats/nodes/get-stats-node-users-usage.command.js +3 -4
  31. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-usage.command.d.ts +5 -5
  32. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-usage.command.d.ts.map +1 -1
  33. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-usage.command.js +9 -6
  34. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-users-usage.command.d.ts +2 -2
  35. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-users-usage.command.d.ts.map +1 -1
  36. package/build/backend/commands/bandwidth-stats/nodes/get-stats-nodes-users-usage.command.js +2 -3
  37. package/build/backend/commands/users/get-by/get-user-by-id.command.d.ts +1 -1
  38. package/build/backend/commands/users/get-by/get-user-by-id.command.d.ts.map +1 -1
  39. package/build/backend/commands/users/get-by/get-user-by-id.command.js +1 -2
  40. package/build/backend/commands/users/get-users-stream.command.d.ts +1 -1
  41. package/build/backend/commands/users/get-users-stream.command.d.ts.map +1 -1
  42. package/build/backend/commands/users/get-users-stream.command.js +6 -2
  43. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts +2 -0
  44. package/build/backend/constants/cache-keys/cache-keys.constants.d.ts.map +1 -1
  45. package/build/backend/constants/cache-keys/cache-keys.constants.js +2 -0
  46. package/build/backend/index.d.ts +0 -1
  47. package/build/backend/index.d.ts.map +1 -1
  48. package/build/backend/index.js +0 -1
  49. package/build/frontend/api/controllers/api-tokens.js +1 -0
  50. package/build/frontend/api/controllers/users.js +4 -0
  51. package/build/frontend/api/routes.js +6 -2
  52. package/build/frontend/commands/api-tokens/create.command.js +1 -1
  53. package/build/frontend/commands/api-tokens/get-api-tokens.command.js +0 -5
  54. package/build/frontend/commands/api-tokens/get-ott.command.js +17 -0
  55. package/build/frontend/commands/api-tokens/index.js +1 -0
  56. package/build/frontend/commands/auth/login.command.js +2 -2
  57. package/build/frontend/commands/bandwidth-stats/legacy/get-legacy-stats-node-user-usage.command.js +4 -5
  58. package/build/frontend/commands/bandwidth-stats/legacy/get-legacy-user-usage.command.js +4 -5
  59. package/build/frontend/commands/bandwidth-stats/nodes/get-stats-node-users-usage.command.js +3 -4
  60. package/build/frontend/commands/bandwidth-stats/nodes/get-stats-nodes-usage.command.js +9 -6
  61. package/build/frontend/commands/bandwidth-stats/nodes/get-stats-nodes-users-usage.command.js +2 -3
  62. package/build/frontend/commands/users/get-by/get-user-by-id.command.js +1 -2
  63. package/build/frontend/commands/users/get-users-stream.command.js +6 -2
  64. package/build/frontend/constants/cache-keys/cache-keys.constants.js +2 -0
  65. package/build/frontend/index.js +0 -1
  66. package/package.json +1 -1
  67. package/build/backend/codecs/datetime-to-date.codec.d.ts +0 -3
  68. package/build/backend/codecs/datetime-to-date.codec.d.ts.map +0 -1
  69. package/build/backend/codecs/datetime-to-date.codec.js +0 -11
  70. package/build/backend/codecs/index.d.ts +0 -4
  71. package/build/backend/codecs/index.d.ts.map +0 -1
  72. package/build/backend/codecs/index.js +0 -19
  73. package/build/backend/codecs/string-to-bigint.codec.d.ts +0 -3
  74. package/build/backend/codecs/string-to-bigint.codec.d.ts.map +0 -1
  75. package/build/backend/codecs/string-to-bigint.codec.js +0 -11
  76. package/build/backend/codecs/string-to-int.codec.d.ts +0 -3
  77. package/build/backend/codecs/string-to-int.codec.d.ts.map +0 -1
  78. package/build/backend/codecs/string-to-int.codec.js +0 -11
  79. package/build/frontend/codecs/datetime-to-date.codec.js +0 -11
  80. package/build/frontend/codecs/index.js +0 -19
  81. package/build/frontend/codecs/string-to-bigint.codec.js +0 -11
  82. package/build/frontend/codecs/string-to-int.codec.js +0 -11
@@ -5,6 +5,7 @@ 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";
8
9
  readonly REMNAWAVE_SETTINGS: "remnawave_settings";
9
10
  readonly NODE_SYSTEM_INFO: (uuid: string) => string;
10
11
  readonly NODE_SYSTEM_STATS: (uuid: string) => string;
@@ -15,6 +16,7 @@ export declare const CACHE_KEYS: {
15
16
  readonly XRAY_JSON_TEMPLATE: (uuid: string) => string;
16
17
  };
17
18
  export declare const CACHE_KEYS_TTL: {
19
+ readonly OTT: 60;
18
20
  readonly REMNAWAVE_SETTINGS: 86400;
19
21
  readonly EXTERNAL_SQUAD_SETTINGS: 3600;
20
22
  readonly SUBSCRIPTION_SETTINGS: 3600;
@@ -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;;;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"}
@@ -7,6 +7,7 @@ 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',
10
11
  REMNAWAVE_SETTINGS: 'remnawave_settings',
11
12
  NODE_SYSTEM_INFO: (uuid) => `node_system_info:${uuid}`,
12
13
  NODE_SYSTEM_STATS: (uuid) => `node_system_stats:${uuid}`,
@@ -17,6 +18,7 @@ exports.CACHE_KEYS = {
17
18
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
19
  };
19
20
  exports.CACHE_KEYS_TTL = {
21
+ OTT: 60, // 1 minute
20
22
  REMNAWAVE_SETTINGS: 86400, // 1 day
21
23
  EXTERNAL_SQUAD_SETTINGS: 3600, // 1 hour
22
24
  SUBSCRIPTION_SETTINGS: 3600, // 1 hour
@@ -2,5 +2,4 @@ export * from './api';
2
2
  export * from './commands';
3
3
  export * from './constants';
4
4
  export * from './models';
5
- export * from './codecs';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -18,4 +18,3 @@ __exportStar(require("./api"), exports);
18
18
  __exportStar(require("./commands"), exports);
19
19
  __exportStar(require("./constants"), exports);
20
20
  __exportStar(require("./models"), exports);
21
- __exportStar(require("./codecs"), exports);
@@ -7,4 +7,5 @@ exports.API_TOKENS_ROUTES = {
7
7
  DELETE: (uuid) => `${uuid}`,
8
8
  GET: '',
9
9
  GET_SCOPES: 'scopes',
10
+ OTT: 'ott',
10
11
  };
@@ -22,6 +22,10 @@ exports.USERS_ROUTES = {
22
22
  ID: (id) => `by-id/${id}`,
23
23
  SHORT_UUID: (shortUuid) => `by-short-uuid/${shortUuid}`,
24
24
  USERNAME: (username) => `by-username/${username}`,
25
+ SUBSCRIPTION_UUID: (subscriptionUuid) => `by-subscription-uuid/${subscriptionUuid}`,
26
+ TELEGRAM_ID: (telegramId) => `by-telegram-id/${telegramId}`,
27
+ EMAIL: (email) => `by-email/${email}`,
28
+ TAG: (tag) => `by-tag/${tag}`,
25
29
  },
26
30
  BULK: {
27
31
  DELETE_BY_STATUS: 'bulk/delete-by-status',
@@ -33,12 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.REST_API = exports.BULLBOARD_ROOT = exports.HEALTH_ROOT = exports.METRICS_ROOT = exports.ROOT = void 0;
36
+ exports.REST_API = exports.SCALAR_ROOT = exports.SWAGGER_ROOT = exports.BULLBOARD_ROOT = exports.BACKEND_TOOLS_ROOT = exports.HEALTH_ROOT = exports.METRICS_ROOT = exports.ROOT = void 0;
37
37
  const CONTROLLERS = __importStar(require("./controllers"));
38
38
  exports.ROOT = '/api';
39
39
  exports.METRICS_ROOT = '/metrics';
40
40
  exports.HEALTH_ROOT = '/health';
41
- exports.BULLBOARD_ROOT = '/queues';
41
+ exports.BACKEND_TOOLS_ROOT = '/backend-tools';
42
+ exports.BULLBOARD_ROOT = '/backend-tools/queues';
43
+ exports.SWAGGER_ROOT = '/backend-tools/swagger';
44
+ exports.SCALAR_ROOT = '/backend-tools/scalar';
42
45
  exports.REST_API = {
43
46
  AUTH: {
44
47
  LOGIN: `${exports.ROOT}/${CONTROLLERS.AUTH_CONTROLLER}/${CONTROLLERS.AUTH_ROUTES.LOGIN}`,
@@ -66,6 +69,7 @@ exports.REST_API = {
66
69
  DELETE: (uuid) => `${exports.ROOT}/${CONTROLLERS.API_TOKENS_CONTROLLER}/${CONTROLLERS.API_TOKENS_ROUTES.DELETE(uuid)}`,
67
70
  GET: `${exports.ROOT}/${CONTROLLERS.API_TOKENS_CONTROLLER}/${CONTROLLERS.API_TOKENS_ROUTES.GET}`,
68
71
  GET_SCOPES: `${exports.ROOT}/${CONTROLLERS.API_TOKENS_CONTROLLER}/${CONTROLLERS.API_TOKENS_ROUTES.GET_SCOPES}`,
72
+ OTT: `${exports.ROOT}/${CONTROLLERS.API_TOKENS_CONTROLLER}/${CONTROLLERS.API_TOKENS_ROUTES.OTT}`,
69
73
  },
70
74
  KEYGEN: {
71
75
  GET: `${exports.ROOT}/${CONTROLLERS.KEYGEN_CONTROLLER}/${CONTROLLERS.KEYGEN_ROUTES.GET}`,
@@ -12,7 +12,7 @@ var CreateApiTokenCommand;
12
12
  CreateApiTokenCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.API_TOKENS_ROUTES.CREATE, 'post', 'Create a new API token', { scope: 'create', kind: 'write' }, 'This endpoint is forbidden to use via "API-key". It can only be used with an admin JWT-token.');
13
13
  CreateApiTokenCommand.RequestBodySchema = zod_1.z.object({
14
14
  name: zod_1.z.string().min(2).max(30).describe('Name of the API token'),
15
- expiresInDays: zod_1.z.int32().min(1).describe('Expiration days of the API token'),
15
+ expiresInDays: zod_1.z.number().min(1).describe('Expiration days of the API token'),
16
16
  scopes: zod_1.z.array(zod_1.z.string()).optional().default(['*']).describe('Scopes of the API token'),
17
17
  });
18
18
  CreateApiTokenCommand.ResponseSchema = zod_1.z.object({
@@ -13,11 +13,6 @@ var GetApiTokensCommand;
13
13
  GetApiTokensCommand.ResponseSchema = zod_1.z.object({
14
14
  response: zod_1.z.object({
15
15
  tokens: zod_1.z.array(api_tokens_schema_1.ApiTokensSchema),
16
- docs: zod_1.z.object({
17
- enabled: zod_1.z.boolean(),
18
- scalarPath: zod_1.z.string().nullable(),
19
- swaggerPath: zod_1.z.string().nullable(),
20
- }),
21
16
  }),
22
17
  });
23
18
  })(GetApiTokensCommand || (exports.GetApiTokensCommand = GetApiTokensCommand = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOttCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const api_1 = require("../../api");
6
+ const constants_1 = require("../../constants");
7
+ var GetOttCommand;
8
+ (function (GetOttCommand) {
9
+ GetOttCommand.url = api_1.REST_API.API_TOKENS.OTT;
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' });
12
+ GetOttCommand.ResponseSchema = zod_1.z.object({
13
+ response: zod_1.z.object({
14
+ ott: zod_1.z.string(),
15
+ }),
16
+ });
17
+ })(GetOttCommand || (exports.GetOttCommand = GetOttCommand = {}));
@@ -18,3 +18,4 @@ __exportStar(require("./create.command"), exports);
18
18
  __exportStar(require("./delete.command"), exports);
19
19
  __exportStar(require("./get-api-tokens.command"), exports);
20
20
  __exportStar(require("./get-scopes.command"), exports);
21
+ __exportStar(require("./get-ott.command"), exports);
@@ -10,8 +10,8 @@ var LoginCommand;
10
10
  LoginCommand.TSQ_url = LoginCommand.url;
11
11
  LoginCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.AUTH_ROUTES.LOGIN, 'post', 'Login as superadmin', { scope: 'login', kind: 'write' });
12
12
  LoginCommand.RequestBodySchema = zod_1.z.object({
13
- username: zod_1.z.string(),
14
- password: zod_1.z.string(),
13
+ username: zod_1.z.string().describe('Username of the user'),
14
+ password: zod_1.z.string().describe('Password of the user'),
15
15
  });
16
16
  LoginCommand.ResponseSchema = zod_1.z.object({
17
17
  response: zod_1.z.object({
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetLegacyStatsNodeUserUsageCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  var GetLegacyStatsNodeUserUsageCommand;
9
8
  (function (GetLegacyStatsNodeUserUsageCommand) {
@@ -14,16 +13,16 @@ var GetLegacyStatsNodeUserUsageCommand;
14
13
  uuid: zod_1.z.uuid().describe('UUID of the node'),
15
14
  });
16
15
  GetLegacyStatsNodeUserUsageCommand.RequestQuerySchema = zod_1.z.object({
17
- start: codecs_1.isoDatetimeToDate.describe('Start date'),
18
- end: codecs_1.isoDatetimeToDate.describe('End date'),
16
+ start: zod_1.z.iso.datetime().describe('Start date'),
17
+ end: zod_1.z.iso.datetime().describe('End date'),
19
18
  });
20
19
  GetLegacyStatsNodeUserUsageCommand.ResponseSchema = zod_1.z.object({
21
20
  response: zod_1.z.array(zod_1.z.object({
22
21
  userUuid: zod_1.z.uuid(),
23
22
  username: zod_1.z.string(),
24
23
  nodeUuid: zod_1.z.uuid(),
25
- total: zod_1.z.int32(),
26
- date: codecs_1.isoDatetimeToDate,
24
+ total: zod_1.z.number(),
25
+ date: zod_1.z.string().transform((str) => new Date(str)),
27
26
  })),
28
27
  });
29
28
  })(GetLegacyStatsNodeUserUsageCommand || (exports.GetLegacyStatsNodeUserUsageCommand = GetLegacyStatsNodeUserUsageCommand = {}));
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetLegacyStatsUserUsageCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  var GetLegacyStatsUserUsageCommand;
9
8
  (function (GetLegacyStatsUserUsageCommand) {
@@ -14,8 +13,8 @@ var GetLegacyStatsUserUsageCommand;
14
13
  uuid: zod_1.z.uuid(),
15
14
  });
16
15
  GetLegacyStatsUserUsageCommand.RequestQuerySchema = zod_1.z.object({
17
- start: codecs_1.isoDatetimeToDate.describe('Start date'),
18
- end: codecs_1.isoDatetimeToDate.describe('End date'),
16
+ start: zod_1.z.iso.datetime().describe('Start date'),
17
+ end: zod_1.z.iso.datetime().describe('End date'),
19
18
  });
20
19
  GetLegacyStatsUserUsageCommand.ResponseSchema = zod_1.z.object({
21
20
  response: zod_1.z.array(zod_1.z.object({
@@ -23,8 +22,8 @@ var GetLegacyStatsUserUsageCommand;
23
22
  nodeUuid: zod_1.z.uuid(),
24
23
  nodeName: zod_1.z.string(),
25
24
  countryCode: zod_1.z.string(),
26
- total: zod_1.z.int32(),
27
- date: codecs_1.isoDatetimeToDate,
25
+ total: zod_1.z.number(),
26
+ date: zod_1.z.string().transform((str) => new Date(str)),
28
27
  })),
29
28
  });
30
29
  })(GetLegacyStatsUserUsageCommand || (exports.GetLegacyStatsUserUsageCommand = GetLegacyStatsUserUsageCommand = {}));
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetStatsNodeUsersUsageCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  var GetStatsNodeUsersUsageCommand;
9
8
  (function (GetStatsNodeUsersUsageCommand) {
@@ -16,16 +15,16 @@ var GetStatsNodeUsersUsageCommand;
16
15
  GetStatsNodeUsersUsageCommand.RequestQuerySchema = zod_1.z.object({
17
16
  start: zod_1.z.iso.date().describe('Start date (YYYY-MM-DD)'),
18
17
  end: zod_1.z.iso.date().describe('End date (YYYY-MM-DD)'),
19
- topUsersLimit: zod_1.z.int32().min(1).default(100),
18
+ topUsersLimit: zod_1.z.coerce.number().min(1).default(100),
20
19
  });
21
20
  GetStatsNodeUsersUsageCommand.ResponseSchema = zod_1.z.object({
22
21
  response: zod_1.z.object({
23
22
  categories: zod_1.z.array(zod_1.z.string()),
24
- sparklineData: zod_1.z.array(codecs_1.stringToBigInt),
23
+ sparklineData: zod_1.z.array(zod_1.z.number()),
25
24
  topUsers: zod_1.z.array(zod_1.z.object({
26
25
  color: zod_1.z.string(),
27
26
  username: zod_1.z.string(),
28
- total: zod_1.z.int32(),
27
+ total: zod_1.z.number(),
29
28
  })),
30
29
  }),
31
30
  });
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetStatsNodesUsageCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  var GetStatsNodesUsageCommand;
9
8
  (function (GetStatsNodesUsageCommand) {
@@ -13,26 +12,30 @@ var GetStatsNodesUsageCommand;
13
12
  GetStatsNodesUsageCommand.RequestQuerySchema = zod_1.z.object({
14
13
  start: zod_1.z.iso.date().describe('Start date (YYYY-MM-DD)'),
15
14
  end: zod_1.z.iso.date().describe('End date (YYYY-MM-DD)'),
16
- topNodesLimit: zod_1.z.int32().min(1).default(20).describe('Limit of top nodes to return'),
15
+ topNodesLimit: zod_1.z.coerce
16
+ .number()
17
+ .min(1)
18
+ .default(20)
19
+ .describe('Limit of top nodes to return'),
17
20
  });
18
21
  GetStatsNodesUsageCommand.ResponseSchema = zod_1.z.object({
19
22
  response: zod_1.z.object({
20
23
  categories: zod_1.z.array(zod_1.z.string()),
21
- sparklineData: zod_1.z.array(codecs_1.stringToBigInt),
24
+ sparklineData: zod_1.z.array(zod_1.z.number()),
22
25
  topNodes: zod_1.z.array(zod_1.z.object({
23
26
  uuid: zod_1.z.uuid(),
24
27
  color: zod_1.z.string(),
25
28
  name: zod_1.z.string(),
26
29
  countryCode: zod_1.z.string(),
27
- total: zod_1.z.int32(),
30
+ total: zod_1.z.number(),
28
31
  })),
29
32
  series: zod_1.z.array(zod_1.z.object({
30
33
  uuid: zod_1.z.uuid(),
31
34
  name: zod_1.z.string(),
32
35
  color: zod_1.z.string(),
33
36
  countryCode: zod_1.z.string(),
34
- total: zod_1.z.int32(),
35
- data: zod_1.z.array(codecs_1.stringToBigInt),
37
+ total: zod_1.z.number(),
38
+ data: zod_1.z.array(zod_1.z.number()),
36
39
  })),
37
40
  }),
38
41
  });
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetStatsNodesUsersUsageCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  var GetStatsNodesUsersUsageCommand;
9
8
  (function (GetStatsNodesUsersUsageCommand) {
@@ -21,11 +20,11 @@ var GetStatsNodesUsersUsageCommand;
21
20
  GetStatsNodesUsersUsageCommand.ResponseSchema = zod_1.z.object({
22
21
  response: zod_1.z.object({
23
22
  categories: zod_1.z.array(zod_1.z.string()),
24
- sparklineData: zod_1.z.array(codecs_1.stringToBigInt),
23
+ sparklineData: zod_1.z.array(zod_1.z.number()),
25
24
  topUsers: zod_1.z.array(zod_1.z.object({
26
25
  color: zod_1.z.string(),
27
26
  username: zod_1.z.string(),
28
- total: zod_1.z.int32(),
27
+ total: zod_1.z.number(),
29
28
  })),
30
29
  }),
31
30
  });
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetUserByIdCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../../api");
6
- const codecs_1 = require("../../../codecs");
7
6
  const constants_1 = require("../../../constants");
8
7
  const user_response_1 = require("../user.response");
9
8
  var GetUserByIdCommand;
@@ -12,7 +11,7 @@ var GetUserByIdCommand;
12
11
  GetUserByIdCommand.TSQ_url = GetUserByIdCommand.url(':id');
13
12
  GetUserByIdCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.USERS_ROUTES.GET_BY.ID(':id'), 'get', 'Get user by ID', { scope: 'by-id', kind: 'read' });
14
13
  GetUserByIdCommand.RequestParamSchema = zod_1.z.object({
15
- id: codecs_1.stringToBigInt,
14
+ id: zod_1.z.string().transform(Number).pipe(zod_1.z.number().nonnegative()),
16
15
  });
17
16
  GetUserByIdCommand.ResponseSchema = user_response_1.UserResponseSchema;
18
17
  })(GetUserByIdCommand || (exports.GetUserByIdCommand = GetUserByIdCommand = {}));
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetUsersStreamCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const api_1 = require("../../api");
6
- const codecs_1 = require("../../codecs");
7
6
  const constants_1 = require("../../constants");
8
7
  const models_1 = require("../../models");
9
8
  var GetUsersStreamCommand;
@@ -29,7 +28,12 @@ var GetUsersStreamCommand;
29
28
  .enum(constants_1.RESET_PERIODS)
30
29
  .optional()
31
30
  .describe('Traffic limit strategy to filter users by'),
32
- telegramId: codecs_1.stringToBigInt.optional().describe('Telegram ID to filter users by'),
31
+ telegramId: zod_1.z
32
+ .string()
33
+ .transform(Number)
34
+ .pipe(zod_1.z.number().nonnegative())
35
+ .optional()
36
+ .describe('Telegram ID to filter users by'),
33
37
  email: zod_1.z.email().optional().describe('Email to filter users by'),
34
38
  tag: zod_1.z.string().optional().describe('Tag to filter users by'),
35
39
  externalSquadUuid: zod_1.z.uuid().optional().describe('External squad UUID to filter users by'),
@@ -7,6 +7,7 @@ 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',
10
11
  REMNAWAVE_SETTINGS: 'remnawave_settings',
11
12
  NODE_SYSTEM_INFO: (uuid) => `node_system_info:${uuid}`,
12
13
  NODE_SYSTEM_STATS: (uuid) => `node_system_stats:${uuid}`,
@@ -17,6 +18,7 @@ exports.CACHE_KEYS = {
17
18
  XRAY_JSON_TEMPLATE: (uuid) => `xray_json_template:${uuid}`,
18
19
  };
19
20
  exports.CACHE_KEYS_TTL = {
21
+ OTT: 60, // 1 minute
20
22
  REMNAWAVE_SETTINGS: 86400, // 1 day
21
23
  EXTERNAL_SQUAD_SETTINGS: 3600, // 1 hour
22
24
  SUBSCRIPTION_SETTINGS: 3600, // 1 hour
@@ -18,4 +18,3 @@ __exportStar(require("./api"), exports);
18
18
  __exportStar(require("./commands"), exports);
19
19
  __exportStar(require("./constants"), exports);
20
20
  __exportStar(require("./models"), exports);
21
- __exportStar(require("./codecs"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnawave/backend-contract",
3
- "version": "2.9.9",
3
+ "version": "2.9.12",
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",
@@ -1,3 +0,0 @@
1
- import z from 'zod';
2
- export declare const isoDatetimeToDate: z.ZodCodec<z.ZodISODateTime, z.ZodDate>;
3
- //# sourceMappingURL=datetime-to-date.codec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"datetime-to-date.codec.d.ts","sourceRoot":"","sources":["../../../codecs/datetime-to-date.codec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,iBAAiB,yCAG5B,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isoDatetimeToDate = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.isoDatetimeToDate = zod_1.default.codec(zod_1.default.iso.datetime(), zod_1.default.date(), {
9
- decode: (isoString) => new Date(isoString),
10
- encode: (date) => date.toISOString(),
11
- });
@@ -1,4 +0,0 @@
1
- export * from './string-to-bigint.codec';
2
- export * from './datetime-to-date.codec';
3
- export * from './string-to-int.codec';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../codecs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
@@ -1,19 +0,0 @@
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("./string-to-bigint.codec"), exports);
18
- __exportStar(require("./datetime-to-date.codec"), exports);
19
- __exportStar(require("./string-to-int.codec"), exports);
@@ -1,3 +0,0 @@
1
- import z from 'zod';
2
- export declare const stringToBigInt: z.ZodCodec<z.ZodString, z.ZodBigInt>;
3
- //# sourceMappingURL=string-to-bigint.codec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-to-bigint.codec.d.ts","sourceRoot":"","sources":["../../../codecs/string-to-bigint.codec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,cAAc,sCAGzB,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.stringToBigInt = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.stringToBigInt = zod_1.default.codec(zod_1.default.string(), zod_1.default.bigint(), {
9
- decode: (str) => BigInt(str),
10
- encode: (bigint) => bigint.toString(),
11
- });
@@ -1,3 +0,0 @@
1
- import z from 'zod';
2
- export declare const stringToInt: z.ZodCodec<z.ZodString, z.ZodInt32>;
3
- //# sourceMappingURL=string-to-int.codec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-to-int.codec.d.ts","sourceRoot":"","sources":["../../../codecs/string-to-int.codec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,WAAW,qCAGtB,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.stringToInt = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.stringToInt = zod_1.default.codec(zod_1.default.string().regex(zod_1.default.regexes.integer), zod_1.default.int32(), {
9
- decode: (str) => Number.parseInt(str, 10),
10
- encode: (num) => num.toString(),
11
- });
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isoDatetimeToDate = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.isoDatetimeToDate = zod_1.default.codec(zod_1.default.iso.datetime(), zod_1.default.date(), {
9
- decode: (isoString) => new Date(isoString),
10
- encode: (date) => date.toISOString(),
11
- });
@@ -1,19 +0,0 @@
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("./string-to-bigint.codec"), exports);
18
- __exportStar(require("./datetime-to-date.codec"), exports);
19
- __exportStar(require("./string-to-int.codec"), exports);
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.stringToBigInt = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.stringToBigInt = zod_1.default.codec(zod_1.default.string(), zod_1.default.bigint(), {
9
- decode: (str) => BigInt(str),
10
- encode: (bigint) => bigint.toString(),
11
- });
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.stringToInt = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.stringToInt = zod_1.default.codec(zod_1.default.string().regex(zod_1.default.regexes.integer), zod_1.default.int32(), {
9
- decode: (str) => Number.parseInt(str, 10),
10
- encode: (num) => num.toString(),
11
- });