@naturalcycles/js-lib 14.137.0 → 14.139.0

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.
@@ -61,3 +61,5 @@ export declare function _numberEnumKeyNullable<T extends NumberEnum>(en: T, v: T
61
61
  * Returns a String key for given NumberEnum value, throws if not found.
62
62
  */
63
63
  export declare function _numberEnumKey<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T;
64
+ export declare function _stringEnumKeyNullable<T extends StringEnum>(en: T, v: string | undefined | null): keyof T | undefined;
65
+ export declare function _stringEnumKey<T extends StringEnum>(en: T, v: string | undefined | null): keyof T;
package/dist/enum.util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._numberEnumKey = exports._numberEnumKeyNullable = exports._numberEnumNormalizeNullable = exports._numberEnumNormalize = exports._numberEnumInverseNullable = exports._numberEnumInverse = exports._stringEnumEntries = exports._numberEnumEntries = exports._stringEnumValues = exports._stringEnumKeys = exports._numberEnumValues = exports._numberEnumKeys = void 0;
3
+ exports._stringEnumKey = exports._stringEnumKeyNullable = exports._numberEnumKey = exports._numberEnumKeyNullable = exports._numberEnumNormalizeNullable = exports._numberEnumNormalize = exports._numberEnumInverseNullable = exports._numberEnumInverse = exports._stringEnumEntries = exports._numberEnumEntries = exports._stringEnumValues = exports._stringEnumKeys = exports._numberEnumValues = exports._numberEnumKeys = void 0;
4
4
  /**
5
5
  * Returns all number keys of a number-enum.
6
6
  */
@@ -49,7 +49,7 @@ exports._numberEnumEntries = _numberEnumEntries;
49
49
  * Doesn't work on Number-enums!
50
50
  */
51
51
  function _stringEnumEntries(en) {
52
- return Object.keys(en).map(k => [k, en[k]]);
52
+ return Object.entries(en);
53
53
  }
54
54
  exports._stringEnumEntries = _stringEnumEntries;
55
55
  /**
@@ -110,7 +110,20 @@ function _numberEnumKey(en, v) {
110
110
  const key = en[v];
111
111
  // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
112
112
  if (typeof key !== 'string')
113
- throw new Error(`_enumKey value not found for: ${v}`);
113
+ throw new Error(`_numberEnumKey not found for: ${v}`);
114
114
  return key;
115
115
  }
116
116
  exports._numberEnumKey = _numberEnumKey;
117
+ function _stringEnumKeyNullable(en,
118
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
119
+ v) {
120
+ return Object.entries(en).find(([_, v2]) => v2 === v)?.[0];
121
+ }
122
+ exports._stringEnumKeyNullable = _stringEnumKeyNullable;
123
+ function _stringEnumKey(en, v) {
124
+ const r = _stringEnumKeyNullable(en, v);
125
+ if (!r)
126
+ throw new Error(`_stringEnumKey not found for: ${v}`);
127
+ return r;
128
+ }
129
+ exports._stringEnumKey = _stringEnumKey;
@@ -20,6 +20,12 @@ export interface ErrorData {
20
20
  * Useful to be able to force-report e.g a 4xx error, which by default wouldn't be reported.
21
21
  */
22
22
  report?: boolean;
23
+ /**
24
+ * If defined - used by SentrySharedService in backend-lib.
25
+ * Allows to report only X% of errors of this type.
26
+ * E.g 0.1 will report 10% of errors (and ignore the 90%)
27
+ */
28
+ reportRate?: number;
23
29
  /**
24
30
  * Sometimes error.message gets "decorated" with extra information
25
31
  * (e.g frontend-lib adds a method, url, etc for all the errors)
@@ -41,7 +41,7 @@ export function _numberEnumEntries(en) {
41
41
  * Doesn't work on Number-enums!
42
42
  */
43
43
  export function _stringEnumEntries(en) {
44
- return Object.keys(en).map(k => [k, en[k]]);
44
+ return Object.entries(en);
45
45
  }
46
46
  /**
47
47
  * Allows to return a Number enum value (typed as Enum itself) based on it's String key.
@@ -96,6 +96,18 @@ export function _numberEnumKey(en, v) {
96
96
  const key = en[v];
97
97
  // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
98
98
  if (typeof key !== 'string')
99
- throw new Error(`_enumKey value not found for: ${v}`);
99
+ throw new Error(`_numberEnumKey not found for: ${v}`);
100
100
  return key;
101
101
  }
102
+ export function _stringEnumKeyNullable(en,
103
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
104
+ v) {
105
+ var _a;
106
+ return (_a = Object.entries(en).find(([_, v2]) => v2 === v)) === null || _a === void 0 ? void 0 : _a[0];
107
+ }
108
+ export function _stringEnumKey(en, v) {
109
+ const r = _stringEnumKeyNullable(en, v);
110
+ if (!r)
111
+ throw new Error(`_stringEnumKey not found for: ${v}`);
112
+ return r;
113
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/js-lib",
3
- "version": "14.137.0",
3
+ "version": "14.139.0",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build-prod": "build-prod-esm-cjs",
package/src/enum.util.ts CHANGED
@@ -48,7 +48,7 @@ export function _numberEnumEntries<T extends NumberEnum>(en: T): [k: string, v:
48
48
  * Doesn't work on Number-enums!
49
49
  */
50
50
  export function _stringEnumEntries<T extends StringEnum>(en: T): [k: string, v: T[keyof T]][] {
51
- return Object.keys(en).map(k => [k, en[k]]) as any
51
+ return Object.entries(en) as any
52
52
  }
53
53
 
54
54
  /**
@@ -118,6 +118,20 @@ export function _numberEnumKey<T extends NumberEnum>(
118
118
  ): keyof T {
119
119
  const key = (en as any)[v]
120
120
  // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
121
- if (typeof key !== 'string') throw new Error(`_enumKey value not found for: ${v}`)
121
+ if (typeof key !== 'string') throw new Error(`_numberEnumKey not found for: ${v}`)
122
122
  return key
123
123
  }
124
+
125
+ export function _stringEnumKeyNullable<T extends StringEnum>(
126
+ en: T,
127
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
128
+ v: string | undefined | null,
129
+ ): keyof T | undefined {
130
+ return Object.entries(en).find(([_, v2]) => v2 === v)?.[0]
131
+ }
132
+
133
+ export function _stringEnumKey<T extends StringEnum>(en: T, v: string | undefined | null): keyof T {
134
+ const r = _stringEnumKeyNullable(en, v)
135
+ if (!r) throw new Error(`_stringEnumKey not found for: ${v}`)
136
+ return r
137
+ }
@@ -24,6 +24,13 @@ export interface ErrorData {
24
24
  */
25
25
  report?: boolean
26
26
 
27
+ /**
28
+ * If defined - used by SentrySharedService in backend-lib.
29
+ * Allows to report only X% of errors of this type.
30
+ * E.g 0.1 will report 10% of errors (and ignore the 90%)
31
+ */
32
+ reportRate?: number
33
+
27
34
  /**
28
35
  * Sometimes error.message gets "decorated" with extra information
29
36
  * (e.g frontend-lib adds a method, url, etc for all the errors)