@barumetric/common 1.0.5 → 1.0.8

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.
@@ -22,6 +22,6 @@ export declare const GRPC_CLIENTS: {
22
22
  readonly CATEGORIES_PACKAGE: {
23
23
  readonly package: "categories.v1";
24
24
  readonly protoPath: string;
25
- readonly env: "MEDIA_GRPC_URL";
25
+ readonly env: "CATEGORIES_GRPC_URL";
26
26
  };
27
27
  };
@@ -26,6 +26,6 @@ exports.GRPC_CLIENTS = {
26
26
  CATEGORIES_PACKAGE: {
27
27
  package: 'categories.v1',
28
28
  protoPath: contracts_1.PROTO_PATHS.CATEGORIES,
29
- env: 'MEDIA_GRPC_URL'
29
+ env: 'CATEGORIES_GRPC_URL'
30
30
  }
31
31
  };
@@ -1 +1,2 @@
1
1
  export * from './convert-enum';
2
+ export * from './long-to-number';
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./convert-enum"), exports);
18
+ __exportStar(require("./long-to-number"), exports);
@@ -0,0 +1,16 @@
1
+ export type ProtoLong = {
2
+ low: number;
3
+ high: number;
4
+ unsigned: boolean;
5
+ };
6
+ /**
7
+ * Преобразует protobuf Long в JavaScript number.
8
+ * Безопасно для положительных чисел до ~9 квадриллионов (2^53-1).
9
+ * Если число больше — вернёт приближённое значение (потеря точности в младших битах).
10
+ */
11
+ export declare function longToNumber(long: ProtoLong | null | undefined): number;
12
+ /**
13
+ * Если боишься переполнения (число > 2^53-1), лучше возвращать строку.
14
+ * Тогда в UI можно отображать как есть, без потери точности.
15
+ */
16
+ export declare function longToString(long: ProtoLong | null | undefined): string;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // src/utils/long.ts или @teacinema/common/long.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.longToNumber = longToNumber;
5
+ exports.longToString = longToString;
6
+ /**
7
+ * Преобразует protobuf Long в JavaScript number.
8
+ * Безопасно для положительных чисел до ~9 квадриллионов (2^53-1).
9
+ * Если число больше — вернёт приближённое значение (потеря точности в младших битах).
10
+ */
11
+ function longToNumber(long) {
12
+ if (!long)
13
+ return 0;
14
+ const low = long.low;
15
+ const high = long.high;
16
+ // 4294967296 = 2^32
17
+ if (long.unsigned) {
18
+ // Для unsigned: всегда положительное
19
+ return low + high * 4294967296;
20
+ }
21
+ else {
22
+ // Для signed (твой ads_count — signed int64)
23
+ if (high >= 0) {
24
+ return low + high * 4294967296;
25
+ }
26
+ else {
27
+ // Отрицательное число (редко для счётчиков, но на всякий)
28
+ return low + high * 4294967296;
29
+ }
30
+ }
31
+ }
32
+ /**
33
+ * Если боишься переполнения (число > 2^53-1), лучше возвращать строку.
34
+ * Тогда в UI можно отображать как есть, без потери точности.
35
+ */
36
+ function longToString(long) {
37
+ if (!long)
38
+ return '0';
39
+ // Если в проекте подключена библиотека long.js (часто идёт с protobufjs или ts-proto)
40
+ // Можно использовать её:
41
+ // return Long.fromBits(long.low, long.high, long.unsigned).toString();
42
+ // Простая реализация без зависимости
43
+ if (long.high === 0 && long.low >= 0) {
44
+ return long.low.toString();
45
+ }
46
+ // Для больших чисел: простое преобразование (может потерять точность, но для отображения сойдёт)
47
+ const num = longToNumber(long);
48
+ return num.toString();
49
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barumetric/common",
3
- "version": "1.0.5",
3
+ "version": "1.0.8",
4
4
  "description": "Core shared components for BaruMetric microservice ecosystem",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
- "@barumetric/contracts": "^1.1.6",
24
+ "@barumetric/contracts": "^1.2.0",
25
25
  "@nestjs/common": "^11.1.11",
26
26
  "@nestjs/config": "^4.0.2",
27
27
  "@nestjs/microservices": "^11.1.11"